kune-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 1587 discussions
r1528 - in trunk: . src/test/java/cc/kune/selenium src/test/java/cc/kune/selenium/login src/test/java/cc/kune/selenium/tools
by Vicente J. Ruiz Jurado 23 Sep '11
by Vicente J. Ruiz Jurado 23 Sep '11
23 Sep '11
Author: vjrj_
Date: 2011-09-23 05:01:39 +0200 (Fri, 23 Sep 2011)
New Revision: 1528
Added:
trunk/src/test/java/cc/kune/selenium/tools/AbstractWebDriver.java
trunk/src/test/java/cc/kune/selenium/tools/GenericWebDriver.java
Removed:
trunk/src/test/java/cc/kune/selenium/tools/AbstractWebTester.java
trunk/src/test/java/cc/kune/selenium/tools/GenericWebTester.java
Modified:
trunk/.classpath
trunk/pom.xml
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/login/LoginPageObject.java
trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java
trunk/src/test/java/cc/kune/selenium/tools/SeleniumModule.java
Log:
NEW - # 53: Add Selenium Framework testing
http://kune.ourproject.org/issues/ticket/53
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/.classpath 2011-09-23 03:01:39 UTC (rev 1528)
@@ -15,6 +15,7 @@
<classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.1-SNAPSHOT/box-src-0.3.1-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
<classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
<classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.1-SNAPSHOT/client-0.3.1-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.1-SNAPSHOT/client-common-0.3.1-SNAPSHOT.jar"/>
@@ -28,7 +29,6 @@
<classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar" sourcepath="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
@@ -43,6 +43,7 @@
<classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite-proxy/0.1/emite-proxy-0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/guava/guava/r09/guava-r09.jar" sourcepath="M2_REPO/com/google/guava/guava/r09/guava-r09-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r09/guava-gwt-r09.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/inject/guice/3.0/guice-3.0.jar" sourcepath="M2_REPO/com/google/inject/guice/3.0/guice-3.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assisted-inject/2.0/guice-assisted-inject-2.0.jar"/>
@@ -71,7 +72,6 @@
<classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
<classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
<classpathentry kind="var" path="M2_REPO/com/calclab/emite/hablar/r1697/hablar-r1697.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA-sources.jar"/>
@@ -81,14 +81,17 @@
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.7/htmlunit-2.7.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.7/htmlunit-2.7-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.7/htmlunit-core-js-2.7.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.7/htmlunit-core-js-2.7-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.9/htmlunit-2.9.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.9/htmlunit-2.9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.9/htmlunit-core-js-2.9.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.9/htmlunit-core-js-2.9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpclient/4.1.2/httpclient-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpclient/4.1.2/httpclient-4.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpmime/4.1.2/httpmime-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpmime/4.1.2/httpmime-4.1.2-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
<classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12.jar" sourcepath="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/java/dev/jna/jna/3.2.2/jna-3.2.2.jar" sourcepath="M2_REPO/net/java/dev/jna/jna/3.2.2/jna-3.2.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/java/dev/jna/jna/3.3.0/jna-3.3.0.jar" sourcepath="M2_REPO/net/java/dev/jna/jna/3.3.0/jna-3.3.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.2.0/jruby-complete-1.2.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/0.9.4/jruby-rack-0.9.4.jar"/>
<classpathentry kind="var" path="M2_REPO/org/json/json/20080701/json-20080701.jar" sourcepath="M2_REPO/org/json/json/20080701/json-20080701-sources.jar"/>
@@ -97,7 +100,7 @@
<classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jukito/jukito/1.0/jukito-1.0.jar" sourcepath="M2_REPO/org/jukito/jukito/1.0/jukito-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.8.2/junit-4.8.2.jar" sourcepath="M2_REPO/junit/junit/4.8.2/junit-4.8.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.9/junit-4.9.jar" sourcepath="M2_REPO/junit/junit/4.9/junit-4.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.8.1/liquibase-core-1.8.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.8.1.0/liquibase-plugin-1.8.1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
@@ -115,21 +118,22 @@
<classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.1-SNAPSHOT/model-src-0.3.1-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.14/nekohtml-1.9.14.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.14/nekohtml-1.9.14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.1-SNAPSHOT/proto-msg-0.3.1-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium/2.0a4/selenium-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium/2.0a4/selenium-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.0a4/selenium-chrome-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.0a4/selenium-chrome-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-common/2.0a4/selenium-common-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-common/2.0a4/selenium-common-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.0a4/selenium-firefox-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.0a4/selenium-firefox-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.0a4/selenium-htmlunit-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.0a4/selenium-htmlunit-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.0a4/selenium-ie-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.0a4/selenium-ie-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-client/2.0a4/selenium-remote-client-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-client/2.0a4/selenium-remote-client-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-common/2.0a4/selenium-remote-common-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-common/2.0a4/selenium-remote-common-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-support/2.0a4/selenium-support-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-support/2.0a4/selenium-support-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.6.0/selenium-android-driver-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.6.0/selenium-android-driver-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-api/2.6.0/selenium-api-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-api/2.6.0/selenium-api-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.6.0/selenium-chrome-driver-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.6.0/selenium-chrome-driver-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.6.0/selenium-firefox-driver-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.6.0/selenium-firefox-driver-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.6.0/selenium-htmlunit-driver-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.6.0/selenium-htmlunit-driver-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.6.0/selenium-ie-driver-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.6.0/selenium-ie-driver-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-iphone-driver/2.6.0/selenium-iphone-driver-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-iphone-driver/2.6.0/selenium-iphone-driver-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-java/2.6.0/selenium-java-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-java/2.6.0/selenium-java-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-driver/2.6.0/selenium-remote-driver-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-driver/2.6.0/selenium-remote-driver-2.6.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-support/2.6.0/selenium-support-2.6.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-support/2.6.0/selenium-support-2.6.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/xalan/serializer/2.7.1/serializer-2.7.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
@@ -138,7 +142,7 @@
<classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
<classpathentry kind="var" path="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar" sourcepath="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.0.1/testng-6.0.1.jar" sourcepath="M2_REPO/org/testng/testng/6.0.1/testng-6.0.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1.jar" sourcepath="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.1-SNAPSHOT/util-src-0.3.1-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/pom.xml 2011-09-23 03:01:39 UTC (rev 1528)
@@ -23,10 +23,6 @@
</properties>
<repositories>
<repository>
- <id>kune-maven</id>
- <url>http://kune.ourproject.org/mavenrepo/</url>
- </repository>
- <repository>
<id>guice-maven</id>
<name>guice maven</name>
<url>http://guice-maven.googlecode.com/svn/trunk</url>
@@ -115,6 +111,10 @@
</releases>
</repository>
<repository>
+ <id>kune-maven</id>
+ <url>http://kune.ourproject.org/mavenrepo/</url>
+ </repository>
+ <repository>
<id>xwiki-releases</id>
<name>XWiki Maven2 Remote Repository for Releases</name>
<url>http://maven.xwiki.org/releases</url>
@@ -516,14 +516,14 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>4.8.2</version>
+ <version>4.9</version>
<!-- =roo -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
- <artifactId>selenium</artifactId>
- <version>2.0a4</version>
+ <artifactId>selenium-java</artifactId>
+ <version>2.6.0</version>
<exclusions>
<exclusion>
<groupId>com.google.collections</groupId>
@@ -534,7 +534,7 @@
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
- <version>6.0.1</version>
+ <version>6.2.1</version>
<scope>test</scope>
</dependency>
<dependency>
Modified: trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -22,6 +22,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.events.EventFiringWebDriver;
import org.openqa.selenium.support.pagefactory.ElementLocatorFactory;
import org.testng.Assert;
import org.testng.ITestContext;
@@ -30,7 +31,7 @@
import org.testng.annotations.DataProvider;
import cc.kune.selenium.login.LoginPageObject;
-import cc.kune.selenium.tools.GenericWebTester;
+import cc.kune.selenium.tools.GenericWebDriver;
import cc.kune.selenium.tools.SeleniumConstants;
import cc.kune.selenium.tools.SeleniumModule;
@@ -40,16 +41,16 @@
public class KuneSeleniumDefaults {
private static final Log LOG = LogFactory.getLog(KuneSeleniumDefaults.class);
public static boolean mustCloseFinally = true;
-
+ protected EventFiringWebDriver eventFiring;
private final Injector injector;
-
protected LoginPageObject login;
- protected GenericWebTester webtester;
+ protected GenericWebDriver webdriver;
public KuneSeleniumDefaults() {
injector = Guice.createInjector(new SeleniumModule());
- webtester = injector.getInstance(GenericWebTester.class);
+ webdriver = injector.getInstance(GenericWebDriver.class);
login = injector.getInstance(LoginPageObject.class);
+ eventFiring = injector.getInstance(EventFiringWebDriver.class);
final ElementLocatorFactory locator = injector.getInstance(ElementLocatorFactory.class);
PageFactory.initElements(locator, login);
}
@@ -58,7 +59,7 @@
public void closeBrowser() {
// We try to only open one window for all our selenium tests
if (mustCloseFinally) {
- webtester.close();
+ webdriver.close();
}
}
@@ -85,7 +86,7 @@
// if (!Suco.getComponents().hasProvider(WebDriver.class)) {
// Suco.install(new SeleniumModule());
// }
- if (webtester == null) {
+ if (webdriver == null) {
// final ChromeDriver driver = new ChromeDriver();
// // final HtmlUnitDriver driver = new HtmlUnitDriver(true);
//
@@ -115,7 +116,8 @@
// openGroupChat = Suco.get(OpenGroupChatPageObject.class);
}
LOG.info("Going home");
- webtester.home();
+
+ webdriver.home();
}
public void sleep(final int milliseconds) {
Modified: trunk/src/test/java/cc/kune/selenium/PageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/PageObject.java 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/src/test/java/cc/kune/selenium/PageObject.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -23,7 +23,6 @@
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
-import org.openqa.selenium.RenderedWebElement;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ByIdOrName;
@@ -39,15 +38,15 @@
@Inject
private WebDriver webdriver;
- protected RenderedWebElement findElement(final By by) {
- return (RenderedWebElement) getWebDriver().findElement(by);
+ protected WebElement findElement(final By by) {
+ return getWebDriver().findElement(by);
}
private WebDriver getWebDriver() {
return webdriver;
}
- public boolean isPresent(final RenderedWebElement element) {
+ public boolean isPresent(final WebElement element) {
// FIXME: find a better way to do this
try {
getWebDriver().findElement(By.id(element.getAttribute("id")));
@@ -57,17 +56,6 @@
}
}
- public void waitFor(final RenderedWebElement element) {
- final String id = element.getAttribute("id");
- LOG.info("WAIT FOR: " + id);
- waitFor(id, new Runnable() {
- @Override
- public void run() {
- Assert.assertTrue(element.isDisplayed());
- }
- });
- }
-
/**
* Thanks to:
* http://groups.google.com/group/webdriver/browse_frm/thread/6e705242
@@ -112,6 +100,17 @@
}
}
+ public void waitFor(final WebElement element) {
+ final String id = element.getAttribute("id");
+ LOG.info("WAIT FOR: " + id);
+ waitFor(id, new Runnable() {
+ @Override
+ public void run() {
+ Assert.assertTrue(element.isDisplayed());
+ }
+ });
+ }
+
protected void waitFor(final WebElement element, final String text) {
LOG.info("WAIT FOR: " + text);
waitFor(text, new Runnable() {
@@ -129,7 +128,7 @@
waitFor(id, new Runnable() {
@Override
public void run() {
- Assert.assertTrue(((RenderedWebElement) getWebDriver().findElement(new ByIdOrName(id))).isDisplayed());
+ Assert.assertTrue(getWebDriver().findElement(new ByIdOrName(id)).isDisplayed());
}
});
}
@@ -139,7 +138,7 @@
waitFor(text, new Runnable() {
@Override
public void run() {
- final String elValue = element.getValue();
+ final String elValue = element.getText();
LOG.info("Element value: " + elValue);
Assert.assertTrue(elValue.contains(text));
}
Modified: trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -19,7 +19,8 @@
*/
package cc.kune.selenium.login;
-import org.openqa.selenium.RenderedWebElement;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import cc.kune.core.client.auth.SignInForm;
@@ -35,19 +36,19 @@
public class LoginPageObject extends PageObject {
- @FindBy(id = GWTDEV + SignInPanel.SIGN_IN_BUTTON_ID)
- private RenderedWebElement button;
private final I18nHelper i18n;
@FindBy(id = SignInForm.PASSWORD_FIELD_ID + "-input")
- private RenderedWebElement passwd;
+ private WebElement passwd;
+ @FindBy(id = GWTDEV + SignInPanel.SIGN_IN_BUTTON_ID)
+ private WebElement signInButton;
@FindBy(id = GWTDEV + SitebarSignInLink.SITE_SIGN_IN)
- private RenderedWebElement signInLink;
+ private WebElement signInLink;
@FindBy(id = GWTDEV + SitebarSignOutLink.SITE_SIGN_OUT)
- private RenderedWebElement signOutLink;
+ private WebElement signOutLink;
@FindBy(id = SignInForm.USER_FIELD_ID + "-input")
- private RenderedWebElement user;
+ private WebElement user;
@FindBy(id = GWTDEV + SiteUserOptionsPresenter.LOGGED_USER_MENU_ID)
- private RenderedWebElement userMenu;
+ private WebElement userMenu;
public LoginPageObject() {
i18n = new I18nHelper(LoginMessages.class);
@@ -65,11 +66,25 @@
waitFor(signInLink);
}
- public RenderedWebElement getHeader() {
+ public void fillSigInInForm(final String username, final String password, final boolean withReturn) {
+ user.clear();
+ passwd.clear();
+ user.clear();
+ passwd.clear();
+ user.sendKeys(username);
+ passwd.sendKeys(password);
+ if (withReturn) {
+ passwd.sendKeys(Keys.RETURN);
+ } else {
+ signInButton.click();
+ }
+ }
+
+ public WebElement getHeader() {
return signInLink;
}
- public RenderedWebElement header() {
+ public WebElement header() {
return getHeader();
}
@@ -79,17 +94,21 @@
}
public void signIn(final String username, final String password) {
+ signIn(username, password, true);
+ }
+
+ public void signIn(final String username, final String password, final boolean withReturn) {
assertIsDisconnected();
signInLink.click();
- user.clear();
- passwd.clear();
- user.sendKeys(username);
- passwd.sendKeys(password);
- button.click();
+ fillSigInInForm(username, password, withReturn);
}
public void signInDefUser() {
- signIn(SeleniumConstants.USERNAME, SeleniumConstants.PASSWD);
+ signIn(SeleniumConstants.USERNAME, SeleniumConstants.PASSWD, false);
}
+ public void signOut() {
+ logout();
+ }
+
}
Modified: trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -21,11 +21,12 @@
import org.testng.annotations.Test;
+import cc.kune.core.client.state.SiteTokens;
import cc.kune.selenium.KuneSeleniumTest;
public class LoginSeleniumTests extends KuneSeleniumTest {
- @Test(dataProvider = "correctlogin", enabled = false)
+ @Test(dataProvider = "correctlogin")
public void severalsSignInSingOut(final String user, final String passwd) {
login.assertIsDisconnected();
login.signIn(user, passwd);
@@ -36,7 +37,6 @@
login.signIn(user, passwd);
login.assertIsConnectedAs(user);
login.logout();
-
login.assertIsDisconnected();
}
@@ -45,6 +45,8 @@
login.assertIsDisconnected();
login.signIn(user, passwd);
login.assertIsConnectedAs(user);
+ login.logout();
+ login.assertIsDisconnected();
}
@Test
@@ -53,4 +55,14 @@
login.signIn("nouser", "nopassword");
login.assertIsDisconnected();
}
+
+ @Test(dataProvider = "correctlogin")
+ public void signInWithToken(final String user, final String passwd) {
+ login.assertIsDisconnected();
+ webdriver.gotoToken(SiteTokens.SIGNIN);
+ login.fillSigInInForm(user, passwd, true);
+ login.assertIsConnectedAs(user);
+ login.logout();
+ login.assertIsDisconnected();
+ }
}
Copied: trunk/src/test/java/cc/kune/selenium/tools/AbstractWebDriver.java (from rev 1511, trunk/src/test/java/cc/kune/selenium/tools/AbstractWebTester.java)
===================================================================
--- trunk/src/test/java/cc/kune/selenium/tools/AbstractWebDriver.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/tools/AbstractWebDriver.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -0,0 +1,149 @@
+/*
+ *
+ * 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;
+
+import java.util.List;
+import java.util.Set;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.Point;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebDriverBackedSelenium;
+import org.openqa.selenium.WebElement;
+
+import cc.kune.core.shared.domain.utils.StateToken;
+
+import com.google.gwt.user.client.ui.UIObject;
+import com.thoughtworks.selenium.Selenium;
+
+public abstract class AbstractWebDriver implements WebDriver {
+ private final String baseUrl;
+ private final WebDriver driver;
+
+ private final Selenium selenium;
+
+ public AbstractWebDriver(final WebDriver driver, final String baseUrl) {
+ this.driver = driver;
+ this.baseUrl = baseUrl;
+ selenium = new WebDriverBackedSelenium(driver, baseUrl);
+ selenium.setSpeed("500");
+ // selenium.setTimeout("5000");
+ }
+
+ @Override
+ public void close() {
+ driver.close();
+ }
+
+ @Override
+ public WebElement findElement(final By by) {
+ return driver.findElement(by);
+ }
+
+ @Override
+ public List<WebElement> findElements(final By by) {
+ return driver.findElements(by);
+ }
+
+ @Override
+ public void get(final String url) {
+ driver.get(url);
+ }
+
+ public WebElement getById(final String id) {
+ return driver.findElement(By.id(UIObject.DEBUG_ID_PREFIX + id));
+ }
+
+ @Override
+ public String getCurrentUrl() {
+ return driver.getCurrentUrl();
+ }
+
+ @Override
+ public String getPageSource() {
+ return driver.getPageSource();
+ }
+
+ @Override
+ public String getTitle() {
+ return driver.getTitle();
+ }
+
+ @Override
+ public String getWindowHandle() {
+ return driver.getWindowHandle();
+ }
+
+ @Override
+ public Set<String> getWindowHandles() {
+ return driver.getWindowHandles();
+ }
+
+ public void gotoToken(final StateToken token) {
+ get(baseUrl + token);
+ }
+
+ public void gotoToken(final String token) {
+ get(baseUrl + token);
+ }
+
+ public void home() {
+ assert baseUrl != null;
+ driver.get(baseUrl);
+ }
+
+ public boolean isElementPresent(final String id) {
+ // http://stackoverflow.com/questions/5922930/iselementpresent-in-selenium-2-0
+ return selenium.isElementPresent(id);
+ }
+
+ public boolean isTextPresent(final String text) {
+ return selenium.isTextPresent(text);
+ }
+
+ @Override
+ public Options manage() {
+ return driver.manage();
+ }
+
+ public void moveMouseAt(final Point point) {
+ selenium.mouseMoveAt(String.valueOf(point.getX()), String.valueOf(point.getY()));
+ }
+
+ @Override
+ public Navigation navigate() {
+ return driver.navigate();
+ }
+
+ public void open(final String url) {
+ get(url);
+ }
+
+ @Override
+ public void quit() {
+ driver.quit();
+ }
+
+ @Override
+ public TargetLocator switchTo() {
+ return driver.switchTo();
+ }
+
+}
\ No newline at end of file
Deleted: trunk/src/test/java/cc/kune/selenium/tools/AbstractWebTester.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/tools/AbstractWebTester.java 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/src/test/java/cc/kune/selenium/tools/AbstractWebTester.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -1,71 +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;
-
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
-
-import com.google.gwt.user.client.ui.UIObject;
-
-public abstract class AbstractWebTester {
- private final String baseUrl;
- private final WebDriver driver;
-
- // private final Selenium selenium;
-
- public AbstractWebTester(final WebDriver driver, final String baseUrl) {
- this.driver = driver;
- this.baseUrl = baseUrl;
-
- // selenium = new WebDriverBackedSelenium(driver, baseUrl);
- // selenium.setTimeout("5000");
- }
-
- public void close() {
- driver.close();
- }
-
- public WebElement getById(final String id) {
- return driver.findElement(By.id(UIObject.DEBUG_ID_PREFIX + id));
- }
-
- public void home() {
- assert baseUrl != null;
- // selenium.open(baseUrl);
- driver.get(baseUrl);
- }
- //
- // public boolean isElementPresent(final String id) {
- // return true;
- // // return selenium.isElementPresent(id);
- // }
- //
- // public boolean isTextPresent(final String text) {
- // return true;
- // // return selenium.isTextPresent(text);
- // }
- //
- // public void moveMouseAt(final Point point) {
- // // seenium.mouseMoveAt(String.valueOf(point.getX()),
- // // String.valueOf(point.getY()));
- // }
-
-}
\ No newline at end of file
Copied: trunk/src/test/java/cc/kune/selenium/tools/GenericWebDriver.java (from rev 1511, trunk/src/test/java/cc/kune/selenium/tools/GenericWebTester.java)
===================================================================
--- trunk/src/test/java/cc/kune/selenium/tools/GenericWebDriver.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/tools/GenericWebDriver.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -0,0 +1,33 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.selenium.tools;
+
+import org.openqa.selenium.WebDriver;
+
+import com.google.inject.Inject;
+
+public class GenericWebDriver extends AbstractWebDriver {
+
+ @Inject
+ public GenericWebDriver(final WebDriver driver) {
+ super(driver, "http://kune.beta.iepala.es/ws/?locale=en#");
+ }
+
+}
Deleted: trunk/src/test/java/cc/kune/selenium/tools/GenericWebTester.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/tools/GenericWebTester.java 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/src/test/java/cc/kune/selenium/tools/GenericWebTester.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -1,33 +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;
-
-import org.openqa.selenium.WebDriver;
-
-import com.google.inject.Inject;
-
-public class GenericWebTester extends AbstractWebTester {
-
- @Inject
- public GenericWebTester(final WebDriver driver) {
- super(driver, "http://kune.beta.iepala.es/ws/?locale=en#");
- }
-
-}
Modified: trunk/src/test/java/cc/kune/selenium/tools/SeleniumModule.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/tools/SeleniumModule.java 2011-09-23 00:01:57 UTC (rev 1527)
+++ trunk/src/test/java/cc/kune/selenium/tools/SeleniumModule.java 2011-09-23 03:01:39 UTC (rev 1528)
@@ -19,11 +19,15 @@
*/
package cc.kune.selenium.tools;
+import java.util.Arrays;
+
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
+import org.openqa.selenium.remote.DesiredCapabilities;
+import org.openqa.selenium.support.events.EventFiringWebDriver;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
import org.openqa.selenium.support.pagefactory.ElementLocatorFactory;
@@ -40,22 +44,30 @@
protected void configure() {
// bind(WebDriver.class).toInstance(creatFirefoxDriver());
- final ChromeDriver driver = createChromeDriver();
+ final WebDriver driver = createChromeDriver();
bind(WebDriver.class).toInstance(driver);
+ bind(GenericWebDriver.class).in(Singleton.class);
- bind(GenericWebTester.class).in(Singleton.class);
-
// "http://127.0.0.1:8888/ws/?locale=en&log_level=INFO&gwt.codesvr=127.0.0.1:99…");
bind(ElementLocatorFactory.class).toInstance(
new AjaxElementLocatorFactory(driver, SeleniumConstants.TIMEOUT));
+ final EventFiringWebDriver eventFiring = new EventFiringWebDriver(driver);
+ bind(EventFiringWebDriver.class).toInstance(eventFiring);
+
// Page Objects here!
bind(LoginPageObject.class).in(Singleton.class);
}
- private ChromeDriver createChromeDriver() {
- final ChromeDriver driver = new ChromeDriver();
+ private WebDriver createChromeDriver() {
+ // http://code.google.com/p/selenium/wiki/ChromeDriver
+ System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
+ final DesiredCapabilities capabilities = DesiredCapabilities.chrome();
+ // http://peter.sh/experiments/chromium-command-line-switches/
+ capabilities.setCapability("chrome.switches", Arrays.asList("--disable-translate"));
+ capabilities.setCapability("chrome.binary", "/usr/bin/chromium-browser");
+ final WebDriver driver = new ChromeDriver(capabilities);
return driver;
}
@@ -65,6 +77,7 @@
// profile.setPreference("webdriver.firefox.profile",
// SeleniumConstants.FIREFOX_PROFILE_NAME);
// profile.setPreference("webdriver.firefox.useExisting",true);
+
final ProfilesIni allProfiles = new ProfilesIni();
final FirefoxProfile profile = allProfiles.getProfile(SeleniumConstants.FIREFOX_PROFILE_NAME);
// profile.setPreferences("foo.bar", 23);
1
0
23 Sep '11
Author: vjrj_
Date: 2011-09-23 02:01:57 +0200 (Fri, 23 Sep 2011)
New Revision: 1527
Modified:
trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/server/InitData.java
trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralView.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
trunk/src/main/resources/ConstantsTest_en.properties
trunk/src/test/java/cc/kune/core/client/i18n/ConstantsTest.java
trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java
Log:
CLOSED - # 68: Change your language and name in User Options
http://kune.ourproject.org/issues/ticket/68
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-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -144,7 +144,7 @@
}
messageErrorBar = new MessageToolbar(images, errorLabelId);
tabPanel = new TabLayoutPanel(25, Unit.PX);
- tabPanel.addStyleName("oc-noselect");
+ // tabPanel.addStyleName("oc-noselect");
dialog.getInnerPanel().add(tabPanel);
tabPanel.addSelectionHandler(new SelectionHandler<Integer>() {
@Override
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -10,6 +10,7 @@
public static String convertMethodName(final String name) {
String result = name;
+ result = result.replaceAll("\\\n", " ");
result = result.replaceAll("\\[%d\\]", "N");
result = result.replaceAll("\\[%s\\]", "Param");
final char[] delimiters = { ' ', '.', '?', ',', ';', '&', '(', ')', '"', '$', '!', '/', '\'', '-',
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -398,8 +398,11 @@
@Override
public void setRetrievedStateAndGo(final StateAbstractDTO newState) {
setRetrievedState(newState);
- // setState(newState);
- history.newItem(newState.getStateToken().toString());
+ final String token = newState.getStateToken().toString();
+ if (history.getToken().equals(token)) {
+ setState(newState);
+ }
+ history.newItem(token);
}
@Override
Modified: trunk/src/main/java/cc/kune/core/server/InitData.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -59,6 +59,7 @@
private ReservedWordsRegistryDTO reservedWords;
private String siteDomain;
private String siteLogoUrl;
+ private String siteShortName;
private String siteUrl;
private String[] timezones;
private UserInfo userInfo;
@@ -165,6 +166,10 @@
return siteLogoUrl;
}
+ public String getSiteShortName() {
+ return siteShortName;
+ }
+
public String getSiteUrl() {
return siteUrl;
}
@@ -290,6 +295,10 @@
this.siteLogoUrl = siteLogoUrl;
}
+ public void setSiteShortName(final String siteShortName) {
+ this.siteShortName = siteShortName;
+ }
+
public void setSiteUrl(final String siteUrl) {
this.siteUrl = siteUrl;
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -153,6 +153,7 @@
data.setAviEmbedObject(kuneProperties.get(KuneProperties.AVI_EMBEDED_OBJECT));
data.setExtMediaDescrips(extMediaDescManager.getAll());
data.setFeedbackEnabled(kuneProperties.getBoolean(KuneProperties.FEEDBACK_ENABLED));
+ data.setSiteShortName(kuneProperties.get(KuneProperties.SITE_SHORTNAME));
return data;
}
}
Modified: trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -52,6 +52,7 @@
private ReservedWordsRegistryDTO reservedWords;
private String siteDomain;
private String siteLogoUrl;
+ private String siteShortName;
private String siteUrl;
private String[] timezones;
private UserInfoDTO userInfo;
@@ -161,6 +162,10 @@
return siteLogoUrl;
}
+ public String getSiteShortName() {
+ return siteShortName;
+ }
+
public String getSiteUrl() {
return siteUrl;
}
@@ -290,6 +295,10 @@
this.siteLogoUrl = siteLogoUrl;
}
+ public void setSiteShortName(final String siteShortName) {
+ this.siteShortName = siteShortName;
+ }
+
public void setSiteUrl(final String siteUrl) {
this.siteUrl = siteUrl;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -64,4 +64,9 @@
this.shortName.setValue(shortName);
}
+ @Override
+ public void setShortNameEnabled(final boolean enabled) {
+ this.shortName.setEnabled(enabled);
+ }
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -70,6 +70,7 @@
@Override
protected void setState() {
final GroupDTO group = session.getCurrentState().getGroup();
+ groupView.setShortNameEnabled(!session.getInitData().getSiteShortName().equals(group.getShortName()));
groupView.setShortName(group.getShortName());
groupView.setLongName(group.getLongName());
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralView.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralView.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -29,4 +29,6 @@
void setShortName(String shortName);
+ void setShortNameEnabled(boolean enabled);
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -82,7 +82,8 @@
final UserSimpleDTO currentUser = session.getCurrentUser();
final UserDTO user = new UserDTO();
user.setId(currentUser.getId());
- user.setName(userView.getLongName());
+ final String longName = userView.getLongName();
+ user.setName(longName);
userService.get().updateUser(session.getUserHash(), user, userView.getLanguage(),
new AsyncCallbackSimple<StateAbstractDTO>() {
@Override
Modified: trunk/src/main/resources/ConstantsTest_en.properties
===================================================================
--- trunk/src/main/resources/ConstantsTest_en.properties 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/main/resources/ConstantsTest_en.properties 2011-09-23 00:01:57 UTC (rev 1527)
@@ -4,4 +4,5 @@
someMultipleLines = \
some \
multiple \
-lines
\ No newline at end of file
+lines
+someMultipleLinesWithCarriage = some\nmultiple\nlines\nwith\ncarriage
\ No newline at end of file
Modified: trunk/src/test/java/cc/kune/core/client/i18n/ConstantsTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/i18n/ConstantsTest.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/test/java/cc/kune/core/client/i18n/ConstantsTest.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -51,4 +51,10 @@
assertEquals("some multiple lines",
english.getString(I18nUtils.convertMethodName("some multiple lines")));
}
+
+ @Test
+ public void multipleLinesWithCarriageReturn() {
+ assertEquals("some\nmultiple\nlines\nwith\ncarriage",
+ english.getString(I18nUtils.convertMethodName("some\nmultiple\nlines\nwith\ncarriage")));
+ }
}
Modified: trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java 2011-09-22 16:08:44 UTC (rev 1526)
+++ trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java 2011-09-23 00:01:57 UTC (rev 1527)
@@ -29,6 +29,11 @@
}
@Test
+ public void carriageReturn() {
+ assertEquals("yesNo", I18nUtils.convertMethodName("yes\nno"));
+ }
+
+ @Test
public void testParams() {
assertEquals("nOfParamItems", I18nUtils.convertMethodName("[%d] of [%s] items"));
assertEquals("nOfNItems", I18nUtils.convertMethodName("[%d] of [%d] items"));
1
0
r1526 - in trunk/src/main/java/cc/kune: common/client/utils core/client core/client/auth core/client/cookies core/client/state
by Vicente J. Ruiz Jurado 22 Sep '11
by Vicente J. Ruiz Jurado 22 Sep '11
22 Sep '11
Author: vjrj_
Date: 2011-09-22 18:08:44 +0200 (Thu, 22 Sep 2011)
New Revision: 1526
Added:
trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
Modified:
trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/CoreParts.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java
trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java
trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java
trunk/src/main/java/cc/kune/core/client/state/Session.java
trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
Log:
CLOSED - # 102: Highlight Sign-In and/or show "New" button disabled to anonymous user
http://kune.ourproject.org/issues/ticket/102
Modified: trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -24,8 +24,10 @@
import org.apache.commons.lang.WordUtils;
import cc.kune.common.client.errors.NotImplementedException;
+import cc.kune.common.client.errors.UIException;
import com.google.gwt.safehtml.shared.SimpleHtmlSanitizer;
+import com.google.gwt.safehtml.shared.UriUtils;
public class TextUtils {
@@ -169,15 +171,25 @@
}
/**
- * FIXME: Is this safe? Try to use {@link SimpleHtmlSanitizer} also in the
- * method
+ * Generates a href link
*
*/
- @Deprecated
public static String generateHtmlLink(final String href, final String text) {
- return "<a href=\"" + href + "\" target=\"_blank\">" + text + "</a>";
+ return generateHtmlLink(href, text, true);
}
+ /**
+ * Generates a href link
+ *
+ */
+ public static String generateHtmlLink(final String href, final String text, final boolean targetBlank) {
+ if (!UriUtils.isSafeUri(href)) {
+ throw new UIException("Unsafe href");
+ }
+ return "<a href=\"" + UriUtils.sanitizeUri(href) + "\"" + (targetBlank ? "target=\"_blank\"" : "")
+ + ">" + text + "</a>";
+ }
+
private static boolean isDelimiter(final char ch, final char[] delimiters) {
if (delimiters == null) {
throw new NotImplementedException();
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -31,6 +31,7 @@
import cc.kune.common.client.ui.MaskWidgetView;
import cc.kune.core.client.actions.ActionRegistryByType;
import cc.kune.core.client.actions.xml.XMLActionsParser;
+import cc.kune.core.client.auth.AnonUsersManager;
import cc.kune.core.client.auth.Register;
import cc.kune.core.client.auth.RegisterPanel;
import cc.kune.core.client.auth.RegisterPresenter;
@@ -137,6 +138,7 @@
s(I18nUITranslationService.class);
bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class);
bind(GlobalShortcutRegister.class).to(DefaultGlobalShortcutRegister.class).in(Singleton.class);
+ s(AnonUsersManager.class);
// DnD
s(KuneDragController.class);
Modified: trunk/src/main/java/cc/kune/core/client/CoreParts.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreParts.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/core/client/CoreParts.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -19,6 +19,7 @@
*/
package cc.kune.core.client;
+import cc.kune.core.client.auth.AnonUsersManager;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sitebar.SiteUserOptionsPresenter;
@@ -37,7 +38,7 @@
public CoreParts(final Session session, final Provider<GroupSNPresenter> groupMembersPresenter,
final Provider<UserSNPresenter> buddiesAndParticipationPresenter,
final Provider<GroupSNConfActions> groupMembersConfActions,
- final Provider<UserSNConfActions> userSNConfActions,
+ final Provider<UserSNConfActions> userSNConfActions, final Provider<AnonUsersManager> anonUsers,
final Provider<SiteUserOptionsPresenter> userOptions) {
session.onAppStart(true, new AppStartHandler() {
@Override
@@ -47,6 +48,7 @@
groupMembersPresenter.get();
buddiesAndParticipationPresenter.get();
userOptions.get();
+ anonUsers.get();
}
});
}
Added: trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -0,0 +1,57 @@
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteTokens;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class AnonUsersManager {
+
+ @Inject
+ public AnonUsersManager(final Session session, final CookiesManager cookiesManager,
+ final I18nTranslationService i18n) {
+ session.onAppStart(true, new AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ if (session.isNotLogged()) {
+ final String anonCookie = cookiesManager.getAnonCookie();
+ if (anonCookie == null) {
+ // First access, set cookie to short period (1day), and show message
+ cookiesManager.setAnonCookie(false);
+ final String register = TextUtils.generateHtmlLink("#" + SiteTokens.REGISTER,
+ i18n.tWithNT("register", "register, in lowercase"), false);
+ final String signin = TextUtils.generateHtmlLink("#" + SiteTokens.SIGNIN,
+ i18n.tWithNT("sign in", "register, in lowercase"), false);
+ NotifyUser.info(
+ i18n.tWithNT(
+ "You did not sign-in, so you can just see some public contents in this website, "
+ + "but not edit or collaborate with others. Please [%s] or [%s] in order to get full access to this site tools and contents",
+ "This will be something like 'Please register or sign in', but instead of %s some links",
+ register, signin), true);
+ } else {
+ if (Boolean.valueOf(anonCookie)) {
+ // Registered already: we set the cookie for some big period again
+ cookiesManager.setAnonCookie(true);
+ } else {
+ // Non registered yet: but we show the message already today
+ }
+ }
+ }
+ }
+ });
+ session.onUserSignIn(true, new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ cookiesManager.setAnonCookie(true);
+ }
+ });
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -76,7 +76,7 @@
protected void onSignIn(final UserInfoDTO userInfoDTO) {
final String userHash = userInfoDTO.getUserHash();
- cookiesManager.setCookie(userHash);
+ cookiesManager.setAuthCookie(userHash);
getView().reset();
session.setUserHash(userHash);
session.setCurrentUserInfo(userInfoDTO);
Modified: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -20,9 +20,16 @@
package cc.kune.core.client.cookies;
public interface CookiesManager {
- String getCurrentCookie();
+ String getAnonCookie();
- void removeCookie();
+ String getAuthCookie();
- void setCookie(String userHash);
+ void removeAnonCookie();
+
+ void removeAuthCookie();
+
+ void setAnonCookie(Boolean userRegister);
+
+ void setAuthCookie(String userHash);
+
}
Modified: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -28,31 +28,50 @@
public class CookiesManagerImpl implements CookiesManager {
- public CookiesManagerImpl() {
- }
+ private static final String ANON = "annon";
- @Override
- public String getCurrentCookie() {
- return Cookies.getCookie(Session.USERHASH);
- }
+ public CookiesManagerImpl() {
+ }
- @Override
- public void removeCookie() {
- // FIXME: Remove cookie doesn't works in all browsers, know
- // issue:
- // http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded8…
- // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeC…
- Cookies.removeCookie(Session.USERHASH);
- // Workaround:
- Cookies.setCookie(Session.USERHASH, null, new Date(0), null, "/", false);
- }
+ @Override
+ public String getAnonCookie() {
+ return Cookies.getCookie(ANON);
+ }
- @Override
- public void setCookie(final String userHash) {
- // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
- final long duration = Session.SESSION_DURATION;
- final Date expires = new Date(System.currentTimeMillis() + duration);
- Cookies.setCookie(Session.USERHASH, userHash, expires, null, "/", false);
- Log.info("Received hash: " + userHash, null);
- }
+ @Override
+ public String getAuthCookie() {
+ return Cookies.getCookie(Session.USERHASH);
+ }
+
+ @Override
+ public void removeAnonCookie() {
+ Cookies.removeCookie(ANON);
+ Cookies.setCookie(ANON, null, new Date(0), null, "/", false);
+ }
+
+ @Override
+ public void removeAuthCookie() {
+ // FIXME: Remove cookie doesn't works in all browsers, know
+ // issue:
+ // http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded8…
+ // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeC…
+ Cookies.removeCookie(Session.USERHASH);
+ // Workaround:
+ Cookies.setCookie(Session.USERHASH, null, new Date(0), null, "/", false);
+ }
+
+ @Override
+ public void setAnonCookie(final Boolean userRegister) {
+ final Date expires = new Date(System.currentTimeMillis()
+ + (userRegister ? Session.ANON_SESSION_DURATION_AFTER_REG : Session.ANON_SESSION_DURATION));
+ Cookies.setCookie(ANON, userRegister.toString(), expires, null, "/", false);
+ }
+
+ @Override
+ public void setAuthCookie(final String userHash) {
+ // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
+ final Date expires = new Date(System.currentTimeMillis() + Session.SESSION_DURATION);
+ Cookies.setCookie(Session.USERHASH, userHash, expires, null, "/", false);
+ Log.info("Received hash: " + userHash, null);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/state/Session.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/Session.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/core/client/state/Session.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -61,11 +61,11 @@
public interface Session {
- /**
- * Duration remembering login: 2 weeks
- */
- int SESSION_DURATION = 1000 * 60 * 60 * 24 * 14;
- // int SESSION_DURATION = 1000;
+ long A_DAY = 1000 * 60 * 60 * 24;
+ long ANON_SESSION_DURATION = A_DAY;
+ long ANON_SESSION_DURATION_AFTER_REG = A_DAY * 365;
+ long SESSION_DURATION = A_DAY * 14; // two weeks login session duration
+ // long SESSION_DURATION = 1000;
String USERHASH = "k007userHash";
Modified: trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2011-09-20 23:21:27 UTC (rev 1525)
+++ trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2011-09-22 16:08:44 UTC (rev 1526)
@@ -71,7 +71,7 @@
final Provider<UserServiceAsync> userServiceProvider, final EventBus eventBus) {
this.cookieManager = cookieManager;
this.eventBus = eventBus;
- this.userHash = cookieManager.getCurrentCookie();
+ this.userHash = cookieManager.getAuthCookie();
this.userHash = userHash == null || userHash.equals("null") ? null : userHash;
this.userServiceProvider = userServiceProvider;
languagesArray = null;
@@ -391,7 +391,7 @@
@Override
public void signOut() {
- cookieManager.removeCookie();
+ cookieManager.removeAuthCookie();
setUserHash(null);
setCurrentUserInfo(null);
}
1
0
r1525 - in trunk/src/main/java/cc/kune: core/client core/client/auth core/client/groups/newgroup core/client/sn/actions gspace/client/options/general
by Vicente J. Ruiz Jurado 20 Sep '11
by Vicente J. Ruiz Jurado 20 Sep '11
20 Sep '11
Author: vjrj_
Date: 2011-09-21 01:21:27 +0200 (Wed, 21 Sep 2011)
New Revision: 1525
Modified:
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/CoreParts.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java
trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java
trunk/src/main/java/cc/kune/core/client/groups/newgroup/GroupFieldFactory.java
trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java
trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java
trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
Log:
NEW - # 102: Highlight Sign-In and/or show "New" button disabled to anonymous user
http://kune.ourproject.org/issues/ticket/102
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -39,6 +39,7 @@
import cc.kune.core.client.auth.SignInPanel;
import cc.kune.core.client.auth.SignInPresenter;
import cc.kune.core.client.auth.SignInPresenter.SignInView;
+import cc.kune.core.client.auth.UserFieldFactory;
import cc.kune.core.client.auth.UserPassAutocompleteManager;
import cc.kune.core.client.auth.UserPassAutocompleteManagerImpl;
import cc.kune.core.client.cookies.CookiesManager;
@@ -46,6 +47,7 @@
import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.dnd.NotImplementedDropManager;
import cc.kune.core.client.errors.ErrorHandler;
+import cc.kune.core.client.groups.newgroup.GroupFieldFactory;
import cc.kune.core.client.groups.newgroup.NewGroup;
import cc.kune.core.client.groups.newgroup.NewGroupPanel;
import cc.kune.core.client.groups.newgroup.NewGroupPresenter;
@@ -140,6 +142,9 @@
s(KuneDragController.class);
s(NotImplementedDropManager.class);
+ s(UserFieldFactory.class);
+ s(GroupFieldFactory.class);
+
// Presenters
bindPresenter(CorePresenter.class, CorePresenter.CoreView.class, CoreViewImpl.class,
CorePresenter.CoreProxy.class);
Modified: trunk/src/main/java/cc/kune/core/client/CoreParts.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreParts.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/CoreParts.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -19,8 +19,6 @@
*/
package cc.kune.core.client;
-import cc.kune.core.client.auth.UserFieldFactory;
-import cc.kune.core.client.groups.newgroup.GroupFieldFactory;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sitebar.SiteUserOptionsPresenter;
@@ -40,8 +38,6 @@
final Provider<UserSNPresenter> buddiesAndParticipationPresenter,
final Provider<GroupSNConfActions> groupMembersConfActions,
final Provider<UserSNConfActions> userSNConfActions,
- final Provider<UserFieldFactory> userFielFactory,
- final Provider<GroupFieldFactory> groupFielFactory,
final Provider<SiteUserOptionsPresenter> userOptions) {
session.onAppStart(true, new AppStartHandler() {
@Override
@@ -51,8 +47,6 @@
groupMembersPresenter.get();
buddiesAndParticipationPresenter.get();
userOptions.get();
- userFielFactory.get();
- groupFielFactory.get();
}
});
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -48,14 +48,15 @@
private final TextField<String> shortNameRegField;
- public RegisterForm(final I18nTranslationService i18n, final Session session) {
+ public RegisterForm(final I18nTranslationService i18n, final Session session,
+ final UserFieldFactory userFieldFactory) {
super.addStyleName("kune-Margin-Large-l");
- shortNameRegField = UserFieldFactory.createUserShortName(NICK_FIELD);
+ shortNameRegField = userFieldFactory.createUserShortName(NICK_FIELD);
shortNameRegField.setTabIndex(1);
add(shortNameRegField);
- longNameRegField = UserFieldFactory.createUserLongName(LONGNAME_FIELD);
+ longNameRegField = userFieldFactory.createUserLongName(LONGNAME_FIELD);
longNameRegField.setTabIndex(2);
add(longNameRegField);
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -47,11 +47,11 @@
@Inject
public RegisterPanel(final I18nTranslationService i18n, final Session session,
- final MaskWidgetView mask, final NotifyLevelImages images) {
+ final MaskWidgetView mask, final NotifyLevelImages images, final UserFieldFactory userFieldFactory) {
super(REGISTER_DIALOG, mask, i18n, i18n.t(CoreMessages.REGISTER_TITLE), true, true, true, "",
i18n.t(CoreMessages.REGISTER_TITLE), REGISTER_BUTTON_ID,
i18n.tWithNT("Cancel", "used in button"), CANCEL_BUTTON_ID, images, ERRMSG, 5);
- registerForm = new RegisterForm(i18n, session);
+ registerForm = new RegisterForm(i18n, session, userFieldFactory);
registerForm.setWidth(330);
registerForm.getFormPanel().setId(REGISTER_FORM);
messageErrorBar = new MessageToolbar(images, errorLabelId);
Modified: trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -11,9 +11,14 @@
@Singleton
public class UserFieldFactory {
- private static I18nTranslationService i18n;
+ private final I18nTranslationService i18n;
- public static TextField<String> createUserLongName(final String fieldId) {
+ @Inject
+ public UserFieldFactory(final I18nTranslationService i18n) {
+ this.i18n = i18n;
+ }
+
+ public TextField<String> createUserLongName(final String fieldId) {
final TextField<String> longNameRegField = new TextField<String>();
longNameRegField.setFieldLabel(i18n.t("Name"));
longNameRegField.setName(fieldId);
@@ -25,7 +30,7 @@
return longNameRegField;
}
- public static TextField<String> createUserShortName(final String fieldId) {
+ public TextField<String> createUserShortName(final String fieldId) {
final String minMaxText = i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15);
final TextField<String> field = new TextField<String>();
field.setFieldLabel(i18n.t("Username"));
@@ -43,9 +48,4 @@
return field;
}
- @Inject
- public UserFieldFactory(final I18nTranslationService i18n) {
- UserFieldFactory.i18n = i18n;
- }
-
}
Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/GroupFieldFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/groups/newgroup/GroupFieldFactory.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/GroupFieldFactory.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -11,9 +11,14 @@
@Singleton
public class GroupFieldFactory {
- private static I18nTranslationService i18n;
+ private final I18nTranslationService i18n;
- public static TextField<String> createUserLongName(final String fieldId) {
+ @Inject
+ public GroupFieldFactory(final I18nTranslationService i18n) {
+ this.i18n = i18n;
+ }
+
+ public TextField<String> createUserLongName(final String fieldId) {
final TextField<String> field = new TextField<String>();
field.setFieldLabel(i18n.t("Long name"));
field.setName(fieldId);
@@ -26,7 +31,7 @@
return field;
}
- public static TextField<String> createUserShortName(final String fieldId) {
+ public TextField<String> createUserShortName(final String fieldId) {
final String minMaxText = i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15);
final TextField<String> field = new TextField<String>();
field.setFieldLabel(i18n.t("Short name"));
@@ -43,9 +48,4 @@
field.setValidationDelay(1000);
return field;
}
-
- @Inject
- public GroupFieldFactory(final I18nTranslationService i18n) {
- GroupFieldFactory.i18n = i18n;
- }
}
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-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -64,6 +64,7 @@
private final BasicTopDialog dialog;
private final FormPanel form;
+ private final GroupFieldFactory groupFieldFactory;
private final I18nTranslationService i18n;
private TextField<String> longNameField;
private final MaskWidgetView mask;
@@ -71,15 +72,16 @@
private Radio orgRadio;
private Radio projectRadio;
private TextArea publicDescField;
+
private TextField<String> shortNameField;
-
private TextField<String> tag1;
private TextField<String> tag2;
private TextField<String> tag3;
@Inject
public NewGroupPanel(final I18nTranslationService i18n, final NotifyLevelImages img,
- final MaskWidgetView mask) {
+ 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"));
builder.icon("k-newgroup-icon");
@@ -124,11 +126,11 @@
// intro.setStyleName("k-form-intro");
// form.add(intro);
- shortNameField = GroupFieldFactory.createUserShortName(SHORTNAME_FIELD);
+ shortNameField = groupFieldFactory.createUserShortName(SHORTNAME_FIELD);
shortNameField.setTabIndex(1);
form.add(shortNameField);
- longNameField = GroupFieldFactory.createUserLongName(LONGNAME_FIELD);
+ longNameField = groupFieldFactory.createUserLongName(LONGNAME_FIELD);
longNameField.setTabIndex(2);
form.add(longNameField);
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -21,13 +21,18 @@
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.notify.NotifyLevel;
import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.SimpleResponseCallback;
+import cc.kune.core.client.auth.SignIn;
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.state.AccessRightsClientManager;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.TokenUtils;
import cc.kune.core.shared.dto.AccessRolDTO;
import cc.kune.core.shared.dto.SocialNetworkRequestResult;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -37,42 +42,66 @@
public class JoinGroupAction extends SNRolAction {
- @Inject
- public JoinGroupAction(final StateManager stateManager, final Session session, final I18nTranslationService i18n,
- final CoreResources res, final Provider<SocialNetworkServiceAsync> snServiceProvider,
- final AccessRightsClientManager rightsClientManager) {
- super(stateManager, session, i18n, res, snServiceProvider, rightsClientManager, AccessRolDTO.Viewer, false,
- true, false);
- putValue(NAME, i18n.t("Participate"));
- putValue(SHORT_DESCRIPTION, i18n.t("Request to participate in this group"));
- putValue(Action.SMALL_ICON, res.addGreen());
- putValue(Action.STYLES, "k-sn-join");
- }
+ private final Provider<SignIn> signIn;
- @Override
- public void actionPerformed(final ActionEvent event) {
- NotifyUser.showProgressProcessing();
- snServiceProvider.get().requestJoinGroup(session.getUserHash(), session.getCurrentState().getStateToken(),
- new AsyncCallbackSimple<SocialNetworkRequestResult>() {
+ @Inject
+ public JoinGroupAction(final StateManager stateManager, final Session session,
+ final I18nTranslationService i18n, final CoreResources res,
+ final Provider<SocialNetworkServiceAsync> snServiceProvider, final Provider<SignIn> signIn,
+ final AccessRightsClientManager rightsClientManager) {
+ super(stateManager, session, i18n, res, snServiceProvider, rightsClientManager, AccessRolDTO.Viewer,
+ false, true, false);
+ this.signIn = signIn;
+ putValue(NAME, i18n.t("Participate"));
+ putValue(SHORT_DESCRIPTION, i18n.t("Request to participate in this group"));
+ putValue(Action.SMALL_ICON, res.addGreen());
+ putValue(Action.STYLES, "k-sn-join");
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ if (session.isLogged()) {
+ NotifyUser.askConfirmation(i18n.t("Confirm, please:"), i18n.t("Do you want to join this group?"),
+ new SimpleResponseCallback() {
+ @Override
+ public void onCancel() {
+ // Do nothing
+ }
+
+ @Override
+ public void onSuccess() {
+ NotifyUser.showProgressProcessing();
+ snServiceProvider.get().requestJoinGroup(session.getUserHash(),
+ session.getCurrentState().getStateToken(),
+ new AsyncCallbackSimple<SocialNetworkRequestResult>() {
@Override
public void onSuccess(final SocialNetworkRequestResult result) {
- NotifyUser.hideProgress();
- switch ((result)) {
- case accepted:
- NotifyUser.info(i18n.t("You are now member of this group"));
- stateManager.refreshCurrentStateWithoutCache();
- break;
- case denied:
- NotifyUser.important(i18n.t("Sorry this is a closed group"));
- break;
- case moderated:
- NotifyUser.info(i18n.t("Membership requested. Waiting for admins decision"));
- break;
- default:
- NotifyUser.info(i18n.t("Programatic error in ParticipateAction"));
- }
+ NotifyUser.hideProgress();
+ switch ((result)) {
+ case accepted:
+ NotifyUser.info(i18n.t("You are now member of this group"));
+ stateManager.refreshCurrentStateWithoutCache();
+ break;
+ case denied:
+ NotifyUser.important(i18n.t("Sorry this is a closed group"));
+ break;
+ case moderated:
+ NotifyUser.info(i18n.t("Membership requested. Waiting for admins decision"));
+ break;
+ default:
+ NotifyUser.info(i18n.t("Programatic error in ParticipateAction"));
+ }
}
- });
+ });
+ }
+ });
+ } else {
+ signIn.get().setErrorMessage(i18n.t("Sign in or create an account to participate in this group"),
+ NotifyLevel.info);
+ stateManager.gotoHistoryToken(TokenUtils.addRedirect(SiteTokens.SIGNIN,
+ session.getCurrentStateToken().toString()));
}
+ }
+
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -36,10 +36,10 @@
@Inject
public GroupOptGeneralPanel(final I18nTranslationService i18n, final CoreResources res,
- final MaskWidget maskWidget) {
+ final MaskWidget maskWidget, final GroupFieldFactory groupFieldFactory) {
super(i18n, res, maskWidget);
- shortName = GroupFieldFactory.createUserShortName(SHORT_NAME_FIELD);
- longName = GroupFieldFactory.createUserLongName(LONG_NAME_FIELD);
+ shortName = groupFieldFactory.createUserShortName(SHORT_NAME_FIELD);
+ longName = groupFieldFactory.createUserLongName(LONG_NAME_FIELD);
add(shortName);
add(longName);
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-09-20 14:28:24 UTC (rev 1524)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-09-20 23:21:27 UTC (rev 1525)
@@ -38,10 +38,11 @@
@Inject
public UserOptGeneralPanel(final I18nTranslationService i18n, final CoreResources res,
- final MaskWidget maskWidget, final LanguageSelectorPanel langSelector) {
+ final MaskWidget maskWidget, final LanguageSelectorPanel langSelector,
+ final UserFieldFactory userFieldFactory) {
super(i18n, res, maskWidget);
this.langSelector = langSelector;
- longName = UserFieldFactory.createUserLongName(LONG_NAME_FIELD);
+ longName = userFieldFactory.createUserLongName(LONG_NAME_FIELD);
add(longName);
langSelector.setLangTitle(i18n.t("Your language"));
langSelector.setLabelAlign(LabelAlign.LEFT);
1
0
Author: vjrj_
Date: 2011-09-20 16:28:24 +0200 (Tue, 20 Sep 2011)
New Revision: 1524
Added:
trunk/src/main/java/cc/kune/core/client/sn/actions/EventTargetUtils.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddieHeaderButton.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java
trunk/src/main/java/cc/kune/core/server/manager/KuneWaveManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java
trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java
Removed:
trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java
trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java
Modified:
trunk/src/main/java/cc/kune/core/client/errors/AccessViolationException.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java
trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java
trunk/src/main/java/cc/kune/core/client/sn/actions/GotoGroupAction.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/GroupSNConfActions.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNMenuItemsRegistry.java
trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
trunk/src/main/java/cc/kune/domain/User.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java
trunk/src/main/java/cc/kune/wave/server/KuneAgent.java
trunk/src/main/java/cc/kune/wave/server/ParticipantUtils.java
trunk/src/main/resources/kune.properties
Log:
CLOSED - # 67: Write to this buddie/members/admins
http://kune.ourproject.org/issues/ticket/67
Modified: trunk/src/main/java/cc/kune/core/client/errors/AccessViolationException.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/AccessViolationException.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/errors/AccessViolationException.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -20,5 +20,13 @@
package cc.kune.core.client.errors;
public class AccessViolationException extends DefaultException {
- private static final long serialVersionUID = -3786772632052256999L;
+ private static final long serialVersionUID = -3786772632052256999L;
+
+ public AccessViolationException() {
+ super();
+ }
+
+ public AccessViolationException(final String msg) {
+ super(msg);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -82,8 +82,10 @@
eventBus.fireEvent(new ProgressHideEvent());
if (caught instanceof AccessViolationException) {
logException(caught);
+ final String msg = caught.getMessage();
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error,
- i18n.t("You do not have rights to perform that action")));
+ i18n.t("You do not have rights to perform that action")
+ + (TextUtils.empty(msg) ? "" : ". " + i18n.t(msg))));
goHome();
} else if (caught instanceof SessionExpiredException) {
logException(caught);
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -88,4 +88,6 @@
StateAbstractDTO setStatusAsAdmin(String userHash, StateToken stateToken, ContentStatus status);
TagCloudResult setTags(String userHash, StateToken token, String tags) throws DefaultException;
+
+ String writeTo(String userHash, StateToken token, boolean onlyToAdmins) throws DefaultException;
}
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -97,4 +97,6 @@
void setTags(String userHash, StateToken token, String tags,
AsyncCallback<TagCloudResult> asyncCallback);
+ void writeTo(String userHash, StateToken token, boolean onlyToAdmins, AsyncCallback<String> callback);
+
}
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/EventTargetUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/EventTargetUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/EventTargetUtils.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,28 @@
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.dto.UserSimpleDTO;
+
+public class EventTargetUtils {
+
+ public static StateToken getTargetToken(final ActionEvent event) {
+ StateToken token;
+ final Object target = event.getTarget();
+ if (target instanceof GroupDTO) {
+ token = ((GroupDTO) target).getStateToken();
+ } else {
+ token = ((UserSimpleDTO) target).getStateToken();
+ }
+ return token;
+ }
+
+ public static boolean isPerson(final ActionEvent event) {
+ final Object target = event.getTarget();
+ final boolean isUserDTO = target instanceof UserSimpleDTO;
+ final boolean isGroup = target instanceof GroupDTO;
+ return isUserDTO || (isGroup && ((GroupDTO) target).isPersonal());
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/GotoGroupAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/GotoGroupAction.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/GotoGroupAction.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -24,34 +24,25 @@
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.core.shared.dto.UserSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
public class GotoGroupAction extends AbstractExtendedAction {
- private final StateManager stateManager;
+ private final StateManager stateManager;
- @Inject
- public GotoGroupAction(final StateManager stateManager, final I18nTranslationService i18n, final CoreResources res) {
- this.stateManager = stateManager;
- putValue(NAME, i18n.t("Visit this group homepage"));
- putValue(Action.SMALL_ICON, res.groupHome());
- }
+ @Inject
+ public GotoGroupAction(final StateManager stateManager, final I18nTranslationService i18n,
+ final CoreResources res) {
+ this.stateManager = stateManager;
+ putValue(NAME, i18n.t("Visit this group homepage"));
+ putValue(Action.SMALL_ICON, res.groupHome());
+ }
- @Override
- public void actionPerformed(final ActionEvent event) {
- StateToken token;
- final Object target = event.getTarget();
- if (target instanceof GroupDTO) {
- token = ((GroupDTO) target).getStateToken();
- } else {
- token = ((UserSimpleDTO) target).getStateToken();
- }
- stateManager.gotoStateToken(token);
- }
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ stateManager.gotoStateToken(EventTargetUtils.getTargetToken(event));
+ }
}
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAction.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAction.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,77 @@
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.AbstractAction;
+import cc.kune.common.client.actions.AbstractExtendedAction;
+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.nav.NavResources;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.ContentServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class WriteToAction extends AbstractExtendedAction {
+
+ private final Provider<ContentServiceAsync> contentService;
+ private final I18nTranslationService i18n;
+ private boolean onlyToAdmins;
+ private final Session session;
+ private final StateManager stateManager;
+
+ @Inject
+ public WriteToAction(final Provider<ContentServiceAsync> contentService,
+ final I18nTranslationService i18n, final Session session, final StateManager stateManager,
+ final NavResources res) {
+ this.contentService = contentService;
+ this.i18n = i18n;
+ this.session = session;
+ this.stateManager = stateManager;
+ onlyToAdmins = false;
+ putValue(AbstractAction.SMALL_ICON, res.pageText());
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ boolean isPerson = false;
+ final StateToken token;
+ if (event.getTarget() == null) {
+ token = session.getCurrentStateToken();
+ } else {
+ isPerson = EventTargetUtils.isPerson(event);
+ token = EventTargetUtils.getTargetToken(event);
+ }
+ NotifyUser.askConfirmation(
+ i18n.t("Confirm, please:"),
+ isPerson ? i18n.t("Do you want to write a message to your buddy?")
+ : onlyToAdmins ? i18n.t("Do you want to write a message to the admins of this group?")
+ : i18n.t("Do you want to write a message to the members of this group?"),
+ new SimpleResponseCallback() {
+ @Override
+ public void onCancel() {
+ // Do nothing
+ }
+
+ @Override
+ public void onSuccess() {
+ contentService.get().writeTo(session.getUserHash(), token, onlyToAdmins,
+ new AsyncCallbackSimple<String>() {
+ @Override
+ public void onSuccess(final String url) {
+ stateManager.gotoHistoryToken(url);
+ NotifyUser.info("Now you can edit this message");
+ }
+ });
+ }
+ });
+ }
+
+ public void setOnlyToAdmin(final boolean onlyToAdmins) {
+ this.onlyToAdmins = onlyToAdmins;
+ }
+}
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,38 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class WriteToAdmins extends MenuItemDescriptor {
+
+ @Inject
+ public WriteToAdmins(final WriteToAction action, final I18nTranslationService i18n) {
+ super(action);
+ action.setOnlyToAdmin(true);
+ withText(i18n.t("Write to the admins of this group"));
+ setParent(GroupSNConfActions.OPTIONS_MENU);
+ setPosition(0);
+ }
+}
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddieHeaderButton.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddieHeaderButton.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddieHeaderButton.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,73 @@
+/*
+ *
+ * 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.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.state.Session;
+import cc.kune.core.client.state.StateChangedEvent;
+import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.ws.entheader.EntityHeader;
+import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+
+import com.google.inject.Inject;
+
+public class WriteToBuddieHeaderButton {
+
+ @Inject
+ public WriteToBuddieHeaderButton(final WriteToAction writeToAction, final EntityHeader entityHeader,
+ final StateManager stateManager, final Session session, final ChatClient chatEngine) {
+ final ButtonDescriptor button = new ButtonDescriptor(writeToAction);
+ // button.setVisible(false);
+ button.withText("Write to your buddie");
+ // button.setStyles("k-chat-add-as-buddie");
+ writeToAction.addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(final PropertyChangeEvent event) {
+ if (event.getPropertyName().equals(AbstractAction.ENABLED)) {
+ button.setVisible((Boolean) event.getNewValue());
+ }
+ }
+ });
+ entityHeader.addAction(button);
+ stateManager.onStateChanged(true, new StateChangedHandler() {
+ @Override
+ public void onStateChanged(final StateChangedEvent event) {
+ final StateAbstractDTO state = event.getState();
+ final GroupDTO group = state.getGroup();
+ final String groupName = group.getShortName();
+ final boolean imLogged = session.isLogged();
+ final boolean isBuddie = chatEngine.isBuddie(groupName);
+ if (imLogged && group.isPersonal() && isBuddie
+ && !session.getCurrentUser().getShortName().equals(groupName)) {
+ button.setTarget(group);
+ writeToAction.setEnabled(true);
+ } else {
+ writeToAction.setEnabled(false);
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,38 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class WriteToMembers extends MenuItemDescriptor {
+
+ @Inject
+ public WriteToMembers(final WriteToAction action, final I18nTranslationService i18n) {
+ super(action);
+ action.setOnlyToAdmin(false);
+ withText(i18n.t("Write to the members of this group"));
+ setParent(GroupSNConfActions.OPTIONS_MENU);
+ setPosition(0);
+ }
+}
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-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNAdminsMenuItemsRegistry.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -19,6 +19,7 @@
*/
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;
@@ -28,6 +29,7 @@
import cc.kune.core.client.sn.actions.GotoMemberAction;
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.IsCurrentStateAdministrableCondition;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
@@ -35,65 +37,81 @@
import cc.kune.core.client.sn.actions.conditions.IsNotMeCondition;
import cc.kune.core.client.sn.actions.conditions.IsPersonCondition;
import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
import com.google.inject.Provider;
public class GroupSNAdminsMenuItemsRegistry extends AbstractSNMembersActionsRegistry {
- @Inject
- public GroupSNAdminsMenuItemsRegistry(final Session session, final IsLoggedCondition isLogged,
- final IsCurrentStateAdministrableCondition isAdministrableCondition, final IsPersonCondition isPersonCondition,
- final IsGroupCondition isGroupCondition, final IsMeCondition isMe, final IsNotMeCondition isNotMe,
- final ChangeToCollabAction changeToCollabAction, final ChangeToAdminAction changeToAdminAction,
- final RemoveMemberAction removeMemberAction, final AcceptJoinGroupAction acceptJoinGroupAction,
- final DenyJoinGroupAction denyJoinGroupAction, final GotoGroupAction gotoGroupAction,
- final GotoMemberAction gotoMemberAction, final GotoYourHomePageAction gotoYourHomePageAction) {
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(gotoMemberAction);
- item.add(isPersonCondition);
- item.add(isNotMe);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(gotoYourHomePageAction);
- item.add(isPersonCondition);
- item.add(isMe);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(gotoGroupAction);
- item.add(isGroupCondition);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(changeToCollabAction);
- item.add(isAdministrableCondition);
- item.add(isNotMe);
- item.add(isLogged);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(removeMemberAction);
- item.add(isAdministrableCondition);
- item.add(isNotMe);
- item.add(isLogged);
- return item;
- }
- });
- }
+ @Inject
+ public GroupSNAdminsMenuItemsRegistry(final Session session, final I18nTranslationService i18n,
+ final IsLoggedCondition isLogged,
+ final IsCurrentStateAdministrableCondition isAdministrable,
+ final IsPersonCondition isPerson, final IsGroupCondition isGroup,
+ final IsBuddieCondition isBuddie, final IsMeCondition isMe, final IsNotMeCondition isNotMe,
+ final ChangeToCollabAction changeToCollabAction, final ChangeToAdminAction changeToAdminAction,
+ final RemoveMemberAction removeMemberAction, final AcceptJoinGroupAction acceptJoinGroupAction,
+ final DenyJoinGroupAction denyJoinGroupAction, final GotoGroupAction gotoGroupAction,
+ final GotoMemberAction gotoMemberAction, final GotoYourHomePageAction gotoYourHomePageAction,
+ final WriteToAction writeToAction) {
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(gotoMemberAction);
+ item.add(isPerson);
+ item.add(isNotMe);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(gotoYourHomePageAction);
+ item.add(isPerson);
+ item.add(isMe);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(writeToAction);
+ item.add(isPerson);
+ item.withText(i18n.t("Write to your buddie"));
+ item.add(isNotMe);
+ item.add(isBuddie);
+ item.add(isLogged);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(gotoGroupAction);
+ item.add(isGroup);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(changeToCollabAction);
+ item.add(isAdministrable);
+ item.add(isNotMe);
+ item.add(isLogged);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(removeMemberAction);
+ item.add(isAdministrable);
+ item.add(isNotMe);
+ item.add(isLogged);
+ return item;
+ }
+ });
+ }
}
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-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNCollabsMenuItemsRegistry.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -19,6 +19,7 @@
*/
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;
@@ -28,69 +29,87 @@
import cc.kune.core.client.sn.actions.GotoMemberAction;
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.IsCurrentStateAdministrableCondition;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
+import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
import cc.kune.core.client.sn.actions.conditions.IsMeCondition;
import cc.kune.core.client.sn.actions.conditions.IsNotMeCondition;
import cc.kune.core.client.sn.actions.conditions.IsPersonCondition;
import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
import com.google.inject.Provider;
public class GroupSNCollabsMenuItemsRegistry extends AbstractSNMembersActionsRegistry {
- @Inject
- public GroupSNCollabsMenuItemsRegistry(final Session session, final IsCurrentStateAdministrableCondition isAdministrableCondition,
- final IsPersonCondition isPersonCondition, final IsGroupCondition isGroupCondition,
- final IsMeCondition isMe, final IsNotMeCondition isNotMe, final ChangeToCollabAction changeToCollabAction,
- final ChangeToAdminAction changeToAdminAction, final RemoveMemberAction removeMemberAction,
- final AcceptJoinGroupAction acceptJoinGroupAction, final DenyJoinGroupAction denyJoinGroupAction,
- final GotoGroupAction gotoGroupAction, final GotoMemberAction gotoMemberAction,
- final GotoYourHomePageAction gotoYourHomePageAction) {
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(changeToAdminAction);
- item.add(isAdministrableCondition);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(removeMemberAction);
- item.add(isAdministrableCondition);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(gotoMemberAction);
- item.add(isPersonCondition);
- item.add(isNotMe);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(gotoYourHomePageAction);
- item.add(isPersonCondition);
- item.add(isMe);
- return item;
- }
- });
- add(new Provider<MenuItemDescriptor>() {
- @Override
- public MenuItemDescriptor get() {
- final MenuItemDescriptor item = new MenuItemDescriptor(gotoGroupAction);
- item.add(isGroupCondition);
- return item;
- }
- });
+ @Inject
+ public GroupSNCollabsMenuItemsRegistry(final Session session, final I18nTranslationService i18n,
+ final IsLoggedCondition isLogged,
+ final IsCurrentStateAdministrableCondition isAdministrableCondition,
+ final IsPersonCondition isPersonCondition, final IsGroupCondition isGroupCondition,
+ final IsBuddieCondition isBuddie, final IsMeCondition isMe, final IsNotMeCondition isNotMe,
+ final ChangeToCollabAction changeToCollabAction, final ChangeToAdminAction changeToAdminAction,
+ final RemoveMemberAction removeMemberAction, final AcceptJoinGroupAction acceptJoinGroupAction,
+ final DenyJoinGroupAction denyJoinGroupAction, final GotoGroupAction gotoGroupAction,
+ final GotoMemberAction gotoMemberAction, final GotoYourHomePageAction gotoYourHomePageAction,
+ final WriteToAction writeToAction) {
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(changeToAdminAction);
+ item.add(isAdministrableCondition);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(removeMemberAction);
+ item.add(isAdministrableCondition);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(writeToAction);
+ item.add(isPersonCondition);
+ item.withText(i18n.t("Write to your buddie"));
+ item.add(isNotMe);
+ item.add(isBuddie);
+ item.add(isLogged);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(gotoMemberAction);
+ item.add(isPersonCondition);
+ item.add(isNotMe);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(gotoYourHomePageAction);
+ item.add(isPersonCondition);
+ item.add(isMe);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(gotoGroupAction);
+ item.add(isGroupCondition);
+ return item;
+ }
+ });
- }
+ }
}
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-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -31,6 +31,8 @@
import cc.kune.core.client.sn.actions.MembersModerationMenuItem;
import cc.kune.core.client.sn.actions.MembersVisibilityMenuItem;
import cc.kune.core.client.sn.actions.UnJoinFromCurrentGroupAction;
+import cc.kune.core.client.sn.actions.WriteToAdmins;
+import cc.kune.core.client.sn.actions.WriteToMembers;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
import cc.kune.core.client.state.Session;
@@ -66,6 +68,7 @@
final I18nTranslationService i18n, final Provider<MembersVisibilityMenuItem> membersVisibility,
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) {
OPTIONS_MENU.withToolTip(i18n.t("Options")).withIcon(res.arrowdownsitebar()).withStyles(
OPTIONS_STYLES);
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-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNMenuItemsRegistry.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -19,6 +19,7 @@
*/
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;
@@ -29,6 +30,7 @@
import cc.kune.core.client.sn.actions.GotoYourHomePageAction;
import cc.kune.core.client.sn.actions.RemoveMemberAction;
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.IsCurrentStateAdministrableCondition;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
@@ -37,6 +39,7 @@
import cc.kune.core.client.sn.actions.conditions.IsNotMeCondition;
import cc.kune.core.client.sn.actions.conditions.IsPersonCondition;
import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -45,21 +48,22 @@
public class UserSNMenuItemsRegistry extends AbstractSNMembersActionsRegistry {
@Inject
- public UserSNMenuItemsRegistry(final Session session,
+ public UserSNMenuItemsRegistry(final Session session, final I18nTranslationService i18n,
final IsCurrentStateAdministrableCondition isAdministrableCondition,
- final IsPersonCondition isPersonCondition, final IsGroupCondition isGroupCondition,
- final ImPartOfGroupCondition imPartOfGroup, final IsLoggedCondition isLoggedCondition,
- final IsMeCondition isMe, final IsNotMeCondition isNotMe,
+ final IsPersonCondition isPerson, final IsGroupCondition isGroup,
+ final ImPartOfGroupCondition imPartOfGroup, final IsLoggedCondition isLogged,
+ final IsBuddieCondition isBuddie, final IsMeCondition isMe, final IsNotMeCondition isNotMe,
final ChangeToCollabAction changeToCollabAction, final ChangeToAdminAction changeToAdminAction,
final RemoveMemberAction removeMemberAction, final AcceptJoinGroupAction acceptJoinGroupAction,
final DenyJoinGroupAction denyJoinGroupAction, final GotoGroupAction gotoGroupAction,
final GotoPersonAction gotoPersonAction, final UnJoinFromThisGroupAction unjoinAction,
+ final WriteToAction writeToAction, final WriteToAction writeToActionOnlyAdmins,
final GotoYourHomePageAction gotoYourHomePageAction) {
add(new Provider<MenuItemDescriptor>() {
@Override
public MenuItemDescriptor get() {
final MenuItemDescriptor item = new MenuItemDescriptor(gotoPersonAction);
- item.add(isPersonCondition);
+ item.add(isPerson);
item.add(isNotMe);
return item;
}
@@ -68,30 +72,63 @@
@Override
public MenuItemDescriptor get() {
final MenuItemDescriptor item = new MenuItemDescriptor(gotoGroupAction);
- item.add(isGroupCondition);
+ item.add(isGroup);
return item;
}
});
add(new Provider<MenuItemDescriptor>() {
@Override
public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(writeToAction);
+ item.add(isPerson);
+ item.withText(i18n.t("Write to your buddie"));
+ item.add(isBuddie);
+ item.add(isNotMe);
+ item.add(isLogged);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
final MenuItemDescriptor item = new MenuItemDescriptor(gotoYourHomePageAction);
- item.add(isPersonCondition);
+ item.add(isPerson);
item.add(isMe);
return item;
}
});
- // This doesn't works, because its unregister from current state not
- // from target group
add(new Provider<MenuItemDescriptor>() {
@Override
public MenuItemDescriptor get() {
final MenuItemDescriptor item = new MenuItemDescriptor(unjoinAction);
- item.add(isLoggedCondition);
- item.add(isGroupCondition);
+ item.add(isLogged);
+ item.add(isGroup);
item.add(imPartOfGroup);
return item;
}
});
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ writeToActionOnlyAdmins.setOnlyToAdmin(true);
+ final MenuItemDescriptor item = new MenuItemDescriptor(writeToActionOnlyAdmins);
+ item.withText(i18n.t("Write to the admins of this group"));
+ item.add(isLogged);
+ item.add(isGroup);
+ item.add(imPartOfGroup);
+ return item;
+ }
+ });
+ add(new Provider<MenuItemDescriptor>() {
+ @Override
+ public MenuItemDescriptor get() {
+ final MenuItemDescriptor item = new MenuItemDescriptor(writeToAction);
+ item.withText(i18n.t("Write to the members of this group"));
+ item.add(isLogged);
+ item.add(isGroup);
+ item.add(imPartOfGroup);
+ return item;
+ }
+ });
}
}
Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -57,6 +57,7 @@
import cc.kune.core.server.manager.I18nCountryManager;
import cc.kune.core.server.manager.I18nLanguageManager;
import cc.kune.core.server.manager.I18nTranslationManager;
+import cc.kune.core.server.manager.KuneWaveManager;
import cc.kune.core.server.manager.LicenseManager;
import cc.kune.core.server.manager.RateManager;
import cc.kune.core.server.manager.SocialNetworkManager;
@@ -75,6 +76,7 @@
import cc.kune.core.server.manager.impl.I18nCountryManagerDefault;
import cc.kune.core.server.manager.impl.I18nLanguageManagerDefault;
import cc.kune.core.server.manager.impl.I18nTranslationManagerDefault;
+import cc.kune.core.server.manager.impl.KuneWaveManagerDefault;
import cc.kune.core.server.manager.impl.LicenseManagerDefault;
import cc.kune.core.server.manager.impl.RateManagerDefault;
import cc.kune.core.server.manager.impl.SocialNetworkManagerDefault;
@@ -102,8 +104,8 @@
import cc.kune.domain.SocialNetwork;
import cc.kune.lists.client.rpc.ListsService;
import cc.kune.lists.server.rpc.ListsRPC;
-import cc.kune.wave.server.KuneWaveManager;
-import cc.kune.wave.server.KuneWaveManagerDefault;
+import cc.kune.wave.server.KuneWaveService;
+import cc.kune.wave.server.KuneWaveServiceDefault;
import cc.kune.wave.server.ParticipantUtils;
import com.google.inject.matcher.Matchers;
@@ -158,6 +160,7 @@
bind(StateService.class).to(StateServiceDefault.class);
bind(I18nTranslationService.class).to(I18nTranslationServiceDefault.class);
bind(SessionService.class).to(SessionServiceDefault.class);
+ bind(KuneWaveService.class).to(KuneWaveServiceDefault.class);
bind(XMLActionReader.class);
}
Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -56,7 +56,7 @@
import cc.kune.domain.finders.ContentFinder;
import cc.kune.domain.finders.I18nLanguageFinder;
import cc.kune.domain.finders.UserFinder;
-import cc.kune.wave.server.KuneWaveManager;
+import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.KuneWaveUtils;
import cc.kune.wave.server.ParticipantUtils;
@@ -70,7 +70,7 @@
private final ContainerFinder containerFinder;
private final ContentFinder contentFinder;
private final FinderService finder;
- private final KuneWaveManager kuneWaveManager;
+ private final KuneWaveService kuneWaveManager;
private final I18nLanguageFinder languageFinder;
private final ParticipantUtils participantUtils;
private final TagUserContentManager tagManager;
@@ -80,7 +80,7 @@
public ContentManagerDefault(final ContentFinder contentFinder, final ContainerFinder containerFinder,
final Provider<EntityManager> provider, final FinderService finder, final UserFinder userFinder,
final I18nLanguageFinder languageFinder, final TagUserContentManager tagManager,
- final KuneWaveManager kuneWaveManager, final ParticipantUtils participantUtils) {
+ final KuneWaveService kuneWaveManager, final ParticipantUtils participantUtils) {
super(provider, Content.class);
this.contentFinder = contentFinder;
this.containerFinder = containerFinder;
@@ -115,7 +115,7 @@
@Override
public Content createContent(final String title, final String body, final User author,
final Container container, final String typeId) {
- return createContent(title, body, author, container, typeId, KuneWaveManager.WITHOUT_GADGET);
+ return createContent(title, body, author, container, typeId, KuneWaveService.WITHOUT_GADGET);
}
@Override
Modified: trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -35,7 +35,7 @@
import cc.kune.domain.Group;
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveManager;
+import cc.kune.wave.server.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -65,7 +65,7 @@
final ServerTool tool = tools.get(toolName);
tool.checkTypesBeforeContentCreation(container.getTypeId(), typeId);
final URL gagdetUrl = tool instanceof ServerWaveTool ? ((ServerWaveTool) tool).getGadgetUrl()
- : KuneWaveManager.WITHOUT_GADGET;
+ : KuneWaveService.WITHOUT_GADGET;
final Content content = contentManager.createContent(title, body, user, container, typeId, gagdetUrl);
tool.onCreateContent(content, container);
return content;
Modified: trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -44,7 +44,7 @@
import cc.kune.domain.I18nTranslation;
import cc.kune.domain.License;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveManager;
+import cc.kune.wave.server.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.persist.Transactional;
@@ -53,7 +53,7 @@
private final ContentManager contentManager;
private final I18nCountryManager countryManager;
private final GroupManager groupManager;
- private final KuneWaveManager kuneWaveManager;
+ private final KuneWaveService kuneWaveManager;
private final I18nLanguageManager languageManager;
private final LicenseManager licenseManager;
private final KuneBasicProperties properties;
@@ -65,7 +65,7 @@
final GroupManager groupManager, final LicenseManager licenseManager,
final I18nLanguageManager languageManager, final I18nCountryManager countryManager,
final I18nTranslationManager translationManager, final ContentManager contentManager,
- final KuneWaveManager kuneWaveManager) {
+ final KuneWaveService kuneWaveManager) {
this.properties = properties;
this.userManager = userManager;
this.groupManager = groupManager;
Added: trunk/src/main/java/cc/kune/core/server/manager/KuneWaveManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/KuneWaveManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/manager/KuneWaveManager.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,11 @@
+package cc.kune.core.server.manager;
+
+import cc.kune.domain.User;
+
+public interface KuneWaveManager {
+
+ String sendFeedback(User user, String title, String body);
+
+ String writeTo(User user, String groupName, boolean onlyToAdmins);
+
+}
Added: trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,84 @@
+package cc.kune.core.server.manager.impl;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.waveprotocol.wave.model.wave.ParticipantId;
+
+import cc.kune.core.client.errors.AccessViolationException;
+import cc.kune.core.server.access.AccessRightsUtils;
+import cc.kune.core.server.manager.KuneWaveManager;
+import cc.kune.core.server.manager.UserManager;
+import cc.kune.core.server.properties.KuneProperties;
+import cc.kune.core.shared.domain.AccessRol;
+import cc.kune.domain.Group;
+import cc.kune.domain.User;
+import cc.kune.domain.finders.GroupFinder;
+import cc.kune.domain.utils.UserBuddiesData;
+import cc.kune.wave.server.KuneWaveService;
+import cc.kune.wave.server.KuneWaveUtils;
+import cc.kune.wave.server.ParticipantUtils;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class KuneWaveManagerDefault implements KuneWaveManager {
+
+ private final GroupFinder groupFinder;
+ private final KuneProperties kuneProperties;
+ private final ParticipantUtils participantUtils;
+ private final UserManager userManager;
+ private final KuneWaveService waveService;
+
+ @Inject
+ public KuneWaveManagerDefault(final KuneWaveService waveService,
+ final ParticipantUtils participantUtils, final KuneProperties kuneProperties,
+ final GroupFinder groupFinder, final UserManager userManager) {
+ this.waveService = waveService;
+ this.participantUtils = participantUtils;
+ this.kuneProperties = kuneProperties;
+ this.groupFinder = groupFinder;
+ this.userManager = userManager;
+ }
+
+ @Override
+ public String sendFeedback(final User user, final String title, final String body) {
+ final List<String> participants = kuneProperties.getList(KuneProperties.FEEDBACK_TO);
+ participants.add(0, user.getShortName());
+ final List<ParticipantId> partIds = new ArrayList<ParticipantId>();
+ for (final String part : participants) {
+ partIds.add(participantUtils.of(part));
+ }
+ return KuneWaveUtils.getUrl(waveService.createWave(title, body,
+ partIds.toArray(new ParticipantId[0])));
+ }
+
+ @Override
+ public String writeTo(final User user, final String groupName, final boolean onlyToAdmins) {
+ final Group group = groupFinder.findByShortName(groupName);
+ final Set<Group> toList = new HashSet<Group>();
+ toList.add(user.getUserGroup());
+ if (group.isPersonal()) {
+ final UserBuddiesData userBuddies = userManager.getUserBuddies(groupName);
+ if (userBuddies.contains(user.getShortName())) {
+ toList.add(group);
+ } else {
+ throw new AccessViolationException("You cannot write to non buddies");
+ }
+ } else {
+ if (!AccessRightsUtils.correctMember(user, group, AccessRol.Editor)) {
+ throw new AccessViolationException("You cannot write because you are not a member");
+ }
+ if (onlyToAdmins) {
+ toList.addAll(group.getSocialNetwork().getAccessLists().getAdmins().getList());
+ } else {
+ toList.addAll(group.getSocialNetwork().getAccessLists().getAdmins().getList());
+ toList.addAll(group.getSocialNetwork().getAccessLists().getEditors().getList());
+ }
+ }
+ return KuneWaveUtils.getUrl(waveService.createWave("", participantUtils.listFrom(toList)));
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -64,7 +64,7 @@
import cc.kune.domain.finders.UserFinder;
import cc.kune.domain.utils.UserBuddiesData;
import cc.kune.wave.server.CustomUserRegistrationServlet;
-import cc.kune.wave.server.KuneWaveManager;
+import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.ParticipantUtils;
import com.google.inject.Inject;
@@ -78,7 +78,7 @@
private final I18nCountryManager countryManager;
private final GroupManager groupManager;
private final I18nTranslationService i18n;
- private final KuneWaveManager kuneWaveManager;
+ private final KuneWaveService kuneWaveManager;
private final I18nLanguageManager languageManager;
private final ParticipantUtils participantUtils;
private final KuneBasicProperties properties;
@@ -92,7 +92,7 @@
final I18nLanguageManager languageManager, final I18nCountryManager countryManager,
final XmppManager xmppManager, final ChatProperties chatProperties,
final I18nTranslationService i18n, final CustomUserRegistrationServlet waveUserRegister,
- final AccountStore waveAccountStore, final KuneWaveManager kuneWaveManager,
+ final AccountStore waveAccountStore, final KuneWaveService kuneWaveManager,
final ParticipantUtils participantUtils, final KuneBasicProperties properties,
final GroupManager groupManager) {
super(provider, User.class);
Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -19,15 +19,10 @@
*/
package cc.kune.core.server.rpc;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.List;
import javax.persistence.NoResultException;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
-
import cc.kune.chat.server.ChatManager;
import cc.kune.core.client.errors.AccessViolationException;
import cc.kune.core.client.errors.ContentNotFoundException;
@@ -48,9 +43,9 @@
import cc.kune.core.server.content.ContentUtils;
import cc.kune.core.server.content.CreationService;
import cc.kune.core.server.manager.GroupManager;
+import cc.kune.core.server.manager.KuneWaveManager;
import cc.kune.core.server.manager.TagUserContentManager;
import cc.kune.core.server.mapper.Mapper;
-import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.server.state.StateContainer;
import cc.kune.core.server.state.StateContent;
import cc.kune.core.server.state.StateService;
@@ -71,8 +66,6 @@
import cc.kune.domain.Content;
import cc.kune.domain.Group;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveManager;
-import cc.kune.wave.server.ParticipantUtils;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -86,14 +79,12 @@
private final CreationService creationService;
private final FinderService finderService;
private final GroupManager groupManager;
- private final KuneProperties kuneProperties;
- private final KuneWaveManager kuneWaveManager;
private final Mapper mapper;
- private final ParticipantUtils participantUtils;
private final AccessRightsService rightsService;
private final StateService stateService;
private final TagUserContentManager tagManager;
private final Provider<UserSession> userSessionProvider;
+ private final KuneWaveManager waveManager;
@Inject
public ContentRPC(final FinderService finderService, final Provider<UserSession> userSessionProvider,
@@ -101,8 +92,7 @@
final StateService stateService, final CreationService creationService,
final GroupManager groupManager, final ContentManager contentManager,
final ContainerManager containerManager, final TagUserContentManager tagManager,
- final Mapper mapper, final ChatManager chatManager, final KuneWaveManager kuneWaveManager,
- final KuneProperties kuneProperties, final ParticipantUtils participantUtils) {
+ final Mapper mapper, final ChatManager chatManager, final KuneWaveManager waveManager) {
this.finderService = finderService;
this.userSessionProvider = userSessionProvider;
this.accessService = accessService;
@@ -115,9 +105,7 @@
this.tagManager = tagManager;
this.mapper = mapper;
this.chatManager = chatManager;
- this.kuneWaveManager = kuneWaveManager;
- this.kuneProperties = kuneProperties;
- this.participantUtils = participantUtils;
+ this.waveManager = waveManager;
}
@Override
@@ -455,14 +443,7 @@
public String sendFeedback(final String userHash, final String title, final String body)
throws DefaultException {
final User user = getCurrentUser();
- final List<String> participants = kuneProperties.getList(KuneProperties.FEEDBACK_TO);
- participants.add(0, user.getShortName());
- final List<ParticipantId> partIds = new ArrayList<ParticipantId>();
- for (final String part : participants) {
- partIds.add(participantUtils.of(part));
- }
- return JavaWaverefEncoder.encodeToUriPathSegment(kuneWaveManager.createWave(title, body,
- partIds.toArray(new ParticipantId[0])));
+ return waveManager.sendFeedback(user, title, body);
}
@Override
@@ -536,4 +517,13 @@
return getSummaryTags(group);
}
+ @Override
+ @Authenticated
+ @Transactional
+ public String writeTo(final String userHash, final StateToken token, final boolean onlyToAdmins)
+ throws DefaultException {
+ final User user = getCurrentUser();
+ return waveManager.writeTo(user, token.getGroup(), onlyToAdmins);
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -35,7 +35,7 @@
import cc.kune.domain.License;
import cc.kune.domain.Revision;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveManager;
+import cc.kune.wave.server.KuneWaveService;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -47,7 +47,7 @@
private final ContentManager contentManager;
private final GroupManager groupManager;
private final I18nTranslationService i18n;
- private final KuneWaveManager kuneWaveManager;
+ private final KuneWaveService kuneWaveManager;
private final AccessRightsService rightsService;
private final SocialNetworkManager socialNetworkManager;
private final TagUserContentManager tagManager;
@@ -56,7 +56,7 @@
public StateServiceDefault(final GroupManager groupManager,
final SocialNetworkManager socialNetworkManager, final ContentManager contentManager,
final TagUserContentManager tagManager, final AccessRightsService rightsService,
- final I18nTranslationService i18n, final KuneWaveManager kuneWaveManager) {
+ final I18nTranslationService i18n, final KuneWaveService kuneWaveManager) {
this.groupManager = groupManager;
this.socialNetworkManager = socialNetworkManager;
this.contentManager = contentManager;
Modified: trunk/src/main/java/cc/kune/domain/User.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/User.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/domain/User.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -75,9 +75,6 @@
@Column(nullable = false)
private byte[] diggest;
- // @OneToOne(cascade = CascadeType.REMOVE)
- // private final CustomProperties customProperties;
-
@Column(unique = true, nullable = false)
@Email
@Length(min = 1)
@@ -88,6 +85,9 @@
@GeneratedValue
private Long id;
+ // @OneToOne(cascade = CascadeType.REMOVE)
+ // private final CustomProperties customProperties;
+
@ManyToOne
@NotNull
private I18nLanguage language;
@@ -125,23 +125,10 @@
@OneToOne(cascade = CascadeType.REMOVE)
private Group userGroup;
- // @OneToOne
- // @OnDelete(action = OnDeleteAction.CASCADE)
- // private Properties properties;
-
public User() {
this(null, null, null, null, null, null, null, null, null);
}
- //
- // public User(final String shortName, final String longName, final String
- // email, final String passwd,
- // final I18nLanguage language, final I18nCountry country, final TimeZone
- // timezone) {
- // this(shortName, longName, email, passwd, language, country, timezone,
- // null);
- // }
-
public User(final String shortName, final String longName, final String email, final String passwd,
final byte[] diggets, final byte[] salt, final I18nLanguage language, final I18nCountry country,
final TimeZone timezone) {
@@ -162,6 +149,41 @@
// this.properties = properties;
}
+ // @OneToOne
+ // @OnDelete(action = OnDeleteAction.CASCADE)
+ // private Properties properties;
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final User other = (User) obj;
+ if (shortName == null) {
+ if (other.shortName != null) {
+ return false;
+ }
+ } else if (!shortName.equals(other.shortName)) {
+ return false;
+ }
+ return true;
+ }
+
+ //
+ // public User(final String shortName, final String longName, final String
+ // email, final String passwd,
+ // final I18nLanguage language, final I18nCountry country, final TimeZone
+ // timezone) {
+ // this(shortName, longName, email, passwd, language, country, timezone,
+ // null);
+ // }
+
public I18nCountry getCountry() {
return country;
}
@@ -174,14 +196,14 @@
return diggest;
}
+ public String getEmail() {
+ return email;
+ }
+
// public CustomProperties getCustomProperties() {
// return customProperties;
// }
- public String getEmail() {
- return email;
- }
-
public boolean getHasLogo() {
return hasLogo();
}
@@ -207,14 +229,14 @@
return password;
}
+ public byte[] getSalt() {
+ return salt;
+ }
+
// public Properties getProperties() {
// return properties;
// }
- public byte[] getSalt() {
- return salt;
- }
-
public String getShortName() {
return shortName;
}
@@ -236,6 +258,14 @@
return userGroup;
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((shortName == null) ? 0 : shortName.hashCode());
+ return result;
+ }
+
@Transient
public boolean hasLogo() {
return getUserGroup().hasLogo();
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -22,6 +22,7 @@
import cc.kune.common.client.ExtendedGinModule;
import cc.kune.core.client.sitebar.search.SitebarSearchPanel;
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter;
+import cc.kune.core.client.sn.actions.WriteToBuddieHeaderButton;
import cc.kune.gspace.client.actions.ContentViewerOptionsMenu;
import cc.kune.gspace.client.actions.GiveUsFeedbackBtn;
import cc.kune.gspace.client.actions.RenameAction;
@@ -186,6 +187,7 @@
s(ContentViewerOptionsMenu.class);
s(RenameAction.class);
s(GiveUsFeedbackBtn.class);
+ s(WriteToBuddieHeaderButton.class);
// LicenseWizard
bindPresenter(LicenseWizardPresenter.class, LicenseWizardView.class, LicenseWizardPanel.class,
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -22,6 +22,7 @@
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter;
+import cc.kune.core.client.sn.actions.WriteToBuddieHeaderButton;
import cc.kune.core.client.state.Session;
import cc.kune.gspace.client.actions.GiveUsFeedbackBtn;
import cc.kune.gspace.client.i18n.I18nToTranslateGridPanel;
@@ -70,7 +71,8 @@
final Provider<SiteOptionsI18nTranslatorAction> transAction,
final Provider<GiveUsFeedbackBtn> giveUsFeedback,
final Provider<I18nToTranslateGridPanel> toTrans,
- final Provider<I18nTranslatorTabsCollection> gtranslator) {
+ final Provider<I18nTranslatorTabsCollection> gtranslator,
+ final Provider<WriteToBuddieHeaderButton> writeToBuddie) {
session.onAppStart(true, new AppStartHandler() {
@Override
@@ -109,6 +111,9 @@
if (event.getInitData().isFeedbackEnabled()) {
giveUsFeedback.get();
}
+
+ // Others
+ writeToBuddie.get();
}
});
}
Modified: trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -43,7 +43,7 @@
import cc.kune.domain.Content;
import cc.kune.domain.Group;
import cc.kune.domain.User;
-import cc.kune.wave.server.KuneWaveManager;
+import cc.kune.wave.server.KuneWaveService;
import cc.kune.wave.server.KuneWaveUtils;
import com.google.inject.Inject;
@@ -52,12 +52,12 @@
public class ListsServerTool extends AbstractServerTool {
private final Provider<UserSession> userSessionProvider;
- private final KuneWaveManager waveManager;
+ private final KuneWaveService waveManager;
@Inject
public ListsServerTool(final ContentManager contentManager, final ContainerManager containerManager,
final ToolConfigurationManager configurationManager, final I18nTranslationService i18n,
- final Provider<UserSession> userSessionProvider, final KuneWaveManager waveManager) {
+ final Provider<UserSession> userSessionProvider, final KuneWaveService waveManager) {
super(NAME, ROOT_NAME, TYPE_ROOT, Arrays.asList(TYPE_POST), Arrays.asList(TYPE_LIST),
Arrays.asList(TYPE_LIST), Arrays.asList(TYPE_ROOT), contentManager, containerManager,
configurationManager, i18n, ServerToolTarget.forGroups);
Modified: trunk/src/main/java/cc/kune/wave/server/KuneAgent.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -39,7 +39,7 @@
@SuppressWarnings("serial")
@Singleton
-public class KuneAgent extends AbstractBaseRobotAgent implements KuneWaveManager {
+public class KuneAgent extends AbstractBaseRobotAgent implements KuneWaveService {
private static final Logger LOG = Logger.getLogger(KuneAgent.class.getName());
Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -1,61 +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.wave.server;
-
-import java.net.URL;
-
-import org.waveprotocol.wave.model.id.WaveId;
-import org.waveprotocol.wave.model.id.WaveletId;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import com.google.wave.api.Wavelet;
-
-public interface KuneWaveManager {
- public static final URL WITHOUT_GADGET = null;
-
- void addGadget(WaveRef waveName, String author, String gadgetUrl);
-
- void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants);
-
- WaveRef createWave(String message, ParticipantId... participants);
-
- WaveRef createWave(String title, String message, ParticipantId... participantsArray);
-
- WaveRef createWave(String title, String message, String waveIdToCopy, URL gadgetUrl,
- ParticipantId... participantsArray);
-
- WaveRef createWave(String title, String message, URL gadgetUrl, ParticipantId... participantsArray);
-
- void delParticipants(WaveRef waveName, String whoDel, String... participants);
-
- Wavelet fetchWave(WaveId waveId, WaveletId waveletId, String author);
-
- Wavelet fetchWave(WaveRef waveRef, String author);
-
- boolean isParticipant(Wavelet wavelet, String user);
-
- String render(Wavelet wavelet);
-
- String render(WaveRef waveRef, String author);
-
- void setTitle(WaveRef waveName, String title, String author);
-
-}
Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -1,446 +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.wave.server;
-
-import java.net.URL;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import javax.annotation.Nonnull;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.waveprotocol.box.server.CoreSettings;
-import org.waveprotocol.box.server.robots.OperationContextImpl;
-import org.waveprotocol.box.server.robots.OperationServiceRegistry;
-import org.waveprotocol.box.server.robots.util.ConversationUtil;
-import org.waveprotocol.box.server.robots.util.OperationUtil;
-import org.waveprotocol.box.server.waveserver.WaveletProvider;
-import org.waveprotocol.box.server.waveserver.WaveletProvider.SubmitRequestListener;
-import org.waveprotocol.wave.model.id.InvalidIdException;
-import org.waveprotocol.wave.model.id.WaveId;
-import org.waveprotocol.wave.model.id.WaveletId;
-import org.waveprotocol.wave.model.version.HashedVersion;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.core.client.errors.DefaultException;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-import com.google.wave.api.Annotation;
-import com.google.wave.api.ApiIdSerializer;
-import com.google.wave.api.Blip;
-import com.google.wave.api.BlipContent;
-import com.google.wave.api.BlipData;
-import com.google.wave.api.BlipThread;
-import com.google.wave.api.Element;
-import com.google.wave.api.ElementType;
-import com.google.wave.api.FormElement;
-import com.google.wave.api.Gadget;
-import com.google.wave.api.Image;
-import com.google.wave.api.JsonRpcConstant.ParamsProperty;
-import com.google.wave.api.JsonRpcResponse;
-import com.google.wave.api.Line;
-import com.google.wave.api.OperationQueue;
-import com.google.wave.api.OperationRequest;
-import com.google.wave.api.OperationRequest.Parameter;
-import com.google.wave.api.ProtocolVersion;
-import com.google.wave.api.Range;
-import com.google.wave.api.Wavelet;
-import com.google.wave.api.data.converter.EventDataConverterManager;
-import com.google.wave.api.impl.DocumentModifyAction;
-import com.google.wave.api.impl.DocumentModifyAction.BundledAnnotation;
-import com.google.wave.api.impl.DocumentModifyAction.ModifyHow;
-import com.google.wave.api.impl.WaveletData;
-import com.google.wave.splash.rpc.ClientAction;
-import com.google.wave.splash.web.template.WaveRenderer;
-
-public class KuneWaveManagerDefault implements KuneWaveManager {
- public static final Log LOG = LogFactory.getLog(KuneWaveManagerDefault.class);
-
- // See: DocumentModifyServiceTest
- private static final String NO_ANNOTATION_KEY = null;
- private static final List<BundledAnnotation> NO_BUNDLED_ANNOTATIONS = Collections.emptyList();
- private static final String NO_TITLE = "";
- private static final List<String> NO_VALUES = Collections.<String> emptyList();
- private static final String NO_WAVE_TO_COPY = null;
-
- /**
- *
- * Copy blips
- *
- * @param fromBlip
- * @param toBlip
- *
- * @author yurize(a)apache.org (Yuri Zelikov)
- *
- */
- public static void copyWavelet(final Blip fromBlip, final Blip toBlip) {
- for (final BlipContent blipContent : fromBlip.all().values()) {
- toBlip.append(blipContent);
- }
- // Deep copy annotations
- for (final Annotation annotation : fromBlip.getAnnotations()) {
- final Range range = annotation.getRange();
- try {
- toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(),
- annotation.getValue());
- } catch (final IndexOutOfBoundsException e) {
- // Don't copy faulty annotations
- }
- }
- }
-
- public static void copyWaveletElements(final Blip fromBlip, final Blip toBlip) {
- // Deep copy form elements.
- // DocumentModifyService don't permit this:
- // "Can't insert other elements than text and gadgets at the moment");
- for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) {
- final ElementType type = entry.getValue().getType();
- Element result = null;
- if (FormElement.getFormElementTypes().contains(type)) {
- result = new FormElement(type, entry.getValue().getProperties());
- } else if (type == ElementType.GADGET) {
- result = new Gadget(entry.getValue().getProperties());
- } else if (type == ElementType.IMAGE) {
- result = new Image(entry.getValue().getProperties());
- } else if (type == ElementType.LINE) {
- result = new Line(entry.getValue().getProperties());
- } else {
- result = new Element(type, entry.getValue().getProperties());
- }
- toBlip.append(result);
- }
- }
-
- private final ConversationUtil conversationUtil;
- private final EventDataConverterManager converterManager;
- private final String domain;
- private final OperationServiceRegistry operationRegistry;
- private final ParticipantUtils participantUtils;
- private final WaveletProvider waveletProvider;
- private final WaveRenderer waveRenderer;
-
- @Inject
- public KuneWaveManagerDefault(final EventDataConverterManager converterManager,
- @Named("DataApiRegistry") final OperationServiceRegistry operationRegistry,
- final WaveletProvider waveletProvider, final ConversationUtil conversationUtil,
- final ParticipantUtils participantUtils, final WaveRenderer waveRenderer,
- @Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain) {
- this.converterManager = converterManager;
- this.waveletProvider = waveletProvider;
- this.conversationUtil = conversationUtil;
- this.operationRegistry = operationRegistry;
- this.participantUtils = participantUtils;
- this.waveRenderer = waveRenderer;
- this.domain = domain;
- }
-
- @Override
- public void addGadget(final WaveRef waveName, final String author, final String gadgetUrl) {
- // See DocumentModifyServiceTest
- final List<Element> elementsIn = Lists.newArrayListWithCapacity(1);
- final Map<String, String> properties = Maps.newHashMap();
- properties.put(Gadget.URL, gadgetUrl);
- properties.put(Gadget.AUTHOR, participantUtils.of(author).getAddress());
- final Gadget gadget = new Gadget(properties);
-
- elementsIn.add(gadget);
- final Wavelet wavelet = fetchWave(waveName, author);
- final OperationQueue opQueue = new OperationQueue();
- final Blip rootBlip = wavelet.getRootBlip();
-
- opQueue.modifyDocument(rootBlip).addParameter(
- Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction(ModifyHow.INSERT, NO_VALUES,
- NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false)));
- opQueue.modifyDocument(rootBlip).addParameter(Parameter.of(ParamsProperty.INDEX, 1));
- doOperation(author, opQueue, "add gadget");
- }
-
- @Override
- public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdds,
- final String... newLocalParticipants) {
- final Wavelet wavelet = fetchWave(waveName, author);
- final OperationQueue opQueue = new OperationQueue();
-
- for (final String newLocalParticipant : newLocalParticipants) {
- final String newPartWithDomain = participantUtils.of(newLocalParticipant).toString();
- boolean mustAdd = true;
- for (final String current : wavelet.getParticipants()) {
- if (current.equals(newPartWithDomain)) {
- // Current user is a participant already (issue #73)
- mustAdd = false;
- break;
- }
- }
- if (mustAdd) {
- opQueue.addParticipantToWavelet(wavelet, newPartWithDomain);
- }
- }
- if (opQueue.getPendingOperations().size() > 0) {
- final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds
- : author;
- doOperation(whoAdd, opQueue, "add participant");
- }
- }
-
- @Override
- public WaveRef createWave(final String message, final ParticipantId... participants) {
- return createWave(NO_TITLE, message, participants);
- }
-
- @Override
- public WaveRef createWave(@Nonnull final String title, final String message,
- @Nonnull final ParticipantId... participantsArray) {
- return createWave(title, message, WITHOUT_GADGET, participantsArray);
- }
-
- @Override
- public WaveRef createWave(@Nonnull final String title, final String message,
- final String waveIdToCopy, final URL gadgetUrl, @Nonnull final ParticipantId... participantsArray) {
- String newWaveId = null;
- String newWaveletId = null;
- final Set<String> participants = new HashSet<String>();
- for (final ParticipantId participant : participantsArray) {
- participants.add(participant.toString());
- }
- final ParticipantId user = participantsArray[0];
- final OperationQueue opQueue = new OperationQueue();
- final Wavelet newWavelet = opQueue.createWavelet(domain, participants);
- opQueue.setTitleOfWavelet(newWavelet, title);
- final Blip rootBlip = newWavelet.getRootBlip();
- rootBlip.append(new com.google.wave.api.Markup(message).getText());
-
- if (waveIdToCopy != NO_WAVE_TO_COPY) {
- try {
- WaveId copyWaveId;
- copyWaveId = WaveId.ofChecked(domain, waveIdToCopy);
- final Wavelet waveletToCopy = fetchWave(copyWaveId, WaveletId.of(domain, "conv+root"),
- participantsArray[0].toString());
- if (waveletToCopy != null) {
- copyWavelet(waveletToCopy.getRootBlip(), rootBlip);
- }
- } catch (final InvalidIdException e) {
- LOG.error("Error copying wave content", e);
- } catch (final DefaultException e2) {
- LOG.error("Error copying wave content", e2);
- }
- }
-
- if (gadgetUrl != WITHOUT_GADGET) {
- final Gadget gadget = new Gadget(gadgetUrl.toString());
- rootBlip.append(gadget);
- }
-
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- for (final OperationRequest req : opQueue.getPendingOperations()) {
- OperationUtil.executeOperation(req, operationRegistry, context, user);
- final String reqId = req.getId();
- final JsonRpcResponse response = context.getResponse(reqId);
- if (response != null) {
- if (response.isError()) {
- onFailure(context.getResponse(reqId).getErrorMessage());
- } else {
- final Object responseWaveId = response.getData().get(ParamsProperty.WAVE_ID);
- final Object responseWaveletId = response.getData().get(ParamsProperty.WAVELET_ID);
- if (responseWaveId != null && responseWaveletId != null) {
- // This is serialized use
- // ApiIdSerializer.instance().deserialiseWaveId (see
- // WaveService)
- newWaveId = (String) responseWaveId;
- newWaveletId = (String) responseWaveletId;
- }
- }
- }
- }
- OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
- @Override
- public void onFailure(final String arg0) {
- KuneWaveManagerDefault.this.onFailure("Wave creation failed, onFailure: " + arg0);
- }
-
- @Override
- public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
- LOG.info("Wave creation success: " + arg1);
- }
- });
- LOG.info("WaveId: " + newWaveId + " waveletId: " + newWaveletId);
- WaveRef wavename;
- try {
- wavename = WaveRef.of(ApiIdSerializer.instance().deserialiseWaveId(newWaveId),
- ApiIdSerializer.instance().deserialiseWaveletId(newWaveletId));
- } catch (final InvalidIdException e) {
- throw new DefaultException("Error getting wave id");
- }
- return wavename;
- }
-
- @Override
- public WaveRef createWave(@Nonnull final String title, final String message, final URL gadgetUrl,
- @Nonnull final ParticipantId... participantsArray) {
- return createWave(title, message, NO_WAVE_TO_COPY, gadgetUrl, participantsArray);
- }
-
- @Override
- public void delParticipants(final WaveRef waveName, final String whoDel, final String... participants) {
- final Wavelet wavelet = fetchWave(waveName, whoDel);
- final OperationQueue opQueue = new OperationQueue();
-
- for (final String participant : participants) {
- final String partWithDomain = participantUtils.of(participant).toString();
- boolean mustDel = false;
- for (final String current : wavelet.getParticipants()) {
- if (current.equals(partWithDomain)) {
- mustDel = true;
- break;
- }
- }
- if (mustDel) {
- opQueue.removeParticipantFromWavelet(wavelet, partWithDomain);
- }
- }
- if (opQueue.getPendingOperations().size() > 0) {
- doOperation(whoDel, opQueue, "add participant");
- }
- }
-
- private void doOperation(final String author, final OperationQueue opQueue, final String logComment) {
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- final OperationRequest request = opQueue.getPendingOperations().get(0);
- OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
- final String reqId = request.getId();
- final JsonRpcResponse response = context.getResponse(reqId);
- if (response != null && response.isError()) {
- onFailure(context.getResponse(reqId).getErrorMessage());
- }
- OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
- @Override
- public void onFailure(final String arg0) {
- KuneWaveManagerDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0);
- }
-
- @Override
- public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
- LOG.info("Wave " + logComment + " success: " + arg1);
- }
- });
- }
-
- public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue,
- final SubmitRequestListener listener) {
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- for (final OperationRequest req : opQueue.getPendingOperations()) {
- OperationUtil.executeOperation(req, operationRegistry, context, participantUtils.of(author));
- }
- OperationUtil.submitDeltas(context, waveletProvider, listener);
- }
-
- @Override
- public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) {
- final OperationQueue opQueue = new OperationQueue();
- opQueue.fetchWavelet(waveId, waveletId);
- Wavelet wavelet = null;
- final OperationContextImpl context = new OperationContextImpl(waveletProvider,
- converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
- final OperationRequest request = opQueue.getPendingOperations().get(0);
- OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
- final String reqId = request.getId();
- final JsonRpcResponse response = context.getResponse(reqId);
- if (response != null && response.isError()) {
- onFailure(context.getResponse(reqId).getErrorMessage());
- } else {
- // Duplicate code from WaveService
- final WaveletData waveletData = (WaveletData) response.getData().get(ParamsProperty.WAVELET_DATA);
- final Map<String, Blip> blips = new HashMap<String, Blip>();
- final Map<String, BlipThread> threads = new HashMap<String, BlipThread>();
- wavelet = Wavelet.deserialize(opQueue, blips, threads, waveletData);
-
- // Deserialize threads.
- @SuppressWarnings("unchecked")
- final Map<String, BlipThread> tempThreads = (Map<String, BlipThread>) response.getData().get(
- ParamsProperty.THREADS);
- for (final Map.Entry<String, BlipThread> entry : tempThreads.entrySet()) {
- final BlipThread thread = entry.getValue();
- threads.put(entry.getKey(),
- new BlipThread(thread.getId(), thread.getLocation(), thread.getBlipIds(), blips));
- }
-
- // Deserialize blips.
- @SuppressWarnings("unchecked")
- final Map<String, BlipData> blipDatas = (Map<String, BlipData>) response.getData().get(
- ParamsProperty.BLIPS);
- for (final Map.Entry<String, BlipData> entry : blipDatas.entrySet()) {
- blips.put(entry.getKey(), Blip.deserialize(opQueue, wavelet, entry.getValue()));
- }
- }
- return wavelet;
- }
-
- @Override
- public Wavelet fetchWave(final WaveRef waveName, final String author) {
- final WaveId waveId = waveName.getWaveId();
- final WaveletId waveletId = waveName.getWaveletId();
- return fetchWave(waveId, waveletId, author);
- }
-
- @Override
- public boolean isParticipant(final Wavelet wavelet, final String user) {
- return wavelet.getParticipants().contains(participantUtils.of(user).toString());
- }
-
- private void onFailure(final String message) {
- final String errorMsg = TextUtils.notEmpty(message) ? message : "Wave operation failed";
- LOG.error(errorMsg);
- throw new DefaultException(errorMsg);
- }
-
- @Override
- public String render(final Wavelet wavelet) {
- final ClientAction clientPage = waveRenderer.render(wavelet, 0);
- final String html = clientPage.getHtml();
- return html;
- }
-
- @Override
- public String render(final WaveRef waveRef, final String author) {
- return render(fetchWave(waveRef, author));
- }
-
- @Override
- public void setTitle(final WaveRef waveName, final String title, final String author) {
- final Wavelet wavelet = fetchWave(waveName, author);
- final OperationQueue opQueue = new OperationQueue();
- opQueue.setTitleOfWavelet(wavelet, title);
- doOperation(author, opQueue, "set title");
- }
-
-}
Copied: trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java (from rev 1523, trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,61 @@
+/*
+ *
+ * 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.wave.server;
+
+import java.net.URL;
+
+import org.waveprotocol.wave.model.id.WaveId;
+import org.waveprotocol.wave.model.id.WaveletId;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import com.google.wave.api.Wavelet;
+
+public interface KuneWaveService {
+ public static final URL WITHOUT_GADGET = null;
+
+ void addGadget(WaveRef waveName, String author, String gadgetUrl);
+
+ void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants);
+
+ WaveRef createWave(String message, ParticipantId... participants);
+
+ WaveRef createWave(String title, String message, ParticipantId... participantsArray);
+
+ WaveRef createWave(String title, String message, String waveIdToCopy, URL gadgetUrl,
+ ParticipantId... participantsArray);
+
+ WaveRef createWave(String title, String message, URL gadgetUrl, ParticipantId... participantsArray);
+
+ void delParticipants(WaveRef waveName, String whoDel, String... participants);
+
+ Wavelet fetchWave(WaveId waveId, WaveletId waveletId, String author);
+
+ Wavelet fetchWave(WaveRef waveRef, String author);
+
+ boolean isParticipant(Wavelet wavelet, String user);
+
+ String render(Wavelet wavelet);
+
+ String render(WaveRef waveRef, String author);
+
+ void setTitle(WaveRef waveName, String title, String author);
+
+}
Copied: trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java (from rev 1523, trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java)
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,446 @@
+/*
+ *
+ * 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.wave.server;
+
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.waveprotocol.box.server.CoreSettings;
+import org.waveprotocol.box.server.robots.OperationContextImpl;
+import org.waveprotocol.box.server.robots.OperationServiceRegistry;
+import org.waveprotocol.box.server.robots.util.ConversationUtil;
+import org.waveprotocol.box.server.robots.util.OperationUtil;
+import org.waveprotocol.box.server.waveserver.WaveletProvider;
+import org.waveprotocol.box.server.waveserver.WaveletProvider.SubmitRequestListener;
+import org.waveprotocol.wave.model.id.InvalidIdException;
+import org.waveprotocol.wave.model.id.WaveId;
+import org.waveprotocol.wave.model.id.WaveletId;
+import org.waveprotocol.wave.model.version.HashedVersion;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.errors.DefaultException;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+import com.google.wave.api.Annotation;
+import com.google.wave.api.ApiIdSerializer;
+import com.google.wave.api.Blip;
+import com.google.wave.api.BlipContent;
+import com.google.wave.api.BlipData;
+import com.google.wave.api.BlipThread;
+import com.google.wave.api.Element;
+import com.google.wave.api.ElementType;
+import com.google.wave.api.FormElement;
+import com.google.wave.api.Gadget;
+import com.google.wave.api.Image;
+import com.google.wave.api.JsonRpcConstant.ParamsProperty;
+import com.google.wave.api.JsonRpcResponse;
+import com.google.wave.api.Line;
+import com.google.wave.api.OperationQueue;
+import com.google.wave.api.OperationRequest;
+import com.google.wave.api.OperationRequest.Parameter;
+import com.google.wave.api.ProtocolVersion;
+import com.google.wave.api.Range;
+import com.google.wave.api.Wavelet;
+import com.google.wave.api.data.converter.EventDataConverterManager;
+import com.google.wave.api.impl.DocumentModifyAction;
+import com.google.wave.api.impl.DocumentModifyAction.BundledAnnotation;
+import com.google.wave.api.impl.DocumentModifyAction.ModifyHow;
+import com.google.wave.api.impl.WaveletData;
+import com.google.wave.splash.rpc.ClientAction;
+import com.google.wave.splash.web.template.WaveRenderer;
+
+public class KuneWaveServiceDefault implements KuneWaveService {
+ public static final Log LOG = LogFactory.getLog(KuneWaveServiceDefault.class);
+
+ // See: DocumentModifyServiceTest
+ private static final String NO_ANNOTATION_KEY = null;
+ private static final List<BundledAnnotation> NO_BUNDLED_ANNOTATIONS = Collections.emptyList();
+ private static final String NO_TITLE = "";
+ private static final List<String> NO_VALUES = Collections.<String> emptyList();
+ private static final String NO_WAVE_TO_COPY = null;
+
+ /**
+ *
+ * Copy blips
+ *
+ * @param fromBlip
+ * @param toBlip
+ *
+ * @author yurize(a)apache.org (Yuri Zelikov)
+ *
+ */
+ public static void copyWavelet(final Blip fromBlip, final Blip toBlip) {
+ for (final BlipContent blipContent : fromBlip.all().values()) {
+ toBlip.append(blipContent);
+ }
+ // Deep copy annotations
+ for (final Annotation annotation : fromBlip.getAnnotations()) {
+ final Range range = annotation.getRange();
+ try {
+ toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(),
+ annotation.getValue());
+ } catch (final IndexOutOfBoundsException e) {
+ // Don't copy faulty annotations
+ }
+ }
+ }
+
+ public static void copyWaveletElements(final Blip fromBlip, final Blip toBlip) {
+ // Deep copy form elements.
+ // DocumentModifyService don't permit this:
+ // "Can't insert other elements than text and gadgets at the moment");
+ for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) {
+ final ElementType type = entry.getValue().getType();
+ Element result = null;
+ if (FormElement.getFormElementTypes().contains(type)) {
+ result = new FormElement(type, entry.getValue().getProperties());
+ } else if (type == ElementType.GADGET) {
+ result = new Gadget(entry.getValue().getProperties());
+ } else if (type == ElementType.IMAGE) {
+ result = new Image(entry.getValue().getProperties());
+ } else if (type == ElementType.LINE) {
+ result = new Line(entry.getValue().getProperties());
+ } else {
+ result = new Element(type, entry.getValue().getProperties());
+ }
+ toBlip.append(result);
+ }
+ }
+
+ private final ConversationUtil conversationUtil;
+ private final EventDataConverterManager converterManager;
+ private final String domain;
+ private final OperationServiceRegistry operationRegistry;
+ private final ParticipantUtils participantUtils;
+ private final WaveletProvider waveletProvider;
+ private final WaveRenderer waveRenderer;
+
+ @Inject
+ public KuneWaveServiceDefault(final EventDataConverterManager converterManager,
+ @Named("DataApiRegistry") final OperationServiceRegistry operationRegistry,
+ final WaveletProvider waveletProvider, final ConversationUtil conversationUtil,
+ final ParticipantUtils participantUtils, final WaveRenderer waveRenderer,
+ @Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain) {
+ this.converterManager = converterManager;
+ this.waveletProvider = waveletProvider;
+ this.conversationUtil = conversationUtil;
+ this.operationRegistry = operationRegistry;
+ this.participantUtils = participantUtils;
+ this.waveRenderer = waveRenderer;
+ this.domain = domain;
+ }
+
+ @Override
+ public void addGadget(final WaveRef waveName, final String author, final String gadgetUrl) {
+ // See DocumentModifyServiceTest
+ final List<Element> elementsIn = Lists.newArrayListWithCapacity(1);
+ final Map<String, String> properties = Maps.newHashMap();
+ properties.put(Gadget.URL, gadgetUrl);
+ properties.put(Gadget.AUTHOR, participantUtils.of(author).getAddress());
+ final Gadget gadget = new Gadget(properties);
+
+ elementsIn.add(gadget);
+ final Wavelet wavelet = fetchWave(waveName, author);
+ final OperationQueue opQueue = new OperationQueue();
+ final Blip rootBlip = wavelet.getRootBlip();
+
+ opQueue.modifyDocument(rootBlip).addParameter(
+ Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction(ModifyHow.INSERT, NO_VALUES,
+ NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false)));
+ opQueue.modifyDocument(rootBlip).addParameter(Parameter.of(ParamsProperty.INDEX, 1));
+ doOperation(author, opQueue, "add gadget");
+ }
+
+ @Override
+ public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdds,
+ final String... newLocalParticipants) {
+ final Wavelet wavelet = fetchWave(waveName, author);
+ final OperationQueue opQueue = new OperationQueue();
+
+ for (final String newLocalParticipant : newLocalParticipants) {
+ final String newPartWithDomain = participantUtils.of(newLocalParticipant).toString();
+ boolean mustAdd = true;
+ for (final String current : wavelet.getParticipants()) {
+ if (current.equals(newPartWithDomain)) {
+ // Current user is a participant already (issue #73)
+ mustAdd = false;
+ break;
+ }
+ }
+ if (mustAdd) {
+ opQueue.addParticipantToWavelet(wavelet, newPartWithDomain);
+ }
+ }
+ if (opQueue.getPendingOperations().size() > 0) {
+ final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds
+ : author;
+ doOperation(whoAdd, opQueue, "add participant");
+ }
+ }
+
+ @Override
+ public WaveRef createWave(final String message, final ParticipantId... participants) {
+ return createWave(NO_TITLE, message, participants);
+ }
+
+ @Override
+ public WaveRef createWave(@Nonnull final String title, final String message,
+ @Nonnull final ParticipantId... participantsArray) {
+ return createWave(title, message, WITHOUT_GADGET, participantsArray);
+ }
+
+ @Override
+ public WaveRef createWave(@Nonnull final String title, final String message,
+ final String waveIdToCopy, final URL gadgetUrl, @Nonnull final ParticipantId... participantsArray) {
+ String newWaveId = null;
+ String newWaveletId = null;
+ final Set<String> participants = new HashSet<String>();
+ for (final ParticipantId participant : participantsArray) {
+ participants.add(participant.toString());
+ }
+ final ParticipantId user = participantsArray[0];
+ final OperationQueue opQueue = new OperationQueue();
+ final Wavelet newWavelet = opQueue.createWavelet(domain, participants);
+ opQueue.setTitleOfWavelet(newWavelet, title);
+ final Blip rootBlip = newWavelet.getRootBlip();
+ rootBlip.append(new com.google.wave.api.Markup(message).getText());
+
+ if (waveIdToCopy != NO_WAVE_TO_COPY) {
+ try {
+ WaveId copyWaveId;
+ copyWaveId = WaveId.ofChecked(domain, waveIdToCopy);
+ final Wavelet waveletToCopy = fetchWave(copyWaveId, WaveletId.of(domain, "conv+root"),
+ participantsArray[0].toString());
+ if (waveletToCopy != null) {
+ copyWavelet(waveletToCopy.getRootBlip(), rootBlip);
+ }
+ } catch (final InvalidIdException e) {
+ LOG.error("Error copying wave content", e);
+ } catch (final DefaultException e2) {
+ LOG.error("Error copying wave content", e2);
+ }
+ }
+
+ if (gadgetUrl != WITHOUT_GADGET) {
+ final Gadget gadget = new Gadget(gadgetUrl.toString());
+ rootBlip.append(gadget);
+ }
+
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ for (final OperationRequest req : opQueue.getPendingOperations()) {
+ OperationUtil.executeOperation(req, operationRegistry, context, user);
+ final String reqId = req.getId();
+ final JsonRpcResponse response = context.getResponse(reqId);
+ if (response != null) {
+ if (response.isError()) {
+ onFailure(context.getResponse(reqId).getErrorMessage());
+ } else {
+ final Object responseWaveId = response.getData().get(ParamsProperty.WAVE_ID);
+ final Object responseWaveletId = response.getData().get(ParamsProperty.WAVELET_ID);
+ if (responseWaveId != null && responseWaveletId != null) {
+ // This is serialized use
+ // ApiIdSerializer.instance().deserialiseWaveId (see
+ // WaveService)
+ newWaveId = (String) responseWaveId;
+ newWaveletId = (String) responseWaveletId;
+ }
+ }
+ }
+ }
+ OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
+ @Override
+ public void onFailure(final String arg0) {
+ KuneWaveServiceDefault.this.onFailure("Wave creation failed, onFailure: " + arg0);
+ }
+
+ @Override
+ public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
+ LOG.info("Wave creation success: " + arg1);
+ }
+ });
+ LOG.info("WaveId: " + newWaveId + " waveletId: " + newWaveletId);
+ WaveRef wavename;
+ try {
+ wavename = WaveRef.of(ApiIdSerializer.instance().deserialiseWaveId(newWaveId),
+ ApiIdSerializer.instance().deserialiseWaveletId(newWaveletId));
+ } catch (final InvalidIdException e) {
+ throw new DefaultException("Error getting wave id");
+ }
+ return wavename;
+ }
+
+ @Override
+ public WaveRef createWave(@Nonnull final String title, final String message, final URL gadgetUrl,
+ @Nonnull final ParticipantId... participantsArray) {
+ return createWave(title, message, NO_WAVE_TO_COPY, gadgetUrl, participantsArray);
+ }
+
+ @Override
+ public void delParticipants(final WaveRef waveName, final String whoDel, final String... participants) {
+ final Wavelet wavelet = fetchWave(waveName, whoDel);
+ final OperationQueue opQueue = new OperationQueue();
+
+ for (final String participant : participants) {
+ final String partWithDomain = participantUtils.of(participant).toString();
+ boolean mustDel = false;
+ for (final String current : wavelet.getParticipants()) {
+ if (current.equals(partWithDomain)) {
+ mustDel = true;
+ break;
+ }
+ }
+ if (mustDel) {
+ opQueue.removeParticipantFromWavelet(wavelet, partWithDomain);
+ }
+ }
+ if (opQueue.getPendingOperations().size() > 0) {
+ doOperation(whoDel, opQueue, "add participant");
+ }
+ }
+
+ private void doOperation(final String author, final OperationQueue opQueue, final String logComment) {
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ final OperationRequest request = opQueue.getPendingOperations().get(0);
+ OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
+ final String reqId = request.getId();
+ final JsonRpcResponse response = context.getResponse(reqId);
+ if (response != null && response.isError()) {
+ onFailure(context.getResponse(reqId).getErrorMessage());
+ }
+ OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
+ @Override
+ public void onFailure(final String arg0) {
+ KuneWaveServiceDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0);
+ }
+
+ @Override
+ public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
+ LOG.info("Wave " + logComment + " success: " + arg1);
+ }
+ });
+ }
+
+ public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue,
+ final SubmitRequestListener listener) {
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ for (final OperationRequest req : opQueue.getPendingOperations()) {
+ OperationUtil.executeOperation(req, operationRegistry, context, participantUtils.of(author));
+ }
+ OperationUtil.submitDeltas(context, waveletProvider, listener);
+ }
+
+ @Override
+ public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) {
+ final OperationQueue opQueue = new OperationQueue();
+ opQueue.fetchWavelet(waveId, waveletId);
+ Wavelet wavelet = null;
+ final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+ converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+ final OperationRequest request = opQueue.getPendingOperations().get(0);
+ OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
+ final String reqId = request.getId();
+ final JsonRpcResponse response = context.getResponse(reqId);
+ if (response != null && response.isError()) {
+ onFailure(context.getResponse(reqId).getErrorMessage());
+ } else {
+ // Duplicate code from WaveService
+ final WaveletData waveletData = (WaveletData) response.getData().get(ParamsProperty.WAVELET_DATA);
+ final Map<String, Blip> blips = new HashMap<String, Blip>();
+ final Map<String, BlipThread> threads = new HashMap<String, BlipThread>();
+ wavelet = Wavelet.deserialize(opQueue, blips, threads, waveletData);
+
+ // Deserialize threads.
+ @SuppressWarnings("unchecked")
+ final Map<String, BlipThread> tempThreads = (Map<String, BlipThread>) response.getData().get(
+ ParamsProperty.THREADS);
+ for (final Map.Entry<String, BlipThread> entry : tempThreads.entrySet()) {
+ final BlipThread thread = entry.getValue();
+ threads.put(entry.getKey(),
+ new BlipThread(thread.getId(), thread.getLocation(), thread.getBlipIds(), blips));
+ }
+
+ // Deserialize blips.
+ @SuppressWarnings("unchecked")
+ final Map<String, BlipData> blipDatas = (Map<String, BlipData>) response.getData().get(
+ ParamsProperty.BLIPS);
+ for (final Map.Entry<String, BlipData> entry : blipDatas.entrySet()) {
+ blips.put(entry.getKey(), Blip.deserialize(opQueue, wavelet, entry.getValue()));
+ }
+ }
+ return wavelet;
+ }
+
+ @Override
+ public Wavelet fetchWave(final WaveRef waveName, final String author) {
+ final WaveId waveId = waveName.getWaveId();
+ final WaveletId waveletId = waveName.getWaveletId();
+ return fetchWave(waveId, waveletId, author);
+ }
+
+ @Override
+ public boolean isParticipant(final Wavelet wavelet, final String user) {
+ return wavelet.getParticipants().contains(participantUtils.of(user).toString());
+ }
+
+ private void onFailure(final String message) {
+ final String errorMsg = TextUtils.notEmpty(message) ? message : "Wave operation failed";
+ LOG.error(errorMsg);
+ throw new DefaultException(errorMsg);
+ }
+
+ @Override
+ public String render(final Wavelet wavelet) {
+ final ClientAction clientPage = waveRenderer.render(wavelet, 0);
+ final String html = clientPage.getHtml();
+ return html;
+ }
+
+ @Override
+ public String render(final WaveRef waveRef, final String author) {
+ return render(fetchWave(waveRef, author));
+ }
+
+ @Override
+ public void setTitle(final WaveRef waveName, final String title, final String author) {
+ final Wavelet wavelet = fetchWave(waveName, author);
+ final OperationQueue opQueue = new OperationQueue();
+ opQueue.setTitleOfWavelet(wavelet, title);
+ doOperation(author, opQueue, "set title");
+ }
+
+}
Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -1,18 +0,0 @@
-package cc.kune.wave.server;
-
-import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
-
-import cc.kune.core.client.errors.DefaultException;
-import cc.kune.domain.Content;
-
-public class KuneWaveUtils {
- public static WaveRef getWaveRef(final Content content) {
- try {
- return JavaWaverefEncoder.decodeWaveRefFromPath(String.valueOf(content.getWaveId()));
- } catch (final InvalidWaveRefException e) {
- throw new DefaultException("Error getting the wave");
- }
- }
-}
Added: trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveUtils.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,22 @@
+package cc.kune.wave.server;
+
+import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
+
+import cc.kune.core.client.errors.DefaultException;
+import cc.kune.domain.Content;
+
+public class KuneWaveUtils {
+ public static String getUrl(final WaveRef waveref) {
+ return JavaWaverefEncoder.encodeToUriPathSegment(waveref);
+ }
+
+ public static WaveRef getWaveRef(final Content content) {
+ try {
+ return JavaWaverefEncoder.decodeWaveRefFromPath(String.valueOf(content.getWaveId()));
+ } catch (final InvalidWaveRefException e) {
+ throw new DefaultException("Error getting the wave");
+ }
+ }
+}
Modified: trunk/src/main/java/cc/kune/wave/server/ParticipantUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/ParticipantUtils.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/java/cc/kune/wave/server/ParticipantUtils.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -19,12 +19,16 @@
*/
package cc.kune.wave.server;
+import java.util.Iterator;
+import java.util.Set;
+
import org.waveprotocol.box.server.CoreSettings;
import org.waveprotocol.wave.model.wave.InvalidParticipantAddress;
import org.waveprotocol.wave.model.wave.ParticipantId;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.properties.KuneBasicProperties;
+import cc.kune.domain.Group;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -33,33 +37,42 @@
@Singleton
public class ParticipantUtils {
- private final String domain;
- private final ParticipantId superAdmin;
+ private final String domain;
+ private final ParticipantId superAdmin;
- @Inject
- public ParticipantUtils((a)Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain,
- final KuneBasicProperties databaseProperties) throws InvalidParticipantAddress {
- this.domain = domain;
- superAdmin = ofImpl(databaseProperties.getAdminShortName());
- }
+ @Inject
+ public ParticipantUtils((a)Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain,
+ final KuneBasicProperties databaseProperties) throws InvalidParticipantAddress {
+ this.domain = domain;
+ superAdmin = ofImpl(databaseProperties.getAdminShortName());
+ }
- public ParticipantId getSuperAdmin() {
- return superAdmin;
- }
+ public ParticipantId getSuperAdmin() {
+ return superAdmin;
+ }
- public ParticipantId of(final String username) {
- return ofImpl(username);
+ public ParticipantId[] listFrom(final Set<Group> list) {
+ final ParticipantId[] array = new ParticipantId[list.size()];
+ final Iterator<Group> iterator = list.iterator();
+ for (int i = 0; i < list.size(); i++) {
+ array[i] = of(iterator.next().getShortName());
}
+ return array;
+ }
- private ParticipantId ofImpl(final String username) {
- try {
- if (username.contains(ParticipantId.DOMAIN_PREFIX)) {
- return ParticipantId.of(username);
- } else {
- return ParticipantId.of(username + ParticipantId.DOMAIN_PREFIX + domain);
- }
- } catch (final InvalidParticipantAddress e) {
- throw new DefaultException("Error getting Wave participant Id");
- }
+ public ParticipantId of(final String username) {
+ return ofImpl(username);
+ }
+
+ private ParticipantId ofImpl(final String username) {
+ try {
+ if (username.contains(ParticipantId.DOMAIN_PREFIX)) {
+ return ParticipantId.of(username);
+ } else {
+ return ParticipantId.of(username + ParticipantId.DOMAIN_PREFIX + domain);
+ }
+ } catch (final InvalidParticipantAddress e) {
+ throw new DefaultException("Error getting Wave participant Id");
}
+ }
}
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/main/resources/kune.properties 2011-09-20 14:28:24 UTC (rev 1524)
@@ -29,7 +29,7 @@
kune.chat.domain = localhost
kune.chat.roomHost = rooms.localhost
-### Feedback syste
+### Feedback system
kune.feedback.enabled = true
# List of participants to give feedback, comma-separated
kune.feedback.to = admin
@@ -98,7 +98,8 @@
kune.upload.location = /var/lib/kune/uploads/
kune.upload.maxfilesizeinmegas = 10
kune.upload.maxfilesizeinks = 10000000
-kune.upload.delayfortest = 50
+# to test in development phase, you can use values as 50
+kune.upload.delayfortest = 0
### Gallery options
kune.upload.gallerypermittedextensions = jpg,jpeg,png,gif,bmp,svg,avi,mpg,mpeg,ogg,mov,tif,tiff,mp3,wav
Deleted: trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java 2011-09-20 01:32:58 UTC (rev 1523)
+++ trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -1,189 +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.wave.server;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.net.URL;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-
-import cc.kune.core.client.errors.DefaultException;
-import cc.kune.core.server.integration.IntegrationTest;
-import cc.kune.core.server.integration.IntegrationTestHelper;
-
-import com.google.inject.Inject;
-import com.google.wave.api.Wavelet;
-
-public class KuneWaveManagerDefaultTest extends IntegrationTest {
-
- private static final String MESSAGE = "testing";
- private static final String NEW_PARTICIPANT = "newparti";
- private static final String RICHTEXT_MESSAGE = "<b>" + MESSAGE + "</b>";
- private static final String TEST_GADGET = "http://wave-api.appspot.com/public/gadgets/areyouin/gadget.xml";
- private static final String TITLE = "title";
- private static final String TITLENEW = "titleNew";
- @Inject
- KuneWaveManager manager;
- @Inject
- ParticipantUtils participantUtils;
-
- @Test
- public void addAndRemoveParticipant() throws IOException {
- doLogin();
- final String whoDels = getSiteAdminShortName();
- final WaveRef waveletName = createTestWave();
- assertNotNull(waveletName);
- manager.addParticipants(waveletName, getSiteAdminShortName(), whoDels, NEW_PARTICIPANT);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchWavelet);
- assertEquals(2, fetchWavelet.getParticipants().size());
- assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
- assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
- manager.delParticipants(waveletName, whoDels, NEW_PARTICIPANT);
- final Wavelet fetchDelWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchDelWavelet);
- assertEquals(1, fetchDelWavelet.getParticipants().size());
- assertTrue(manager.isParticipant(fetchDelWavelet, getSiteAdminShortName()));
- assertFalse(manager.isParticipant(fetchDelWavelet, NEW_PARTICIPANT));
- manager.addParticipants(waveletName, getSiteAdminShortName(), whoDels, NEW_PARTICIPANT);
- // Del all
- manager.delParticipants(waveletName, whoDels, getSiteAdminShortName(), NEW_PARTICIPANT);
- }
-
- @Test
- public void addGadget() throws DefaultException, IOException {
- doLogin();
- final WaveRef waveletName = createTestWave();
- assertNotNull(waveletName);
- manager.addGadget(waveletName, getSiteAdminShortName(), TEST_GADGET);
- }
-
- private void addParticipant(final String whoAdds) throws IOException {
- doLogin();
- final WaveRef waveletName = createTestWave();
- assertNotNull(waveletName);
- manager.addParticipants(waveletName, getSiteAdminShortName(), whoAdds, NEW_PARTICIPANT);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchWavelet);
- assertEquals(2, fetchWavelet.getParticipants().size());
- assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
- assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
- }
-
- @Test
- public void addParticipantTwice() throws IOException {
- doLogin();
- final WaveRef waveletName = createTestWave();
- assertNotNull(waveletName);
- manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
- NEW_PARTICIPANT);
- manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
- NEW_PARTICIPANT, NEW_PARTICIPANT);
- manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
- NEW_PARTICIPANT, NEW_PARTICIPANT, NEW_PARTICIPANT);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchWavelet);
- assertEquals(2, fetchWavelet.getParticipants().size());
- assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
- assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
- }
-
- @Test
- public void authorAddParticipant() throws DefaultException, IOException {
- final String whoAdds = getSiteAdminShortName();
- addParticipant(whoAdds);
- }
-
- @Before
- public void before() {
- new IntegrationTestHelper(this);
- }
-
- private WaveRef createTestWave() {
- return manager.createWave(TITLE, RICHTEXT_MESSAGE, participantUtils.of(getSiteAdminShortName()));
- }
-
- @Test
- public void createWave() throws DefaultException, IOException {
- doLogin();
- final WaveRef waveletName = manager.createWave(RICHTEXT_MESSAGE,
- participantUtils.of(getSiteAdminShortName()));
- assertNotNull(waveletName);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchWavelet);
- assertTrue(fetchWavelet.getRootBlip().getAnnotations().size() > 0);
- assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
- }
-
- @Test
- public void createWaveWithGadget() throws DefaultException, IOException {
- doLogin();
- final WaveRef waveletName = manager.createWave(TITLE, RICHTEXT_MESSAGE, new URL(TEST_GADGET),
- participantUtils.of(getSiteAdminShortName()));
- assertNotNull(waveletName);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchWavelet);
- assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
- }
-
- @Test
- public void createWaveWithTitle() throws DefaultException, IOException {
- doLogin();
- final WaveRef waveletName = createTestWave();
- assertNotNull(waveletName);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchWavelet);
- assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
- assertEquals(TITLE, fetchWavelet.getTitle());
- }
-
- @Test
- public void otherMemberAddParticipant() throws DefaultException, IOException {
- final String whoAdds = "otherMember";
- addParticipant(whoAdds);
- }
-
- @Test
- public void renderWave() throws DefaultException, IOException {
- doLogin();
- final WaveRef waveletName = createTestWave();
- assertNotNull(manager.render(waveletName, getSiteAdminShortName()));
- }
-
- @Test
- public void setTitle() throws DefaultException, IOException {
- doLogin();
- final WaveRef waveletName = createTestWave();
- assertNotNull(waveletName);
- manager.setTitle(waveletName, TITLENEW, getSiteAdminShortName());
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
- assertNotNull(fetchWavelet);
- assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
- assertEquals(TITLENEW, fetchWavelet.getTitle());
- }
-
-}
Copied: trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java (from rev 1511, trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java)
===================================================================
--- trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java 2011-09-20 14:28:24 UTC (rev 1524)
@@ -0,0 +1,189 @@
+/*
+ *
+ * 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.wave.server;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import cc.kune.core.client.errors.DefaultException;
+import cc.kune.core.server.integration.IntegrationTest;
+import cc.kune.core.server.integration.IntegrationTestHelper;
+
+import com.google.inject.Inject;
+import com.google.wave.api.Wavelet;
+
+public class KuneWaveServiceDefaultTest extends IntegrationTest {
+
+ private static final String MESSAGE = "testing";
+ private static final String NEW_PARTICIPANT = "newparti";
+ private static final String RICHTEXT_MESSAGE = "<b>" + MESSAGE + "</b>";
+ private static final String TEST_GADGET = "http://wave-api.appspot.com/public/gadgets/areyouin/gadget.xml";
+ private static final String TITLE = "title";
+ private static final String TITLENEW = "titleNew";
+ @Inject
+ KuneWaveService manager;
+ @Inject
+ ParticipantUtils participantUtils;
+
+ @Test
+ public void addAndRemoveParticipant() throws IOException {
+ doLogin();
+ final String whoDels = getSiteAdminShortName();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(waveletName);
+ manager.addParticipants(waveletName, getSiteAdminShortName(), whoDels, NEW_PARTICIPANT);
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertEquals(2, fetchWavelet.getParticipants().size());
+ assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
+ assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
+ manager.delParticipants(waveletName, whoDels, NEW_PARTICIPANT);
+ final Wavelet fetchDelWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchDelWavelet);
+ assertEquals(1, fetchDelWavelet.getParticipants().size());
+ assertTrue(manager.isParticipant(fetchDelWavelet, getSiteAdminShortName()));
+ assertFalse(manager.isParticipant(fetchDelWavelet, NEW_PARTICIPANT));
+ manager.addParticipants(waveletName, getSiteAdminShortName(), whoDels, NEW_PARTICIPANT);
+ // Del all
+ manager.delParticipants(waveletName, whoDels, getSiteAdminShortName(), NEW_PARTICIPANT);
+ }
+
+ @Test
+ public void addGadget() throws DefaultException, IOException {
+ doLogin();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(waveletName);
+ manager.addGadget(waveletName, getSiteAdminShortName(), TEST_GADGET);
+ }
+
+ private void addParticipant(final String whoAdds) throws IOException {
+ doLogin();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(waveletName);
+ manager.addParticipants(waveletName, getSiteAdminShortName(), whoAdds, NEW_PARTICIPANT);
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertEquals(2, fetchWavelet.getParticipants().size());
+ assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
+ assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
+ }
+
+ @Test
+ public void addParticipantTwice() throws IOException {
+ doLogin();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(waveletName);
+ manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ NEW_PARTICIPANT);
+ manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ NEW_PARTICIPANT, NEW_PARTICIPANT);
+ manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ NEW_PARTICIPANT, NEW_PARTICIPANT, NEW_PARTICIPANT);
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertEquals(2, fetchWavelet.getParticipants().size());
+ assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
+ assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
+ }
+
+ @Test
+ public void authorAddParticipant() throws DefaultException, IOException {
+ final String whoAdds = getSiteAdminShortName();
+ addParticipant(whoAdds);
+ }
+
+ @Before
+ public void before() {
+ new IntegrationTestHelper(this);
+ }
+
+ private WaveRef createTestWave() {
+ return manager.createWave(TITLE, RICHTEXT_MESSAGE, participantUtils.of(getSiteAdminShortName()));
+ }
+
+ @Test
+ public void createWave() throws DefaultException, IOException {
+ doLogin();
+ final WaveRef waveletName = manager.createWave(RICHTEXT_MESSAGE,
+ participantUtils.of(getSiteAdminShortName()));
+ assertNotNull(waveletName);
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertTrue(fetchWavelet.getRootBlip().getAnnotations().size() > 0);
+ assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
+ }
+
+ @Test
+ public void createWaveWithGadget() throws DefaultException, IOException {
+ doLogin();
+ final WaveRef waveletName = manager.createWave(TITLE, RICHTEXT_MESSAGE, new URL(TEST_GADGET),
+ participantUtils.of(getSiteAdminShortName()));
+ assertNotNull(waveletName);
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
+ }
+
+ @Test
+ public void createWaveWithTitle() throws DefaultException, IOException {
+ doLogin();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(waveletName);
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
+ assertEquals(TITLE, fetchWavelet.getTitle());
+ }
+
+ @Test
+ public void otherMemberAddParticipant() throws DefaultException, IOException {
+ final String whoAdds = "otherMember";
+ addParticipant(whoAdds);
+ }
+
+ @Test
+ public void renderWave() throws DefaultException, IOException {
+ doLogin();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(manager.render(waveletName, getSiteAdminShortName()));
+ }
+
+ @Test
+ public void setTitle() throws DefaultException, IOException {
+ doLogin();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(waveletName);
+ manager.setTitle(waveletName, TITLENEW, getSiteAdminShortName());
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
+ assertEquals(TITLENEW, fetchWavelet.getTitle());
+ }
+
+}
1
0
Author: vjrj_
Date: 2011-09-20 03:32:58 +0200 (Tue, 20 Sep 2011)
New Revision: 1523
Added:
trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java
trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java
Modified:
trunk/script/i18n-db2gwt.sh
trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java
trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties
trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java
trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java
trunk/src/main/java/cc/kune/core/server/InitData.java
trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java
trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java
trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java
trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java
trunk/src/main/java/cc/kune/wave/client/WebClient.java
trunk/src/main/java/cc/kune/wave/server/KuneAgent.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
trunk/src/main/resources/kune.properties
Log:
NEW - # 79: I18n refactorization
http://kune.ourproject.org/issues/ticket/79
CLOSED - # 108: Send Feedback button
http://kune.ourproject.org/issues/ticket/108
Modified: trunk/script/i18n-db2gwt.sh
===================================================================
--- trunk/script/i18n-db2gwt.sh 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/script/i18n-db2gwt.sh 2011-09-20 01:32:58 UTC (rev 1523)
@@ -41,10 +41,13 @@
if [[ $J -eq 1 ]]
then
-mysql -B --skip-column-names --password="db4kune" -u kune kune_dev -e "$SEL" \
+mysql -B --skip-column-names --default-character-set=utf8 --password="db4kune" -u kune kune_dev -e "$SEL" \
| sed 's/ /ł/g' \
| awk -F "ł" '
BEGIN {
+ print "/**"
+ print " * Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly"
+ print " */"
print "public interface KuneConstants extends ConstantsWithLookup {"
}
{
@@ -69,6 +72,10 @@
| sed 's/ /ł/g' \
| awk -F "ł" '
BEGIN {
+ print "#"
+ print "# Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly"
+ print "#"
+ print
}
{
lang=$4
Modified: trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -22,6 +22,8 @@
import cc.kune.chat.client.ChatClient;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.SimpleResponseCallback;
import cc.kune.core.client.actions.RolAction;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
@@ -51,11 +53,23 @@
@Override
public void actionPerformed(final ActionEvent event) {
- final String subject = i18n.t("Chat about: [%s]", session.getContentState().getTitle());
- final StateToken token = session.getCurrentStateToken();
- chatClient.get().joinRoom(token.toString().replaceAll("\\.", "-"), subject,
- session.getCurrentUserInfo().getShortName());
- chatClient.get().show();
+ NotifyUser.askConfirmation(
+ i18n.t("Confirm, please:"),
+ i18n.t("This will open a specific chatroom to chat about this page or document (it's useful to chat with others about something while reading/modifing it). Are you sure?"),
+ new SimpleResponseCallback() {
+ @Override
+ public void onCancel() {
+ }
+
+ @Override
+ public void onSuccess() {
+ final String subject = i18n.t("Chat about: [%s]", session.getContentState().getTitle());
+ final StateToken token = session.getCurrentStateToken();
+ chatClient.get().joinRoom(token.toString().replaceAll("\\.", "-"), subject,
+ session.getCurrentUserInfo().getShortName());
+ chatClient.get().show();
+ }
+ });
}
}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -24,7 +24,6 @@
import java.util.MissingResourceException;
import cc.kune.common.client.log.Log;
-import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.utils.Location;
import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.WindowUtils;
@@ -64,7 +63,6 @@
@Override
public void onSuccess(final I18nLanguageDTO result) {
currentLang = result;
- NotifyUser.info("lang: " + result.getCode());
currentLanguageCode = currentLang.getCode();
session.setCurrentLanguage(currentLang);
i18nService.getLexicon(currentLang.getCode(), new AsyncCallback<HashMap<String, String>>() {
Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -1,5 +1,8 @@
package cc.kune.core.client.i18n;
+/**
+ * Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly
+ */
import com.google.gwt.i18n.client.ConstantsWithLookup;
public interface KuneConstants extends ConstantsWithLookup {
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-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties 2011-09-20 01:32:58 UTC (rev 1523)
@@ -1,3 +1,6 @@
+#
+# Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly
+#
addAsABuddienull = Añadir como colega
chatNull = Chat ;)
search = Buscar
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -74,6 +74,8 @@
void save(String user, StateToken token, String content) throws DefaultException;
+ String sendFeedback(String userHash, String title, String body);
+
ContentSimpleDTO setAsDefaultContent(String userHash, StateToken token);
I18nLanguageDTO setLanguage(String userHash, StateToken token, String languageCode)
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -77,6 +77,8 @@
void save(String user, StateToken token, String content, AsyncCallback<Void> asyncCallback);
+ void sendFeedback(String userHash, String title, String body, AsyncCallback<String> callback);
+
void setAsDefaultContent(String userHash, StateToken token,
AsyncCallback<ContentSimpleDTO> asyncCallback);
Modified: trunk/src/main/java/cc/kune/core/server/InitData.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -42,6 +42,7 @@
private License defaultLicense;
private String defaultWsTheme;
private List<ExtMediaDescrip> extMediaDescrips;
+ private boolean feedbackEnabled;
private String flvEmbedObject;
private String galleryPermittedExtensions;
private List<ToolSimple> groupTools;
@@ -180,6 +181,10 @@
return userTools;
}
+ public boolean isFeedbackEnabled() {
+ return feedbackEnabled;
+ }
+
public void setAviEmbedObject(final String aviEmbedObject) {
this.aviEmbedObject = aviEmbedObject;
}
@@ -216,6 +221,10 @@
this.extMediaDescrips = extMediaDescrips;
}
+ public void setFeedbackEnabled(final boolean feedbackEnabled) {
+ this.feedbackEnabled = feedbackEnabled;
+ }
+
public void setFlvEmbedObject(final String flvEmbedObject) {
this.flvEmbedObject = flvEmbedObject;
}
Modified: trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -46,7 +46,6 @@
private final ContainerManager containerManager;
private final ContentManager contentManager;
private final Log LOG = LogFactory.getLog(CreationServiceDefault.class);
-
private final ServerToolRegistry tools;
@Inject
Modified: trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -28,6 +28,8 @@
String CHAT_ROOM_HOST = "kune.chat.roomHost";
String CURRENT_CC_VERSION = "kune.currentccversion";
String DEFAULT_SITE_SHORT_NAME = "kune.default.site.shortName";
+ String FEEDBACK_ENABLED = "kune.feedback.enabled";
+ String FEEDBACK_TO = "kune.feedback.to";
String FLV_EMBEDED_OBJECT = "kune.media.flvembededobject";
String IMAGES_CROPSIZE = "kune.images.cropsize";
String IMAGES_ICONSIZE = "kune.images.iconsize";
@@ -63,6 +65,8 @@
String get(String key, String defaultValue);
+ boolean getBoolean(String key);
+
Integer getInteger(String key);
List<String> getList(String key);
Modified: trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -70,6 +70,13 @@
}
@Override
+ public boolean getBoolean(final String key) {
+ final Boolean value = config.getBoolean(key);
+ checkNull(key, value);
+ return value;
+ }
+
+ @Override
public Integer getInteger(final String key) {
final Integer value = config.getInt(key);
checkNull(key, value);
Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -19,10 +19,15 @@
*/
package cc.kune.core.server.rpc;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
import javax.persistence.NoResultException;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
+
import cc.kune.chat.server.ChatManager;
import cc.kune.core.client.errors.AccessViolationException;
import cc.kune.core.client.errors.ContentNotFoundException;
@@ -45,6 +50,7 @@
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.TagUserContentManager;
import cc.kune.core.server.mapper.Mapper;
+import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.server.state.StateContainer;
import cc.kune.core.server.state.StateContent;
import cc.kune.core.server.state.StateService;
@@ -65,6 +71,8 @@
import cc.kune.domain.Content;
import cc.kune.domain.Group;
import cc.kune.domain.User;
+import cc.kune.wave.server.KuneWaveManager;
+import cc.kune.wave.server.ParticipantUtils;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -78,7 +86,10 @@
private final CreationService creationService;
private final FinderService finderService;
private final GroupManager groupManager;
+ private final KuneProperties kuneProperties;
+ private final KuneWaveManager kuneWaveManager;
private final Mapper mapper;
+ private final ParticipantUtils participantUtils;
private final AccessRightsService rightsService;
private final StateService stateService;
private final TagUserContentManager tagManager;
@@ -90,7 +101,8 @@
final StateService stateService, final CreationService creationService,
final GroupManager groupManager, final ContentManager contentManager,
final ContainerManager containerManager, final TagUserContentManager tagManager,
- final Mapper mapper, final ChatManager chatManager) {
+ final Mapper mapper, final ChatManager chatManager, final KuneWaveManager kuneWaveManager,
+ final KuneProperties kuneProperties, final ParticipantUtils participantUtils) {
this.finderService = finderService;
this.userSessionProvider = userSessionProvider;
this.accessService = accessService;
@@ -103,6 +115,9 @@
this.tagManager = tagManager;
this.mapper = mapper;
this.chatManager = chatManager;
+ this.kuneWaveManager = kuneWaveManager;
+ this.kuneProperties = kuneProperties;
+ this.participantUtils = participantUtils;
}
@Override
@@ -436,6 +451,22 @@
@Override
@Authenticated
+ @Transactional
+ public String sendFeedback(final String userHash, final String title, final String body)
+ throws DefaultException {
+ final User user = getCurrentUser();
+ final List<String> participants = kuneProperties.getList(KuneProperties.FEEDBACK_TO);
+ participants.add(0, user.getShortName());
+ final List<ParticipantId> partIds = new ArrayList<ParticipantId>();
+ for (final String part : participants) {
+ partIds.add(participantUtils.of(part));
+ }
+ return JavaWaverefEncoder.encodeToUriPathSegment(kuneWaveManager.createWave(title, body,
+ partIds.toArray(new ParticipantId[0])));
+ }
+
+ @Override
+ @Authenticated
@Authorizated(accessRolRequired = AccessRol.Administrator)
@Transactional
public ContentSimpleDTO setAsDefaultContent(final String userHash, final StateToken token) {
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -152,6 +152,7 @@
data.setOggEmbedObject(kuneProperties.get(KuneProperties.OGG_EMBEDED_OBJECT));
data.setAviEmbedObject(kuneProperties.get(KuneProperties.AVI_EMBEDED_OBJECT));
data.setExtMediaDescrips(extMediaDescManager.getAll());
+ data.setFeedbackEnabled(kuneProperties.getBoolean(KuneProperties.FEEDBACK_ENABLED));
return data;
}
}
Modified: trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -35,6 +35,7 @@
private LicenseDTO defaultLicense;
private String defaultWsTheme;
private List<ExtMediaDescripDTO> extMediaDescrips;
+ private boolean feedbackEnabled;
private String flvEmbedObject;
private String galleryPermittedExtensions;
private List<ToolSimpleDTO> groupTools;
@@ -180,6 +181,10 @@
return getUserInfo() != null;
}
+ public boolean isFeedbackEnabled() {
+ return feedbackEnabled;
+ }
+
public void setAviEmbedObject(final String aviEmbedObject) {
this.aviEmbedObject = aviEmbedObject;
}
@@ -216,6 +221,10 @@
this.extMediaDescrips = extMediaDescrips;
}
+ public void setFeedbackEnabled(final boolean feedbackEnabled) {
+ this.feedbackEnabled = feedbackEnabled;
+ }
+
public void setFlvEmbedObject(final String flvEmbedObject) {
this.flvEmbedObject = flvEmbedObject;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -61,6 +61,8 @@
IsActionExtensible getSubheaderToolbar();
+ IsActionExtensible getToolsSouthToolbar();
+
ForIsWidget getUserSpace();
void selectGroupSpace();
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -95,6 +95,8 @@
private final ActionFlowPanel subheaderToolbar;
@UiField
TabLayoutPanel tabs;
+ private final ActionFlowPanel toolsSouthToolbar;
+
@UiField
FlowPanel userSpace;
@@ -110,9 +112,11 @@
footerToolbar = toolbarProv.get();
headerToolbar = toolbarProv.get();
subheaderToolbar = toolbarProv.get();
+ toolsSouthToolbar = toolbarProv.get();
getDocHeader().add(headerToolbar);
getDocSubheader().add(subheaderToolbar);
getDocFooter().add(footerToolbar);
+ getEntityToolsSouth().add(toolsSouthToolbar);
entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE);
// entityToolsSouth.setVisible(false);
mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces");
@@ -215,6 +219,11 @@
}
@Override
+ public IsActionExtensible getToolsSouthToolbar() {
+ return toolsSouthToolbar;
+ }
+
+ @Override
public ForIsWidget getUserSpace() {
return userSpace;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -23,13 +23,14 @@
import cc.kune.core.client.sitebar.search.SitebarSearchPanel;
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter;
import cc.kune.gspace.client.actions.ContentViewerOptionsMenu;
+import cc.kune.gspace.client.actions.GiveUsFeedbackBtn;
import cc.kune.gspace.client.actions.RenameAction;
import cc.kune.gspace.client.i18n.I18nTranslator;
import cc.kune.gspace.client.i18n.I18nTranslatorPanel;
import cc.kune.gspace.client.i18n.I18nTranslatorPresenter;
import cc.kune.gspace.client.i18n.I18nTranslatorPresenter.I18nTranslatorView;
+import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection;
import cc.kune.gspace.client.i18n.SiteOptionsI18nTranslatorAction;
-import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection;
import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
import cc.kune.gspace.client.licensewizard.LicenseWizard;
import cc.kune.gspace.client.licensewizard.LicenseWizardPanel;
@@ -184,6 +185,7 @@
// Actions
s(ContentViewerOptionsMenu.class);
s(RenameAction.class);
+ s(GiveUsFeedbackBtn.class);
// LicenseWizard
bindPresenter(LicenseWizardPresenter.class, LicenseWizardView.class, LicenseWizardPanel.class,
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -23,9 +23,10 @@
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter;
import cc.kune.core.client.state.Session;
+import cc.kune.gspace.client.actions.GiveUsFeedbackBtn;
import cc.kune.gspace.client.i18n.I18nToTranslateGridPanel;
+import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection;
import cc.kune.gspace.client.i18n.SiteOptionsI18nTranslatorAction;
-import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection;
import cc.kune.gspace.client.options.GroupOptions;
import cc.kune.gspace.client.options.GroupOptionsCollection;
import cc.kune.gspace.client.options.UserOptions;
@@ -67,6 +68,7 @@
final Provider<UserOptStyle> ups, final Provider<UserOptLogo> ul,
final Provider<UserOptTools> utc, final Provider<SitebarSearchPresenter> siteSearch,
final Provider<SiteOptionsI18nTranslatorAction> transAction,
+ final Provider<GiveUsFeedbackBtn> giveUsFeedback,
final Provider<I18nToTranslateGridPanel> toTrans,
final Provider<I18nTranslatorTabsCollection> gtranslator) {
@@ -102,6 +104,11 @@
// i18n
transAction.get();
gtranslator.get().add(toTrans);
+
+ // Feedback
+ if (event.getInitData().isFeedbackEnabled()) {
+ giveUsFeedback.get();
+ }
}
});
}
Added: trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -0,0 +1,69 @@
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.notify.NotifyLevel;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.SimpleResponseCallback;
+import cc.kune.core.client.auth.SignIn;
+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.SiteTokens;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.TokenUtils;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GiveUsFeedbackAction extends AbstractExtendedAction {
+
+ private final Provider<ContentServiceAsync> contentService;
+ private final I18nTranslationService i18n;
+ private final Session session;
+ private final Provider<SignIn> signIn;
+ private final StateManager stateManager;
+
+ @Inject
+ public GiveUsFeedbackAction(final Session session, final Provider<SignIn> signIn,
+ final StateManager stateManager, final I18nTranslationService i18n,
+ final Provider<ContentServiceAsync> contentService) {
+ this.session = session;
+ this.signIn = signIn;
+ this.stateManager = stateManager;
+ this.i18n = i18n;
+ this.contentService = contentService;
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ if (session.isLogged()) {
+ NotifyUser.askConfirmation(
+ i18n.t("Confirm, please:"),
+ i18n.t("Do you want to write us with some positive or negative feedback? This can help us to improve these services"),
+ new SimpleResponseCallback() {
+ @Override
+ public void onCancel() {
+ }
+
+ @Override
+ public void onSuccess() {
+ contentService.get().sendFeedback(session.getUserHash(),
+ i18n.t("Feedback of [%s]", session.getCurrentUser().getShortName()),
+ i18n.t("Edit and write here your feedback."), new AsyncCallbackSimple<String>() {
+ @Override
+ public void onSuccess(final String url) {
+ stateManager.gotoHistoryToken(url);
+ }
+ });
+ }
+ });
+ } else {
+ signIn.get().setErrorMessage(i18n.t("Sign in or create an account to give us feedback"),
+ NotifyLevel.info);
+ stateManager.gotoHistoryToken(TokenUtils.addRedirect(SiteTokens.SIGNIN,
+ session.getCurrentStateToken().toString()));
+ }
+ }
+}
Added: trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -0,0 +1,23 @@
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.GSpaceArmor;
+
+import com.google.inject.Inject;
+
+public class GiveUsFeedbackBtn extends ButtonDescriptor {
+
+ @Inject
+ public GiveUsFeedbackBtn(final GiveUsFeedbackAction action, final I18nTranslationService i18n,
+ final NavResources res, final GSpaceArmor armor) {
+ super(action);
+ withIcon(res.refresh());
+ withText(i18n.t("Give us feedback!"));
+ withToolTip(i18n.t("Write us with some feedback for help us to improve these services"));
+ withStyles("k-noborder, k-nobackcolor, k-no-backimage");
+ armor.getToolsSouthToolbar().add(this);
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -42,6 +42,7 @@
import cc.kune.gspace.client.actions.RenameAction;
import cc.kune.gspace.client.actions.RenameListener;
import cc.kune.gspace.client.tool.ContentViewer;
+import cc.kune.wave.client.WaveClientManager;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.HandlerRegistration;
@@ -96,7 +97,7 @@
public ContentViewerPresenter(final EventBus eventBus, final ContentViewerView view,
final StateManager stateManager, final ContentViewerProxy proxy, final Session session,
final ActionRegistryByType actionsRegistry, final Provider<RenameAction> renameAction,
- final PathToolbarUtils pathToolbarUtils) {
+ final PathToolbarUtils pathToolbarUtils, final WaveClientManager wavClientManager) {
super(eventBus, view, proxy);
this.session = session;
this.actionsRegistry = actionsRegistry;
@@ -109,7 +110,6 @@
}
});
session.onUserSignIn(true, new UserSignInHandler() {
-
@Override
public void onUserSignIn(final UserSignInEvent event) {
getView().signIn();
@@ -174,7 +174,8 @@
if (session.isLogged() && rights.isEditable()) {
if (stateContent.isParticipant()) {
// is already participant, show wave editor
- if (org.waveprotocol.box.webclient.client.Session.get().isLoggedIn()) {
+ final org.waveprotocol.box.webclient.client.Session waveSession = org.waveprotocol.box.webclient.client.Session.get();
+ if (waveSession != null && waveSession.isLoggedIn()) {
// final String typeId = stateContent.getTypeId();
// if (typeId.equals(BartersConstants.TYPE_BARTER)
// || typeId.equals(MeetingsConstants.TYPE_MEETING)) {
Modified: trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -19,6 +19,7 @@
*/
package cc.kune.wave.client;
+import cc.kune.common.client.log.Log;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
@@ -34,6 +35,8 @@
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsonUtils;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
import com.google.inject.Inject;
@@ -56,18 +59,24 @@
setUseSocketIO(result.useSocketIO());
setSessionJSON(JsonUtils.safeEval(result.getSessionJSON()));
setClientFlags(JsonUtils.safeEval(result.getClientFlags()));
- final ForIsWidget userSpace = wsArmor.getUserSpace();
- if (webClient == null) {
- if (userSpace.getWidgetCount() > 0) {
- userSpace.remove(0);
+ Log.info("Wave client session: " + result.getSessionJSON());
+ Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ final ForIsWidget userSpace = wsArmor.getUserSpace();
+ if (webClient == null) {
+ if (userSpace.getWidgetCount() > 0) {
+ userSpace.remove(0);
+ }
+ webClient = webclientView.get();
+ userSpace.add(webClient);
+ } else {
+ // this is done with the first webclient creation above
+ webClient.login();
+ webClient.asWidget().setVisible(true);
+ }
}
- webClient = webclientView.get();
- userSpace.add(webClient);
- } else {
- // this is done with the first webclient creation above
- webClient.login();
- webClient.asWidget().setVisible(true);
- }
+ });
}
});
}
@@ -91,14 +100,14 @@
}
private native void setClientFlags(JavaScriptObject object) /*-{
- $wnd.__client_flags = object;
- }-*/;
+ $wnd.__client_flags = object;
+ }-*/;
private native void setSessionJSON(JavaScriptObject object) /*-{
- $wnd.__session = object;
- }-*/;
+ $wnd.__session = object;
+ }-*/;
private native void setUseSocketIO(boolean use) /*-{
- $wnd.__useSocketIO = use;
- }-*/;
+ $wnd.__useSocketIO = use;
+ }-*/;
}
Modified: trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -32,14 +32,14 @@
*/
@Override
protected void configure() {
+ s(WebClientMock.class);
+ s(WebClient.class);
+ s(WaveClientProvider.class);
s(WaveClientManager.class);
s(WaveStatusIndicator.class);
eagle(WaveParts.class);
s(KuneWaveProfileManager.class);
s(InboxCountView.class, InboxCountPanel.class);
s(InboxCountPresenter.class);
- s(WaveClientProvider.class);
- s(WebClientMock.class);
- s(WebClient.class);
}
}
Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -25,6 +25,7 @@
import java.util.Date;
import java.util.logging.Logger;
+import org.apache.commons.lang.NotImplementedException;
import org.waveprotocol.box.webclient.client.ClientEvents;
import org.waveprotocol.box.webclient.client.ClientIdGenerator;
import org.waveprotocol.box.webclient.client.DebugMessagePanel;
@@ -32,7 +33,6 @@
import org.waveprotocol.box.webclient.client.RemoteViewServiceMultiplexer;
import org.waveprotocol.box.webclient.client.Session;
import org.waveprotocol.box.webclient.client.SimpleWaveStore;
-import org.waveprotocol.box.webclient.client.StagesProvider;
import org.waveprotocol.box.webclient.client.WaveWebSocketClient;
import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent;
import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler;
@@ -51,7 +51,6 @@
import org.waveprotocol.box.webclient.widget.frame.FramedPanel;
import org.waveprotocol.box.webclient.widget.loading.LoadingIndicator;
import org.waveprotocol.wave.client.account.ProfileManager;
-import org.waveprotocol.wave.client.account.impl.ProfileManagerImpl;
import org.waveprotocol.wave.client.common.safehtml.SafeHtml;
import org.waveprotocol.wave.client.common.safehtml.SafeHtmlBuilder;
import org.waveprotocol.wave.client.common.util.AsyncHolder.Accessor;
@@ -62,6 +61,7 @@
import org.waveprotocol.wave.model.wave.ParticipantId;
import org.waveprotocol.wave.model.waveref.WaveRef;
+import cc.kune.common.client.errors.UIException;
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.sitebar.spaces.Space;
@@ -81,15 +81,18 @@
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.SplitLayoutPanel;
import com.google.gwt.user.client.ui.UIObject;
import com.google.inject.Inject;
+import com.google.inject.Singleton;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
+@Singleton
public class WebClient extends Composite implements WaveClientView {
interface Binder extends UiBinder<DockLayoutPanel, WebClient> {
}
@@ -245,7 +248,7 @@
*/
@Inject
public WebClient(final EventBus eventBus, KuneWaveProfileManager profiles, InboxCountPresenter inboxCount, TokenMatcher tokenMatcher) {
-
+ // Window.alert("webclient! " + new Date());
this.eventBus = eventBus;
this.profiles = profiles;
this.inboxCount = inboxCount;
@@ -338,11 +341,11 @@
*/
// XXX check formatting wrt GPE
private native String getWebSocketBaseUrl(String moduleBase) /*-{
- return "ws" + /:\/\/[^\/]+/.exec(moduleBase)[0] + "/";
+ return "ws" + /:\/\/[^\/]+/.exec(moduleBase)[0] + "/";
}-*/;
private native boolean useSocketIO() /*-{
- return !!$wnd.__useSocketIO
+ return !!$wnd.__useSocketIO
}-*/;
/**
Modified: trunk/src/main/java/cc/kune/wave/server/KuneAgent.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -70,8 +70,8 @@
}
@Override
- public WaveRef createWave(final String message, final ParticipantId participant) {
- return createWave(NO_TITLE, message, participant);
+ public WaveRef createWave(final String message, final ParticipantId... participants) {
+ return createWave(NO_TITLE, message, participants);
}
@Override
Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -35,7 +35,7 @@
void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants);
- WaveRef createWave(String message, ParticipantId participants);
+ WaveRef createWave(String message, ParticipantId... participants);
WaveRef createWave(String title, String message, ParticipantId... participantsArray);
Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-09-20 01:32:58 UTC (rev 1523)
@@ -211,8 +211,8 @@
}
@Override
- public WaveRef createWave(final String message, final ParticipantId participant) {
- return createWave(NO_TITLE, message, participant);
+ public WaveRef createWave(final String message, final ParticipantId... participants) {
+ return createWave(NO_TITLE, message, participants);
}
@Override
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-09-19 20:25:07 UTC (rev 1522)
+++ trunk/src/main/resources/kune.properties 2011-09-20 01:32:58 UTC (rev 1523)
@@ -29,6 +29,11 @@
kune.chat.domain = localhost
kune.chat.roomHost = rooms.localhost
+### Feedback syste
+kune.feedback.enabled = true
+# List of participants to give feedback, comma-separated
+kune.feedback.to = admin
+
### Other params
# Reserved words to avoid it's use in the client side for user and group names
1
0
Author: vjrj_
Date: 2011-09-19 22:25:07 +0200 (Mon, 19 Sep 2011)
New Revision: 1522
Added:
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
Modified:
trunk/script/i18n-db2gwt.sh
trunk/src/main/java/cc/kune/Kune.gwt.xml
trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java
trunk/src/main/java/cc/kune/core/client/notify/confirm/UserConfirmPanel.java
trunk/src/main/java/cc/kune/core/client/rpcservices/UserService.java
trunk/src/main/java/cc/kune/core/client/rpcservices/UserServiceAsync.java
trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java
trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java
trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java
trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java
trunk/src/main/java/cc/kune/domain/I18nTranslation.java
trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java
trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java
Log:
NEW - # 79: I18n refactorization
http://kune.ourproject.org/issues/ticket/79
Modified: trunk/script/i18n-db2gwt.sh
===================================================================
--- trunk/script/i18n-db2gwt.sh 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/script/i18n-db2gwt.sh 2011-09-19 20:25:07 UTC (rev 1522)
@@ -7,7 +7,7 @@
echo "$0 -l en"
}
-while getopts “hl:” OPTION
+while getopts “hl:j” OPTION
do
case $OPTION in
h)
@@ -17,6 +17,9 @@
l)
L=$OPTARG
;;
+ j)
+ J=1
+ ;;
?)
usage
exit
@@ -29,6 +32,63 @@
usage
exit 1
fi
+if [[ $L = "en" ]]
+then
+ SEL="SELECT g.tr_key,g.tr_key,g.text,l.code,g.noteForTranslators FROM globalize_translations g, globalize_languages l where g.language_id = l.id AND l.code='en';"
+else
+ SEL="SELECT g.tr_key,p.tr_key,g.text,l.code,g.noteForTranslators FROM globalize_translations g, globalize_translations p, globalize_languages l where g.language_id = l.id AND l.code='$L' AND (g.parent_id = p.id OR g.parent_id = NULL) AND g.text != '';"
+fi
+if [[ $J -eq 1 ]]
+then
+mysql -B --skip-column-names --password="db4kune" -u kune kune_dev -e "$SEL" \
+| sed 's/ /ł/g' \
+| awk -F "ł" '
+BEGIN {
+ print "public interface KuneConstants extends ConstantsWithLookup {"
+}
+{
+ lang=$4
+ nt=$5
+ if (lang != "en") {
+ trkey=$2
+ trad=$3
+ } else {
+ trkey=$1
+ trad=$2
+ }
+ cmd="echo \" String \"`bin/convertI18nMsgToMethods.sh \""trkey" "nt"\"`\"();\""
+ result = system(cmd)
+}
+END {
+ print "}"
+}'
+else
+mysql -B --skip-column-names --password="db4kune" -u kune kune_dev -e "$SEL" \
+| sed 's/ /ł/g' \
+| awk -F "ł" '
+BEGIN {
+}
+{
+ lang=$4
+ nt=$5
+ if (lang != "en") {
+ trkey=$2
+ trad=$3
+ } else {
+ trkey=$1
+ trad=$2
+ }
+ #gsub(/\[/, "\\[", trkey)
+ #gsub(/\]/, "\\]", trkey)
+ #print trkey "--->" trad
+ cmd="echo `bin/convertI18nMsgToMethods.sh \""trkey" "nt"\"` = \""trad"\""
+ #print cmd
+ #exit
+ result = system(cmd)
+}
+END {
+}'
+fi
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-09-19 20:25:07 UTC (rev 1522)
@@ -2,6 +2,7 @@
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.0.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.0.1/distro-source/core/…">
<module rename-to="ws">
<inherits name="com.google.gwt.user.User" />
+ <inherits name="com.google.gwt.i18n.I18N"/>
<inherits name='com.google.gwt.logging.Logging' />
<inherits name="cc.kune.core.KuneCore" />
<inherits name="cc.kune.wave.KuneWave" />
@@ -53,9 +54,11 @@
<!-- For make CSS obfuscation more pretty -->
<set-configuration-property name="CssResource.style"
value="pretty" />
+ <!-- I18n ===================================================== -->
+ <extend-property name="locale" values="en" />
+ <extend-property name="locale" values="es" />
<!-- Hardcoded locale (to override emite italian support) ===== -->
- <extend-property name="locale" values="en" />
- <set-property name="locale" value="en" />
+ <!-- <set-property name="locale" value="en" /> -->
<!-- Hardcoded log level ====================================== -->
<!-- Turn off logging in wave -->
<set-property name="loglevel" value="none" />
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-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -157,7 +157,10 @@
@Override
public GuiActionDescrip get() {
final MenuItemDescriptor menuItem = new MenuItemDescriptor(action);
- menuItem.withText(descrip.getDescName()).withToolTip(descrip.getDescription());
+ // Warning: getDescription returns \n we have to replace this to
+ // spaces before use i18n in the tooltips (anyway tooltips are not
+ // working in menu items)
+ menuItem.withText(i18n.t(descrip.getDescName())).withToolTip(descrip.getDescription());
menuItem.setParent(TextUtils.notEmpty(path) ? submenu : menu, false);
return menuItem;
}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -21,8 +21,10 @@
import java.util.Date;
import java.util.HashMap;
+import java.util.MissingResourceException;
import cc.kune.common.client.log.Log;
+import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.utils.Location;
import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.WindowUtils;
@@ -41,14 +43,16 @@
private I18nLanguageDTO currentLang;
private String currentLanguageCode;
private final I18nServiceAsync i18nService;
+ private final KuneConstants kuneConstants;
private HashMap<String, String> lexicon;
private final Session session;
@Inject
public I18nUITranslationService(final Session session, final I18nServiceAsync i18nService,
- final EventBus eventBus) {
+ final EventBus eventBus, final KuneConstants kuneConstants) {
this.session = session;
this.i18nService = i18nService;
+ this.kuneConstants = kuneConstants;
final Location loc = WindowUtils.getLocation();
final String locale = loc.getParameter("locale");
i18nService.getInitialLanguage(locale, new AsyncCallback<I18nLanguageDTO>() {
@@ -60,6 +64,7 @@
@Override
public void onSuccess(final I18nLanguageDTO result) {
currentLang = result;
+ NotifyUser.info("lang: " + result.getCode());
currentLanguageCode = currentLang.getCode();
session.setCurrentLanguage(currentLang);
i18nService.getLexicon(currentLang.getCode(), new AsyncCallback<HashMap<String, String>>() {
@@ -193,36 +198,39 @@
*/
@Override
public String tWithNT(final String text, final String noteForTranslators) {
- if (lexicon == null) {
- Log.warn("i18n not initialized");
- return text;
- }
final String encodeText = TextUtils.escapeHtmlLight(text);
- String translation = lexicon.get(encodeText);
- if (lexicon.containsKey(encodeText)) {
- if (translation == UNTRANSLATED_VALUE) {
- // Not translated but in db, return text
- translation = encodeText;
+ try {
+ return kuneConstants.getString(I18nUtils.convertMethodName(text + " " + noteForTranslators));
+ } catch (final MissingResourceException e) {
+ if (lexicon == null) {
+ Log.warn("i18n not initialized");
+ return text;
}
- } else {
- // Not translated and not in db, make a petition for translation
- if (session.isLogged()) {
- i18nService.getTranslation(session.getUserHash(), currentLanguageCode, text, noteForTranslators,
- new AsyncCallback<String>() {
- @Override
- public void onFailure(final Throwable caught) {
- }
+ 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()) {
+ i18nService.getTranslation(session.getUserHash(), currentLanguageCode, text,
+ noteForTranslators, new AsyncCallback<String>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ }
- @Override
- public void onSuccess(final String result) {
- }
- });
- Log.debug("Registering in db '" + text + "' as pending translation");
- lexicon.put(encodeText, UNTRANSLATED_VALUE);
+ @Override
+ public void onSuccess(final String result) {
+ }
+ });
+ Log.debug("Registering in db '" + text + "' as pending translation");
+ lexicon.put(encodeText, UNTRANSLATED_VALUE);
+ }
+ translation = encodeText;
}
- translation = encodeText;
+ return decodeHtml(translation);
}
- return decodeHtml(translation);
}
-
}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -15,7 +15,9 @@
final char[] delimiters = { ' ', '.', '?', ',', ';', '&', '(', ')', '"', '$', '!', '/', '\'', '-',
'%', ':', '{', '}', '[', ']', '©', '«', '»' };
result = TextUtils.capitalizeFully(result, delimiters);
- result = result.replaceAll("[ \\.\\?,;&\\(\\)\"\\$!\\/\\'\\-%:{}\\[\\]]", "");
+ // result = result.replaceAll("[ \\.\\?,;&\\(\\)\"\\$!\\/\\'\\-%:{}\\[\\]]",
+ // "");
+ result = result.replaceAll("[^a-zA-Z0-9]", "");
return TextUtils.abbreviate(
new StringBuffer(result.length()).append(Character.toLowerCase(result.charAt(0))).append(
result.substring(1)).toString(), 0, 100, "");
Added: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -0,0 +1,513 @@
+package cc.kune.core.client.i18n;
+
+import com.google.gwt.i18n.client.ConstantsWithLookup;
+
+public interface KuneConstants extends ConstantsWithLookup {
+ String aboutKune();
+
+ String aboutKuneTitleOfDialog();
+
+ String acceptThisMember();
+
+ String actions();
+
+ String addANewBuddy();
+
+ String addAsABuddie();
+
+ String admins();
+
+ String allowAnyUsesOfYourWorkIncludingCommercial();
+
+ String allowModificationsOfYourWork();
+
+ String alsoYouCanUploadABackground();
+
+ String anOrganizationWorksAsAProjectButOrganizationsMustBeALegalEntity();
+
+ String anyone();
+
+ String apacheWavePowered();
+
+ String aProjectIsAKindOfGroupInWhichNewMembersJoiningIsModeratedByTheProjectAdministratorsAnAdministratorIs();
+
+ String areYouSure();
+
+ String autoAcceptRequestToJoin();
+
+ String available();
+
+ String availableForChat();
+
+ String away();
+
+ String backusedInButton();
+
+ String blackwhiteAThemeName();
+
+ String blueAThemeName();
+
+ String buddies();
+
+ String busy();
+
+ String calendar();
+
+ String campAThemeName();
+
+ String cancel();
+
+ String change();
+
+ String changeThisWorkspaceTheme();
+
+ String changeToAdmin();
+
+ String changeToCollaborator();
+
+ String chat();
+
+ String chatAbout();
+
+ String chatAndCommentThis();
+
+ String chatWithThisMember();
+
+ String chatWithThisPerson();
+
+ String chatWithYourBuddie();
+
+ String choose();
+
+ String clear();
+
+ String clickToRename();
+
+ String clickToSelectAndConfigureThisTheme();
+
+ String close();
+
+ String closed();
+
+ String closedForNewMembers();
+
+ String closedGroupsAreSocialGroupsOfPersonsLikeFamilyFriendsBuddiesEtcWhichAreModeratedToNewMembersAndWithP();
+
+ String collaborators();
+
+ String commonLicensesForCulturalWorks();
+
+ String communitiesAreSocialGroupsOfPersonsWithSharedInterestsWhichAreOpenToNewMembersForInstanceTheEnvironm();
+
+ String community();
+
+ String connecting();
+
+ String copyleft();
+
+ String copyTheTextToTranslate();
+
+ String create();
+
+ String createANewBlog();
+
+ String createANewBlogPost();
+
+ String createANewChatRoom();
+
+ String createANewDocumentHereThisDocumentWillBeANewPageInThePublicWebIfYouPublishIt();
+
+ String createANewDocumentThisDocumentWillBeANewPageInThePublicWebIfYouPublishIt();
+
+ String createANewFolder();
+
+ String createANewFolderHereAFolderWillBeASectionInThePublicWeb();
+
+ String createANewList();
+
+ String createANewMeetingHere();
+
+ String createANewPost();
+
+ String createANewTask();
+
+ String createANewWikipageHereThisDocumentWillBeANewPageInThePublicWebIfYouPublishIt();
+
+ String createNewGroup();
+
+ String currentBackgroundImage();
+
+ String defaultAThemeName();
+
+ String delete();
+
+ String doNotParticipateAnymoreInThisGroup();
+
+ String doubleClickToOpen();
+
+ String edit();
+
+ String enterLanguage();
+
+ String enterToThisGroupPublicChatRoom();
+
+ String enterToThisGroupPublicChatRoomAndInviteMembers();
+
+ String enterToThisRoom();
+
+ String errorsInfo();
+
+ String finishusedInButton();
+
+ String general();
+
+ String goUpOpenTheContainerFolder();
+
+ String greenAThemeName();
+
+ String greyAThemeName();
+
+ String groupAndPersonalSpaceWhereYouCanCreateAndPublishContentsForYourPersonalOrGroupWebSpaces();
+
+ String groupMembers();
+
+ String groupOptions();
+
+ String groupsInWhichThisUserParticipates();
+
+ String groupSPublicRoom();
+
+ String groupTags();
+
+ String groupType();
+
+ String helpToTranslateKune();
+
+ String helpWithTheTranslation();
+
+ String hereYouCanChangeThisValues();
+
+ String hereYouCanSelectTheToolsUsed();
+
+ String hereYouWillSeeTheArchiveOfOldConversationsInDevelopment();
+
+ String highcontrastAThemeName();
+
+ String hisHerNetwork();
+
+ String keywordsOrTermsAssociatedWithThisGroup();
+
+ String kuneDevelopmentSite();
+
+ String leaveThisGroup();
+
+ String license();
+
+ String licenseWizard();
+
+ String loading();
+
+ String longName();
+
+ String makeThisListNotPublic();
+
+ String media();
+
+ String moderateRequestToJoin();
+
+ String name();
+
+ String nConversationsUnread();
+
+ String newBlog();
+
+ String newDocument();
+
+ String newFolder();
+
+ String newGadget();
+
+ String newList();
+
+ String newMeeting();
+
+ String newMembersPolicy();
+
+ String newPoll();
+
+ String newPost();
+
+ String newRoom();
+
+ String newTask();
+
+ String newTaskFolder();
+
+ String newWikipage();
+
+ String nextusedInButton();
+
+ String no();
+
+ String notes();
+
+ String notPublicable();
+
+ String nSubscribedNPosts();
+
+ String offline();
+
+ String ok();
+
+ String onlyAdmins();
+
+ String onlyMembers();
+
+ String onlyYou();
+
+ String onlyYourBuddies();
+
+ String oopsSomethingHasGoneWrongWithOurServersRetryLaterPlease();
+
+ String open();
+
+ String openArchive();
+
+ String openTheConversationsArchiveOfThisRoom();
+
+ String options();
+
+ String organization();
+
+ String otherKindOfLicenses();
+
+ String otherPeopleThatCollaborateWithThisGroup();
+
+ String others();
+
+ String paramCreatednewContentCreatedForInstance();
+
+ String paramUnderLicenseParam();
+
+ String participate();
+
+ String participatesIn();
+
+ String pending();
+
+ String peopleAndGroupsCollaboratingInThisGroup();
+
+ String peoplePendingToBeAcceptedInThisGroupByTheAdmins();
+
+ String peopleThatCanAdminThisGroup();
+
+ String pinkAThemeName();
+
+ String pleaseConfirm();
+
+ String post();
+
+ String preview();
+
+ String project();
+
+ String publicDescription();
+
+ String publicSpaceInThisSpaceYouCanSeeAPreviewOfHowThePersonalOrGroupSpaceLooksLikeOnTheWebOutsideThisSite();
+
+ String pulseAltpageupOrAltpagedownToMoveUpDownInTheListWhileTranslatingAndAltVToCopyTheOriginalTextTheTrans();
+
+ String purpleAThemeName();
+
+ String reasonsNotToUseANonCommercialLicense();
+
+ String recommendations();
+
+ String redAThemeName();
+
+ String redblackAThemeName();
+
+ String register();
+
+ String registerANewGroup();
+
+ String rejectAsMember();
+
+ String reloadCurrentPage();
+
+ String reloadThis();
+
+ String removeCurrentBackgroundImage();
+
+ String removeThisMember();
+
+ String reportKuneIssuesProblems();
+
+ String requestToParticipateInThisGroup();
+
+ String saharaAThemeName();
+
+ String saving();
+
+ String search();
+
+ String searching();
+
+ String select();
+
+ String selectACreativeCommonsLicenseRecommendedForCulturalWorks();
+
+ String selectALicenseToShareYourGroupContentsWithOtherPeople();
+
+ String selectAndConfigureThePublicSpaceThemeOfThisGroup();
+
+ String selectAnImageInYourComputerAsTheLogoForThisGroupForBestResultsUseANxnPixelImageWeWillAutomaticallyRe();
+
+ String selectAnImageInYourComputerAsYourAvatarForBestResultsUseANxnPixelImageWeWillAutomaticallyResizeBigge();
+
+ String selectAsTheHomepage();
+
+ String selectLicense();
+
+ String selectOtherKindOfLicenses();
+
+ String selectTheLicenseType();
+
+ String setYourChatStatus();
+
+ String setYourGroupPreferencesHere();
+
+ String shortName();
+
+ String showHideTheChatWindow();
+
+ String signInToCollaborate();
+
+ String signOut();
+
+ String signOutOfChat();
+
+ String startAPublicAssemblyWithMembers();
+
+ String style();
+
+ String subscribe();
+
+ String subscribeToThisList();
+
+ String tags();
+
+ String theLicensorPermitsOthersToCopyDistributeDisplayAndPerformOnlyUnalteredCopiesOfTheWorkNotDerivativeWo();
+
+ String theLicensorPermitsOthersToCopyDistributeDisplayAndPerformTheWorkAsWellAsMakeDerivativeWorksBasedOnIt();
+
+ String theLicensorPermitsOthersToCopyDistributeDisplayAndPerformTheWorkForNonCommercialPurposesOnly();
+
+ String theLicensorPermitsOthersToCopyDistributeDisplayAndPerformTheWorkIncludingForCommercialPurposes();
+
+ String theLicensorPermitsOthersToDistributeDerivativeWorksOnlyUnderTheSameLicenseOrOneCompatibleWithTheOneT();
+
+ String theMembersOfThisGroupAreNotPublic();
+
+ String theNameMustBeBetween3And15LowercaseCharactersItCanOnlyContainWesternCharactersAndNumbers();
+
+ String theNameMustContainOnlyCharactersNumbersAndDashes();
+
+ String thisFolderIsEmpty();
+
+ String thisIsACopyleftLicense();
+
+ String thisIsAnOrphanedProjectIfYouAreInterestedPleaseRequestToJoinToWorkOnIt();
+
+ String thisIsAppropriateForFreeCulturalWorks();
+
+ String thisIsNotACopyleftLicense();
+
+ String thisIsNotAppropriateForFreeCulturalWorks();
+
+ String thisIsOnlyAPreviewOfHowThisPageLooksLikeToTheGeneralPublicOnTheWebOutsideThisSite();
+
+ String thisIsTheDefaultLicenseForAllTheContentsOfThisGroupYouCanAlsoSelectAnotherDifferentLicensePerContent();
+
+ String thisPageIsNotPublicable();
+
+ String thisUserBuddies();
+
+ String thisUserBuddiesAndGroupsWhereParticipes();
+
+ String thisUserDoesNotHaveAHomepage();
+
+ String thoseWhoCanViewThisMemberList();
+
+ String thoseWhoCanViewYourNetwork();
+
+ String tip();
+
+ String to();
+
+ String tools();
+
+ String toParamForExampleToSpanish();
+
+ String translated();
+
+ String translateThis();
+
+ String transparentAThemeName();
+
+ String typeSomeKeywordThatDefineYourGroup();
+
+ String typeSomethingToSearchUsersAndGroupsInThisSite();
+
+ String untranslated();
+
+ String useACopyleftLicenseRecommended();
+
+ String useAnotherKindOfLicenseAdvanced();
+
+ String userOptions();
+
+ String userSpaceItShowsAListOfAllYourDocumentsAndContentsInWhichYouParticipate();
+
+ String useTheGnuLicensesRecommendedForFreeSoftwareWorksAndOtherKindOfLicenses();
+
+ String visitHisHerHomepage();
+
+ String visitThisGroupHomepage();
+
+ String visitThisMemberHomepage();
+
+ String visitYourHomepage();
+
+ String voting();
+
+ String welcomeToTheParamPublicChatRoom();
+
+ String weRecommendParamLicensesSpeciallyForPracticalWorks();
+
+ String whiteblackAThemeName();
+
+ String whyDoWeNeedALicense();
+
+ String withACreativeCommonsLicenseYouKeepYourCopyrightButAllowPeopleToCopyAndDistributeYourWorkProvidedThey();
+
+ String yes();
+
+ String yesAsLongAsOtherShareAlike();
+
+ String youCanChangeThisLicenseLater();
+
+ String youCannotDisableThisToolBecauseItSWhereTheCurrentGroupHomePageIsLocatedToDoThatYouHaveToSelectOtherC();
+
+ String yourGroups();
+
+ String yourHomepage();
+
+ String yourHomePageInThisSite();
+
+ String yourLanguage();
+
+ String yourPreferences();
+
+ String youWillDeleteItWithAllItsContentsAreYouSure();
+}
Added: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties 2011-09-19 20:25:07 UTC (rev 1522)
@@ -0,0 +1,256 @@
+chatWithYourBuddie = Chat with your buddie
+chatWithThisMember = Chat with this member
+addAsABuddie = Add as a buddie
+chat = Chat ;)
+thisIsOnlyAPreviewOfHowThisPageLooksLikeToTheGeneralPublicOnTheWebOutsideThisSite = This is only a preview of how this page looks like to the general public on the web, outside this site.
+preview = Preview
+paramUnderLicenseParam = © [%s], under license: [%s]
+clickToRename = Click to rename
+createANewDocumentThisDocumentWillBeANewPageInThePublicWebIfYouPublishIt = Create a New Document. This document will be a new 'Page' in the public web if you publish it
+reloadCurrentPage = Reload current page
+newDocument = New document
+goUpOpenTheContainerFolder = Go up: Open the container folder
+edit = Edit
+chatAndCommentThis = Chat and comment this
+chatAbout = Chat about
+available = Available
+nConversationsUnread = [%d] conversations unread
+offline = Offline
+connecting = Connecting
+newGadget = New Gadget
+voting = Voting
+calendar = Calendar
+media = Media
+others = Others
+loading = Loading
+participate = Participate
+options = Options
+doNotParticipateAnymoreInThisGroup = Do not participate anymore in this group
+requestToParticipateInThisGroup = Request to participate in this group
+leaveThisGroup = Leave this group
+thoseWhoCanViewThisMemberList = Those who can view this member list
+newMembersPolicy = New members policy
+anyone = anyone
+onlyMembers = only members
+onlyAdmins = only admins
+moderateRequestToJoin = moderate request to join
+autoAcceptRequestToJoin = auto accept request to join
+closedForNewMembers = closed for new members
+addANewBuddy = Add a new buddy
+thoseWhoCanViewYourNetwork = Those who can view your network
+onlyYourBuddies = only your buddies
+onlyYou = only you
+groupMembers = Group members
+peopleAndGroupsCollaboratingInThisGroup = People and groups collaborating in this group
+admins = Admins
+peopleThatCanAdminThisGroup = People that can admin this group
+collaborators = Collaborators
+otherPeopleThatCollaborateWithThisGroup = Other people that collaborate with this group
+pending = Pending
+peoplePendingToBeAcceptedInThisGroupByTheAdmins = People pending to be accepted in this group by the admins
+thisIsAnOrphanedProjectIfYouAreInterestedPleaseRequestToJoinToWorkOnIt = This is an orphaned project, if you are interested please request to join to work on it
+theMembersOfThisGroupAreNotPublic = The members of this group are not public
+changeToCollaborator = Change to collaborator
+changeToAdmin = Change to admin
+removeThisMember = Remove this member
+acceptThisMember = Accept this member
+rejectAsMember = Reject as member
+visitThisGroupHomepage = Visit this group homepage
+visitThisMemberHomepage = Visit this member homepage
+visitYourHomepage = Visit your homepage
+visitHisHerHomepage = Visit his/her homepage
+hisHerNetwork = His/her network:
+thisUserBuddiesAndGroupsWhereParticipes = This user buddies and groups where participes
+buddies = Buddies
+thisUserBuddies = This user buddies
+participatesIn = Participates in
+groupsInWhichThisUserParticipates = Groups in which this user participates
+yourGroups = Your groups
+yourHomepage = Your homepage
+yourHomePageInThisSite = Your home page in this site
+userSpaceItShowsAListOfAllYourDocumentsAndContentsInWhichYouParticipate = User space: it shows a list of all your documents and contents in which you participate
+groupAndPersonalSpaceWhereYouCanCreateAndPublishContentsForYourPersonalOrGroupWebSpaces = Group and personal space: Where you can create and publish contents for your personal or group web spaces
+publicSpaceInThisSpaceYouCanSeeAPreviewOfHowThePersonalOrGroupSpaceLooksLikeOnTheWebOutsideThisSite = Public space: In this space you can see a preview of how the Personal or Group Space looks like on the web, outside this site
+tags = Tags
+keywordsOrTermsAssociatedWithThisGroup = Keywords or terms associated with this group
+typeSomethingToSearchUsersAndGroupsInThisSite = Type something to search users and groups in this site
+search = Search
+close = Close
+groupOptions = Group options
+setYourGroupPreferencesHere = Set your group preferences here
+userOptions = User options
+yourPreferences = Your preferences
+helpWithTheTranslation = Help with the translation
+showHideTheChatWindow = Show/hide the chat window
+setYourChatStatus = Set your chat status
+availableForChat = Available for chat
+away = Away
+busy = Busy
+signOutOfChat = Sign out of chat
+groupSPublicRoom = Group's public room
+enterToThisGroupPublicChatRoom = Enter to this group public chat room
+startAPublicAssemblyWithMembers = Start a public assembly with members
+enterToThisGroupPublicChatRoomAndInviteMembers = Enter to this group public chat room and invite members
+reportKuneIssuesProblems = Report Kune issues/problems
+apacheWavePowered = Apache Wave powered
+aboutKune = About kune
+errorsInfo = Errors info
+signInToCollaborate = Sign in to collaborate
+signOut = Sign out
+createNewGroup = Create New Group
+kuneDevelopmentSite = kune development site
+enterLanguage = Enter language
+searching = Searching...
+copyTheTextToTranslate = Copy the text to translate
+translateThis = translate this:
+notes = Notes:
+tip = Tip:
+pulseAltpageupOrAltpagedownToMoveUpDownInTheListWhileTranslatingAndAltVToCopyTheOriginalTextTheTrans = Pulse Alt+PageUp or Alt+PageDown to move up/down in the list while translating, and Alt-V to copy the original text. The translations are autosaved
+untranslated = Untranslated
+translated = Translated
+recommendations = Recommendations
+helpToTranslateKune = Help to translate kune
+to = to
+general = General
+name = Name
+hereYouCanChangeThisValues = Here you can change this values:
+tools = Tools
+hereYouCanSelectTheToolsUsed = Here you can select the tools used:
+choose = Choose
+selectAnImageInYourComputerAsYourAvatarForBestResultsUseANxnPixelImageWeWillAutomaticallyResizeBigge = Select an image in your computer as your avatar. For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.
+style = Style
+changeThisWorkspaceTheme = Change this workspace theme:
+currentBackgroundImage = Current background image:
+alsoYouCanUploadABackground = Also you can upload a background:
+change = Change
+clear = Clear
+thisUserDoesNotHaveAHomepage = This user does not have a homepage
+removeCurrentBackgroundImage = Remove current background image
+selectAndConfigureThePublicSpaceThemeOfThisGroup = Select and configure the public space theme of this group:
+clickToSelectAndConfigureThisTheme = Click to select and configure this theme
+license = License
+thisIsTheDefaultLicenseForAllTheContentsOfThisGroupYouCanAlsoSelectAnotherDifferentLicensePerContent = This is the default license for all the contents of this group (you can also select another different license per content):
+notPublicable = Not Publicable
+thisPageIsNotPublicable = This page is not publicable
+chatWithThisPerson = Chat with this person
+toParamForExampleToSpanish = to [%s]:
+saving = Saving
+ok = Ok
+registerANewGroup = Register a new group
+register = Register
+cancel = Cancel
+shortName = Short name
+theNameMustBeBetween3And15LowercaseCharactersItCanOnlyContainWesternCharactersAndNumbers = The name must be between 3 and 15 lowercase characters. It can only contain Western characters and numbers
+longName = Long name
+publicDescription = Public description
+groupTags = Group tags
+typeSomeKeywordThatDefineYourGroup = type some keyword that define your group
+groupType = Group type
+project = Project
+aProjectIsAKindOfGroupInWhichNewMembersJoiningIsModeratedByTheProjectAdministratorsAnAdministratorIs = A project is a kind of group in which new members joining is moderated by the project administrators. An administrator is the person who creates the project and other people she/he chooses to be administrator as well.
+organization = Organization
+anOrganizationWorksAsAProjectButOrganizationsMustBeALegalEntity = An organization works as a project, but organizations must be a legal entity.
+closed = Closed
+closedGroupsAreSocialGroupsOfPersonsLikeFamilyFriendsBuddiesEtcWhichAreModeratedToNewMembersAndWithP = Closed groups are social groups of persons like family, friends, buddies, etc, which are moderated to new members and with private contents (by default)
+community = Community
+communitiesAreSocialGroupsOfPersonsWithSharedInterestsWhichAreOpenToNewMembersForInstanceTheEnvironm = Communities are social groups of persons with shared interests, which are open to new members (for instance the environmental community or the LGBT community). They rarely are a legal entity.
+createANewDocumentHereThisDocumentWillBeANewPageInThePublicWebIfYouPublishIt = Create a New Document here. This document will be a new 'Page' in the public web if you publish it
+newFolder = New folder
+createANewFolderHereAFolderWillBeASectionInThePublicWeb = Create a new folder here. A folder will be a 'section' in the public web
+doubleClickToOpen = Double click to open
+delete = Delete
+open = Open
+selectAsTheHomepage = Select as the homepage
+actions = Actions
+newBlog = New blog
+createANewBlog = Create a new blog
+reloadThis = Reload this
+newList = New list
+createANewList = Create a new list
+newPost = New post
+createANewBlogPost = Create a new blog post
+makeThisListNotPublic = Make this list not public
+createANewPost = Create a new post
+subscribe = Subscribe
+subscribeToThisList = Subscribe to this list
+nSubscribedNPosts = [%d] subscribed, [%d] posts
+newMeeting = New meeting
+createANewMeetingHere = Create a New Meeting here
+createANewTask = Create a new task
+newTask = New task
+newTaskFolder = New task folder
+createANewFolder = Create a new folder
+newWikipage = New wikipage
+createANewWikipageHereThisDocumentWillBeANewPageInThePublicWebIfYouPublishIt = Create a New Wikipage here. This document will be a new 'Page' in the public web if you publish it
+youCannotDisableThisToolBecauseItSWhereTheCurrentGroupHomePageIsLocatedToDoThatYouHaveToSelectOtherC = You cannot disable this tool because it's where the current group home page is located. To do that you have to select other content as the default group home page but in another tool.
+selectAnImageInYourComputerAsTheLogoForThisGroupForBestResultsUseANxnPixelImageWeWillAutomaticallyRe = Select an image in your computer as the logo for this group. For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.
+licenseWizard = License wizard
+backusedInButton = « Back
+nextusedInButton = Next »
+finishusedInButton = Finish
+select = Select
+selectALicenseToShareYourGroupContentsWithOtherPeople = Select a license to share your group contents with other people:
+useACopyleftLicenseRecommended = Use a copyleft license (recommended)
+useAnotherKindOfLicenseAdvanced = Use another kind of license (advanced)
+copyleft = copyleft
+weRecommendParamLicensesSpeciallyForPracticalWorks = We recommend [%s] licenses, specially for practical works
+whyDoWeNeedALicense = Why do we need a license?
+youCanChangeThisLicenseLater = You can change this license later
+selectTheLicenseType = Select the license type:
+commonLicensesForCulturalWorks = Common licenses for cultural works
+selectACreativeCommonsLicenseRecommendedForCulturalWorks = Select a Creative Commons license (recommended for cultural works)
+otherKindOfLicenses = Other kind of licenses
+useTheGnuLicensesRecommendedForFreeSoftwareWorksAndOtherKindOfLicenses = Use the GNU licenses (recommended for free software works) and other kind of licenses
+withACreativeCommonsLicenseYouKeepYourCopyrightButAllowPeopleToCopyAndDistributeYourWorkProvidedThey = With a Creative Commons license, you keep your copyright but allow people to copy and distribute your work provided they give you credit � and only on the conditions you specify here. What do you want to do?
+allowAnyUsesOfYourWorkIncludingCommercial = Allow any uses of your work, including commercial?
+allowModificationsOfYourWork = Allow modifications of your work?
+yes = Yes
+theLicensorPermitsOthersToCopyDistributeDisplayAndPerformTheWorkIncludingForCommercialPurposes = The licensor permits others to copy, distribute, display, and perform the work, including for commercial purposes
+no = No
+theLicensorPermitsOthersToCopyDistributeDisplayAndPerformTheWorkForNonCommercialPurposesOnly = The licensor permits others to copy, distribute, display, and perform the work for non-commercial purposes only
+theLicensorPermitsOthersToCopyDistributeDisplayAndPerformTheWorkAsWellAsMakeDerivativeWorksBasedOnIt = The licensor permits others to copy, distribute, display and perform the work, as well as make derivative works based on it
+yesAsLongAsOtherShareAlike = Yes, as long as other share alike
+theLicensorPermitsOthersToDistributeDerivativeWorksOnlyUnderTheSameLicenseOrOneCompatibleWithTheOneT = The licensor permits others to distribute derivative works only under the same license or one compatible with the one that governs the licensor's work
+theLicensorPermitsOthersToCopyDistributeDisplayAndPerformOnlyUnalteredCopiesOfTheWorkNotDerivativeWo = The licensor permits others to copy, distribute, display and perform only unaltered copies of the work � not derivative works based on it
+thisIsACopyleftLicense = This is a copyleft license.
+thisIsNotACopyleftLicense = This is not a copyleft license.
+thisIsAppropriateForFreeCulturalWorks = This is appropriate for free cultural works.
+thisIsNotAppropriateForFreeCulturalWorks = This is not appropriate for free cultural works.
+reasonsNotToUseANonCommercialLicense = Reasons not to use a non commercial license.
+selectOtherKindOfLicenses = Select other kind of licenses:
+selectLicense = Select license
+areYouSure = Are you sure?
+paramCreatednewContentCreatedForInstance = [%s] created
+pleaseConfirm = Please confirm
+thisFolderIsEmpty = This folder is empty
+youWillDeleteItWithAllItsContentsAreYouSure = You will delete it with all its contents. Are you sure?
+welcomeToTheParamPublicChatRoom = Welcome to the [%s] public chat room
+createANewChatRoom = Create a new chat room
+newRoom = New room
+enterToThisRoom = Enter to this room
+openArchive = Open archive
+openTheConversationsArchiveOfThisRoom = Open the conversations archive of this room
+hereYouWillSeeTheArchiveOfOldConversationsInDevelopment = Here you will see the archive of old conversations (in development)
+create = Create
+theNameMustContainOnlyCharactersNumbersAndDashes = The name must contain only characters, numbers and dashes
+post = Post
+newPoll = New poll
+thisUserDoesNotHaveAHomepage = This user does not have a homepage
+oopsSomethingHasGoneWrongWithOurServersRetryLaterPlease = Oops! Something has gone wrong with our servers. Retry later, please.
+yourLanguage = Your language
+redblackAThemeName = redblack
+purpleAThemeName = purple
+greenAThemeName = green
+highcontrastAThemeName = highcontrast
+blackwhiteAThemeName = blackwhite
+campAThemeName = camp
+defaultAThemeName = default
+redAThemeName = red
+blueAThemeName = blue
+greyAThemeName = grey
+saharaAThemeName = sahara
+pinkAThemeName = pink
+whiteblackAThemeName = whiteblack
+transparentAThemeName = transparent
+aboutKuneTitleOfDialog = About Kune
+
Added: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties 2011-09-19 20:25:07 UTC (rev 1522)
@@ -0,0 +1,5 @@
+addAsABuddienull = Añadir como colega
+chatNull = Chat ;)
+search = Buscar
+thisUserDoesNotHaveAHomepage = Este/a usuario/a no tiene una página personal
+openArchive = Abrir archivo
\ No newline at end of file
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-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/client/notify/confirm/UserConfirmPanel.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -44,8 +44,8 @@
@Inject
public UserConfirmPanel(final I18nTranslationService i18n) {
- dialog = new BasicTopDialog.Builder(DIALOG_ID, false, true).autoscroll(false).width(100).height(100).firstButtonId(
- OK_ID).sndButtonId(CANCEL_ID).tabIndexStart(1).build();
+ dialog = new BasicTopDialog.Builder(DIALOG_ID, false, true).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/rpcservices/UserService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/UserService.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/UserService.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -22,6 +22,7 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.dto.UserInfoDTO;
@@ -49,6 +50,6 @@
void setBuddiesVisibility(String userHash, StateToken groupToken, UserSNetVisibility visibility);
- StateAbstractDTO updateUser(String userHash, UserDTO user) throws DefaultException;
+ StateAbstractDTO updateUser(String userHash, UserDTO user, I18nLanguageSimpleDTO lang);
}
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/UserServiceAsync.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/UserServiceAsync.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/UserServiceAsync.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -21,6 +21,7 @@
import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.dto.UserInfoDTO;
@@ -48,5 +49,6 @@
void setBuddiesVisibility(String userHash, StateToken groupToken, UserSNetVisibility visibility,
AsyncCallback<Void> asyncCallback);
- void updateUser(String userHash, UserDTO user, AsyncCallback<StateAbstractDTO> callback);
+ void updateUser(String userHash, UserDTO user, I18nLanguageSimpleDTO lang,
+ AsyncCallback<StateAbstractDTO> callback);
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -47,9 +47,9 @@
@Inject
public AboutKuneDialog(final I18nTranslationService i18n) {
- dialog = new BasicTopDialog.Builder(ABOUT_KUNE_ID, true, true).title(i18n.t("About Kune")).autoscroll(
- false).firstButtonTitle(i18n.t("Ok")).firstButtonId(ABOUT_KUNE_BTN_ID).tabIndexStart(1).height(
- "300px").width("410px").build();
+ dialog = new BasicTopDialog.Builder(ABOUT_KUNE_ID, true, true).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));
dialog.getFirstBtn().addClickHandler(new ClickHandler() {
@Override
Modified: trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -24,6 +24,7 @@
import cc.kune.core.client.errors.I18nNotFoundException;
import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.shared.domain.UserSNetVisibility;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.domain.User;
import cc.kune.domain.utils.UserBuddiesData;
@@ -76,8 +77,9 @@
* the userId to change
* @param user
* the userDTO with values to change
+ * @param lang
* @return the User after updated
*/
- User update(Long userId, UserDTO user);
+ User update(Long userId, UserDTO user, I18nLanguageSimpleDTO lang);
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -54,6 +54,7 @@
import cc.kune.core.server.xmpp.ChatException;
import cc.kune.core.server.xmpp.XmppManager;
import cc.kune.core.shared.domain.UserSNetVisibility;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.domain.Group;
@@ -325,9 +326,9 @@
}
@Override
- public User update(final Long userId, final UserDTO userDTO) {
+ public User update(final Long userId, final UserDTO userDTO, final I18nLanguageSimpleDTO lang) {
final User user = find(userId);
- final String shortName = userDTO.getShortName();
+ // final String shortName = userDTO.getShortName();
final String longName = userDTO.getName();
final String email = userDTO.getEmail();
final Group userGroup = user.getUserGroup();
@@ -347,7 +348,8 @@
checkIfEmailAreInUse(email);
user.setEmail(email);
}
- user.setLanguage(findLanguage(userDTO.getLanguage().getCode()));
+ user.setLanguage(findLanguage(lang.getCode()));
+ // user.setLanguage(findLanguage(userDTO.getLanguage().getCode()));
persist(user);
groupManager.persist(userGroup);
return user;
Modified: trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -42,6 +42,7 @@
import cc.kune.core.shared.domain.AccessRol;
import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.dto.UserInfoDTO;
@@ -194,12 +195,13 @@
@Override
@Authenticated
@Transactional
- public StateAbstractDTO updateUser(final String userHash, final UserDTO user) throws DefaultException {
+ public StateAbstractDTO updateUser(final String userHash, final UserDTO user,
+ final I18nLanguageSimpleDTO lang) throws DefaultException {
final Long id = getUserSession().getUser().getId();
if (!id.equals(user.getId())) {
throw new AccessViolationException();
}
- final User userUpdated = userManager.update(id, user);
+ final User userUpdated = userManager.update(id, user, lang);
return contentRPC.getContent(userHash, userUpdated.getUserGroup().getStateToken());
}
}
Modified: trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -23,7 +23,12 @@
public class I18nLanguageSimpleDTO implements IsSerializable {
+ public static I18nLanguageSimpleDTO create(final I18nLanguageDTO language) {
+ return new I18nLanguageSimpleDTO(language.getCode(), language.getEnglishName());
+ }
+
private String code;
+
private String englishName;
public I18nLanguageSimpleDTO() {
Modified: trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -42,11 +42,11 @@
private String trKey;
public I18nTranslationDTO() {
- this(null, null, null, null, null);
+ this(null, null, null, null, null, null);
}
public I18nTranslationDTO(final Long id, final String trKey, final String text, final Long parentId,
- final String parentTrKey) {
+ final String parentTrKey, final String noteForTranslators) {
this.id = id;
this.trKey = trKey;
this.text = text;
Modified: trunk/src/main/java/cc/kune/domain/I18nTranslation.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/I18nTranslation.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/domain/I18nTranslation.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -113,6 +113,7 @@
this.setNoteForTranslators(noteForTranslators);
if (parent == null) {
assert trKey != null;
+ this.parent = this;
}
if (parent != null) {
assert trKey == null;
@@ -151,7 +152,10 @@
}
public String getNoteForTranslators() {
- return noteForTranslators;
+ if (parent == this) {
+ return noteForTranslators;
+ }
+ return parent.getNoteForTranslators();
}
/**
@@ -165,7 +169,10 @@
}
public Long getParentId() {
- return parent == null ? null : parent.getId();
+ if (parent == this) {
+ return id;
+ }
+ return parent.getId();
}
public Integer getPluralizationIndex() {
@@ -181,11 +188,10 @@
}
public String getTrKey() {
- if (parent != null) {
- return parent.getTrKey();
- } else {
- return this.trKey;
+ if (parent == this) {
+ return trKey;
}
+ return parent.getTrKey();
}
public String getType() {
Modified: trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -33,9 +33,9 @@
public interface I18nTranslationFinder {
String TRANSLATED_COUNT_QUERY = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text!=null";
- String TRANSLATED_QUERY = "SELECT NEW cc.kune.core.shared.dto.I18nTranslationDTO(gt.id, gt.trKey, gt.text, gt.parent.id, gt.parent.trKey) FROM I18nTranslation gt LEFT JOIN gt.parent gp WHERE gt.language = :language AND gt.text!=null";
+ String TRANSLATED_QUERY = "SELECT NEW cc.kune.core.shared.dto.I18nTranslationDTO(gt.id, gt.trKey, gt.text, gt.parent.id, gt.parent.trKey, gt.parent.noteForTranslators) FROM I18nTranslation gt LEFT JOIN gt.parent gp WHERE gt.language = :language AND gt.text!=null";
String UNTRANSLATED_COUNT_QUERY = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text=null";
- String UNTRANSLATED_QUERY = "SELECT NEW cc.kune.core.shared.dto.I18nTranslationDTO(gt.id, gt.trKey, gt.text, gt.parent.id, gt.parent.trKey) FROM I18nTranslation gt LEFT JOIN gt.parent gp WHERE gt.language = :language AND gt.text=null";
+ String UNTRANSLATED_QUERY = "SELECT NEW cc.kune.core.shared.dto.I18nTranslationDTO(gt.id, gt.trKey, gt.text, gt.parent.id, gt.parent.trKey, gt.parent.noteForTranslators) FROM I18nTranslation gt LEFT JOIN gt.parent gp WHERE gt.language = :language AND gt.text=null";
@Finder(query = "SELECT gt FROM I18nTranslation gt JOIN gt.language gl WHERE gl.code = :language", returnAs = ArrayList.class)
public List<I18nTranslation> findByLanguage(@Named("language") final String language);
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -22,6 +22,7 @@
import cc.kune.common.client.errors.UIException;
import cc.kune.common.client.utils.SimpleCallback;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.ui.DefaultForm;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -47,6 +48,20 @@
set(ENGLISH_NAME, englishName);
}
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ return getCode().equals(((LanguageData) obj).getCode());
+ }
+
public String getCode() {
return get(CODE);
}
@@ -54,6 +69,14 @@
public String getEnglishName() {
return get(ENGLISH_NAME);
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (getCode() == null ? 0 : getCode().hashCode());
+ return result;
+ }
}
public static final String LANG_FIELD = "k-langsp-lf";
@@ -71,6 +94,9 @@
setFrame(false);
setHeaderVisible(false);
setBodyBorder(false);
+ // setWidth(300);
+ setLabelWidth(DefaultForm.DEF_FIELD_LABEL_WITH + 25);
+ setPadding(0);
createLangCombo(withEnglish);
super.add(langCombo);
}
@@ -112,12 +138,16 @@
for (final I18nLanguageSimpleDTO lang : session.getLanguages()) {
final boolean isEnglish = lang.getCode().equals("en");
if (!isEnglish || (isEnglish && withEnglish)) {
- list.add(new LanguageData(lang.getCode(), lang.getEnglishName()));
+ list.add(getLangData(lang));
}
}
return list;
}
+ private LanguageData getLangData(final I18nLanguageSimpleDTO lang) {
+ return new LanguageData(lang.getCode(), lang.getEnglishName());
+ }
+
public I18nLanguageSimpleDTO getLanguage() {
final String langCode = langCombo.getValue().getCode();
for (final I18nLanguageSimpleDTO lang : session.getLanguages()) {
@@ -156,6 +186,6 @@
}
public void setLanguage(final I18nLanguageSimpleDTO language) {
- langCombo.setRawValue(language.getEnglishName());
+ langCombo.setValue(getLangData(language));
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -141,7 +141,7 @@
item.setDirty(true);
dataProvider.refreshDisplays();
saver.save(new I18nTranslationDTO(item.getId(), item.getTrKey(), newTranslation,
- item.getParentId(), item.getParentTrKey()));
+ item.getParentId(), item.getParentTrKey(), item.getNoteForTranslators()));
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -22,30 +22,49 @@
import cc.kune.common.client.ui.MaskWidget;
import cc.kune.core.client.auth.UserFieldFactory;
import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.i18n.LanguageSelectorPanel;
+import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.google.inject.Inject;
public class UserOptGeneralPanel extends EntityOptGeneralPanel implements UserOptGeneralView {
private static final String LONG_NAME_FIELD = "k-uogp-lname";
+ private final LanguageSelectorPanel langSelector;
private final TextField<String> longName;
@Inject
public UserOptGeneralPanel(final I18nTranslationService i18n, final CoreResources res,
- final MaskWidget maskWidget) {
+ final MaskWidget maskWidget, final LanguageSelectorPanel langSelector) {
super(i18n, res, maskWidget);
+ this.langSelector = langSelector;
longName = UserFieldFactory.createUserLongName(LONG_NAME_FIELD);
add(longName);
+ langSelector.setLangTitle(i18n.t("Your language"));
+ langSelector.setLabelAlign(LabelAlign.LEFT);
+ langSelector.setLangSeparator(":");
+ add(langSelector);
}
@Override
+ public I18nLanguageSimpleDTO getLanguage() {
+ return langSelector.getLanguage();
+ }
+
+ @Override
public String getLongName() {
return longName.getValue();
}
@Override
+ public void setLanguage(final I18nLanguageSimpleDTO language) {
+ langSelector.setLanguage(language);
+ }
+
+ @Override
public void setLongName(final String longName) {
this.longName.setValue(longName);
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -26,6 +26,7 @@
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.UserSignInEvent;
import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.dto.UserSimpleDTO;
@@ -71,6 +72,7 @@
protected void setState() {
final UserSimpleDTO currentUser = session.getCurrentUser();
userView.setLongName(currentUser.getName());
+ userView.setLanguage(I18nLanguageSimpleDTO.create(currentUser.getLanguage()));
}
@Override
@@ -81,8 +83,7 @@
final UserDTO user = new UserDTO();
user.setId(currentUser.getId());
user.setName(userView.getLongName());
- user.setLanguage(currentUser.getLanguage());
- userService.get().updateUser(session.getUserHash(), user,
+ userService.get().updateUser(session.getUserHash(), user, userView.getLanguage(),
new AsyncCallbackSimple<StateAbstractDTO>() {
@Override
public void onSuccess(final StateAbstractDTO result) {
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -19,10 +19,15 @@
*/
package cc.kune.gspace.client.options.general;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
+
public interface UserOptGeneralView extends EntityOptGeneralView {
+ I18nLanguageSimpleDTO getLanguage();
+
String getLongName();
+ void setLanguage(I18nLanguageSimpleDTO language);
+
void setLongName(String longName);
-
}
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -50,7 +50,7 @@
super();
this.theme = theme;
this.manager = manager;
- putValue(NAME, i18n.t(theme.getName()));
+ putValue(NAME, i18n.tWithNT(theme.getName(), "a theme name"));
putValue(SMALL_ICON, theme.getBackColors()[0]);
}
Modified: trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-09-19 13:00:39 UTC (rev 1521)
+++ trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-09-19 20:25:07 UTC (rev 1522)
@@ -52,6 +52,7 @@
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.I18nCountryDTO;
import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.SocialNetworkDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.StateContentDTO;
@@ -75,6 +76,7 @@
Mapper mapper;
@Inject
KuneBasicProperties properties;
+ private I18nLanguageSimpleDTO simpleLang;
@Inject
SocialNetworkRPC sn;
private TimeZoneDTO timezone;
@@ -142,6 +144,7 @@
public void init() {
new IntegrationTestHelper(this);
lang = new I18nLanguageDTO();
+ simpleLang = new I18nLanguageSimpleDTO(lang.getCode(), lang.getEnglishName());
country = new I18nCountryDTO();
timezone = new TimeZoneDTO();
lang.setCode("en");
@@ -204,7 +207,7 @@
userService.createUser(user, false);
// do login as admin
doLogin();
- userService.updateUser(getHash(), user);
+ userService.updateUser(getHash(), user, simpleLang);
}
@Test
@@ -235,7 +238,7 @@
final UserDTO userChanged = new UserDTO(shortName, longName, "123456", email, lang, country,
timezone, null, true, SubscriptionMode.manual, "blue");
userChanged.setId(session.getUser().getId());
- userService.updateUser(getHash(), userChanged);
+ userService.updateUser(getHash(), userChanged, simpleLang);
}
@Test(expected = GroupLongNameInUseException.class)
1
0
Author: vjrj_
Date: 2011-09-19 15:00:39 +0200 (Mon, 19 Sep 2011)
New Revision: 1521
Added:
trunk/script/convertI18nMsgToMethods.sh
trunk/script/i18n-db2gwt.sh
trunk/src/main/java/cc/kune/core/client/i18n/I18nConvertMethodName.java
trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorWithoutEnglishPanel.java
trunk/src/main/resources/db/update-0017-i18nclean2.sql
Modified:
trunk/TODO
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/i18n/I18nUtils.java
trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java
trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java
trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java
trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rest/I18nTranslationJSONService.java
trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java
trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java
trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java
trunk/src/main/java/cc/kune/domain/I18nTranslation.java
trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPresenter.java
trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java
trunk/src/main/resources/db/liquibase_changelog.xml
trunk/src/main/resources/kune.properties
trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java
trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java
Log:
NEW - # 79: I18n refactorization
http://kune.ourproject.org/issues/ticket/79
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/TODO 2011-09-19 13:00:39 UTC (rev 1521)
@@ -284,6 +284,23 @@
2007-12-21 10:35:16,197 [btpool0-5] DEBUG - ContentManagerDefault.createContent EXCEPTION => javax.persistence.Entity
** vjrj <v> IconHyperlink.java and IconLabel.java to gwt1.5
+** Memory use in demo
+http://rimuhosting.com/howto/memory.jsp
+Resolving: High Java Memory Usage
+
+Java processes can often consume more memory than any other application running on a server.
+
+Java processes can be passed a -Xmx option. This controls the maximum Java memory heap size. It is important to set a limit on the heap size, otherwise the heap will keep increasing until you get out of memory errors on your VPS (resulting in the Java process - or even some other, random, process - dying.
+
+Usually the setting can be found in your /usr/local/jboss/bin/run.conf or /usr/local/tomcat/bin/setenv.sh config files. And your RimuHosting default install should have a reasonable value in there already.
+
+If you are running a custom Java application, check there is a -XmxNNm (where NN is a number of megabytes) option on the Java command line.
+
+The optimal -Xmx setting value will depend on what you are running. And how much memory is available on your server.
+
+From experience we have found that Tomcat often runs well with an -Xmx between 48m and 64m. JBoss will need a -Xmx of at least 96m to 128m. You can set the value higher. However, you should ensure that there is memory available on your server.
+
+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
** Study mozilla web apps:
https://apps.mozillalabs.com/
Added: trunk/script/convertI18nMsgToMethods.sh
===================================================================
--- trunk/script/convertI18nMsgToMethods.sh (rev 0)
+++ trunk/script/convertI18nMsgToMethods.sh 2011-09-19 13:00:39 UTC (rev 1521)
@@ -0,0 +1 @@
+/usr/lib/jvm/java-6-openjdk/bin/java -Dfile.encoding=UTF-8 -classpath /home/vjrj/proyectos/dev/kune/trunk/target/test-classes:/home/vjrj/proyectos/dev/kune/trunk/target/kune-0.1.0-SNAPSHOT/WEB-INF/classes:/home/vjrj/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/home/vjrj/.m2/repository/javax/transaction/jta/1.1/jta-1.1.jar:/home/vjrj/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar:/home/vjrj/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar:/home/vjrj/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar:/home/vjrj/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/home/vjrj/.m2/repository/com/google/appengine/appengine-api-1.0-sdk/1.3.1/appengine-api-1.0-sdk-1.3.1.jar:/home/vjrj/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar:/home/vjrj/.m2/repository/org/waveprotocol/box/0.3.1-SNAPSHOT/box-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/waveprotocol/box-src/0.3.1-SNAPSHOT/box-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar:/home/vjrj/.m2/repository/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar:/home/vjrj/.m2/repository/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar:/home/vjrj/.m2/repository/org/waveprotocol/client/0.3.1-SNAPSHOT/client-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/waveprotocol/client-common/0.3.1-SNAPSHOT/client-common-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/waveprotocol/client-common-src/0.3.1-SNAPSHOT/client-common-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/waveprotocol/client-scheduler-src/0.3.1-SNAPSHOT/client-scheduler-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/waveprotocol/client-src/0.3.1-SNAPSHOT/client-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar:/home/vjrj/.m2/repository/org/waveprotocol/common-src/0.3.1-SNAPSHOT/common-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/home/vjrj/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar:/home/vjrj/.m2/repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar:/home/vjrj/.m2/repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar:/home/vjrj/.m2/repository/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar:/home/vjrj/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar:/home/vjrj/.m2/repository/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar:/home/vjrj/.m2/repository/commons-lang/commons-lang/2.5/commons-lang-2.5.jar:/home/vjrj/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/home/vjrj/.m2/repository/org/waveprotocol/communication-src/0.3.1-SNAPSHOT/communication-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/waveprotocol/concurrencycontrol-src/0.3.1-SNAPSHOT/concurrencycontrol-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/net/sourceforge/htmlunit/crawl_htmlunit/r5662-gae/crawl_htmlunit-r5662-gae.jar:/home/vjrj/.m2/repository/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar:/home/vjrj/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/home/vjrj/.m2/repository/net/sf/dozer/dozer/4.0/dozer-4.0.jar:/home/vjrj/.m2/repository/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar:/home/vjrj/.m2/repository/com/calclab/emite/emite/r1694/emite-r1694.jar:/home/vjrj/.m2/repository/com/calclab/emite/emite-proxy/0.1/emite-proxy-0.1.jar:/home/vjrj/.m2/repository/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar:/home/vjrj/.m2/repository/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar:/home/vjrj/.m2/repository/com/google/guava/guava-gwt/r09/guava-gwt-r09.jar:/home/vjrj/.m2/repository/com/google/inject/guice/3.0/guice-3.0.jar:/home/vjrj/.m2/repository/com/google/inject/extensions/guice-assisted-inject/2.0/guice-assisted-inject-2.0.jar:/home/vjrj/.m2/repository/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0.jar:/home/vjrj/.m2/repository/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar:/home/vjrj/.m2/repository/com/allen_sauer/gwt/dnd/gwt-dnd/gwt-dnd/3.0.1/gwt-dnd-3.0.1.jar:/home/vjrj/.m2/repository/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar:/home/vjrj/.m2/repository/com/google/gwt/gwt-gin/1.0-r137/gwt-gin-1.0-r137.jar:/home/vjrj/.m2/repository/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar:/home/vjrj/.m2/repository/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar:/home/vjrj/.m2/repository/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar:/home/vjrj/.m2/repository/org/waveprotocol/gwt-util-src/0.3.1-SNAPSHOT/gwt-util-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar:/home/vjrj/.m2/repository/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar:/home/vjrj/.m2/repository/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-crawler/0.5/gwtp-crawler-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5.jar:/home/vjrj/.m2/repository/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5.jar:/home/vjrj/.m2/repository/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat.jar:/home/vjrj/.m2/repository/com/extjs/gxt/2.2.1/gxt-2.2.1.jar:/home/vjrj/.m2/repository/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar:/home/vjrj/.m2/repository/com/calclab/emite/hablar/r1697/hablar-r1697.jar:/home/vjrj/.m2/repository/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar:/home/vjrj/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar:/home/vjrj/.m2/repository/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA.jar:/home/vjrj/.m2/repository/net/sourceforge/htmlunit/htmlunit/2.7/htmlunit-2.7.jar:/home/vjrj/.m2/repository/net/sourceforge/htmlunit/htmlunit-core-js/2.7/htmlunit-core-js-2.7.jar:/home/vjrj/.m2/repository/javassist/javassist/3.4.GA/javassist-3.4.GA.jar:/home/vjrj/.m2/repository/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar:/home/vjrj/.m2/repository/com/beust/jcommander/1.12/jcommander-1.12.jar:/home/vjrj/.m2/repository/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar:/home/vjrj/.m2/repository/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar:/home/vjrj/.m2/repository/net/java/dev/jna/jna/3.2.2/jna-3.2.2.jar:/home/vjrj/.m2/repository/org/jruby/jruby-complete/1.2.0/jruby-complete-1.2.0.jar:/home/vjrj/.m2/repository/org/jruby/rack/jruby-rack/0.9.4/jruby-rack-0.9.4.jar:/home/vjrj/.m2/repository/org/json/json/20080701/json-20080701.jar:/home/vjrj/.m2/repository/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar:/home/vjrj/.m2/repository/org/jsoup/jsoup/1.2.2/jsoup-1.2.2.jar:/home/vjrj/.m2/repository/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar:/home/vjrj/.m2/repository/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar:/home/vjrj/.m2/repository/org/jukito/jukito/1.0/jukito-1.0.jar:/home/vjrj/.m2/repository/junit/junit/4.8.2/junit-4.8.2.jar:/home/vjrj/.m2/repository/org/liquibase/liquibase-core/1.8.1/liquibase-core-1.8.1.jar:/home/vjrj/.m2/repository/org/liquibase/liquibase-plugin/1.8.1.0/liquibase-plugin-1.8.1.0.jar:/home/vjrj/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar:/home/vjrj/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar:/home/vjrj/.m2/repository/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar:/home/vjrj/.m2/repository/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar:/home/vjrj/.m2/repository/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar:/home/vjrj/.m2/repository/org/apache/maven/maven-model/2.0/maven-model-2.0.jar:/home/vjrj/.m2/repository/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar:/home/vjrj/.m2/repository/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar:/home/vjrj/.m2/repository/org/apache/maven/maven-project/2.0/maven-project-2.0.jar:/home/vjrj/.m2/repository/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar:/home/vjrj/.m2/repository/org/waveprotocol/media-src/0.3.1-SNAPSHOT/media-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar:/home/vjrj/.m2/repository/org/waveprotocol/model-src/0.3.1-SNAPSHOT/model-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar:/home/vjrj/.m2/repository/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar:/home/vjrj/.m2/repository/net/sourceforge/nekohtml/nekohtml/1.9.14/nekohtml-1.9.14.jar:/home/vjrj/.m2/repository/org/objenesis/objenesis/1.0/objenesis-1.0.jar:/home/vjrj/.m2/repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar:/home/vjrj/.m2/repository/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar:/home/vjrj/.m2/repository/org/waveprotocol/proto-msg/0.3.1-SNAPSHOT/proto-msg-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/w3c/css/sac/1.3/sac-1.3.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium/2.0a4/selenium-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-chrome-driver/2.0a4/selenium-chrome-driver-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-common/2.0a4/selenium-common-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-firefox-driver/2.0a4/selenium-firefox-driver-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-htmlunit-driver/2.0a4/selenium-htmlunit-driver-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-ie-driver/2.0a4/selenium-ie-driver-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-remote-client/2.0a4/selenium-remote-client-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-remote-common/2.0a4/selenium-remote-common-2.0a4.jar:/home/vjrj/.m2/repository/org/seleniumhq/selenium/selenium-support/2.0a4/selenium-support-2.0a4.jar:/home/vjrj/.m2/repository/xalan/serializer/2.7.1/serializer-2.7.1.jar:/home/vjrj/.m2/repository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar:/home/vjrj/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar:/home/vjrj/.m2/repository/jivesoftware/smack/3.1.0/smack-3.1.0.jar:/home/vjrj/.m2/repository/jivesoftware/smackx/3.1.0/smackx-3.1.0.jar:/home/vjrj/.m2/repository/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar:/home/vjrj/.m2/repository/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar:/home/vjrj/.m2/repository/stax/stax-api/1.0.1/stax-api-1.0.1.jar:/home/vjrj/.m2/repository/org/testng/testng/6.0.1/testng-6.0.1.jar:/home/vjrj/.m2/repository/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar:/home/vjrj/.m2/repository/org/waveprotocol/util-src/0.3.1-SNAPSHOT/util-src-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar:/home/vjrj/.m2/repository/org/waveprotocol/waveinabox-server-0.3/0.3.1-SNAPSHOT/waveinabox-server-0.3-0.3.1-SNAPSHOT.jar:/home/vjrj/.m2/repository/xalan/xalan/2.7.1/xalan-2.7.1.jar:/home/vjrj/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar:/home/vjrj/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar:/home/vjrj/.m2/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar:/home/vjrj/.m2/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar:/home/vjrj/.m2/repository/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1.jar:/home/vjrj/bin/eclipse64-hel-new/plugins/com.google.gwt.eclipse.sdkbundle.2.1.1_2.1.1.v201012170127/gwt-2.1.1/gwt-user.jar:/home/vjrj/bin/eclipse64-hel-new/plugins/com.google.gwt.eclipse.sdkbundle.2.1.1_2.1.1.v201012170127/gwt-2.1.1/gwt-dev.jar cc.kune.core.client.i18n.I18nConvertMethodName $1
\ No newline at end of file
Property changes on: trunk/script/convertI18nMsgToMethods.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/script/i18n-db2gwt.sh
===================================================================
--- trunk/script/i18n-db2gwt.sh (rev 0)
+++ trunk/script/i18n-db2gwt.sh 2011-09-19 13:00:39 UTC (rev 1521)
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# This script should generate from Kune strings db translations to GWT I18n .java resources
+
+usage() {
+ echo "Use: $0 -l langcode"
+ echo "$0 -l en"
+}
+
+while getopts “hl:” OPTION
+do
+ case $OPTION in
+ h)
+ usage
+ exit 1
+ ;;
+ l)
+ L=$OPTARG
+ ;;
+ ?)
+ usage
+ exit
+ ;;
+ esac
+done
+
+if [[ -z $L ]]
+then
+ usage
+ exit 1
+fi
+
+
+
Property changes on: trunk/script/i18n-db2gwt.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/src/main/java/cc/kune/core/client/i18n/I18nConvertMethodName.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nConvertMethodName.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nConvertMethodName.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -0,0 +1,16 @@
+package cc.kune.core.client.i18n;
+
+public class I18nConvertMethodName {
+
+ public static void main(final String... args) {
+ if (args.length == 0) {
+ System.err.print("Syntax: I18nConvertMethodName 'Some string message to convert'\n");
+ } else {
+ final StringBuffer buf = new StringBuffer();
+ for (final String arg : args) {
+ buf.append(arg).append(" ");
+ }
+ System.out.print(I18nUtils.convertMethodName(buf.toString()));
+ }
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nTranslationServiceMocked.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nTranslationServiceMocked.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nTranslationServiceMocked.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -23,9 +23,10 @@
import cc.kune.core.shared.i18n.I18nTranslationService;
public class I18nTranslationServiceMocked extends I18nTranslationService {
- public String t(final String text) {
- String encodeText = TextUtils.escapeHtmlLight(text);
- String translation = removeNT(encodeText);
- return decodeHtml(translation);
- }
+ @Override
+ public String tWithNT(final String text, final String noteForTranslators) {
+ final String encodeText = TextUtils.escapeHtmlLight(text);
+ final String translation = encodeText;
+ return decodeHtml(translation);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -38,190 +38,191 @@
import com.google.inject.Inject;
public class I18nUITranslationService extends I18nTranslationService {
- private I18nLanguageDTO currentLang;
- private String currentLanguageCode;
- private final I18nServiceAsync i18nService;
- private HashMap<String, String> lexicon;
- private final Session session;
+ private I18nLanguageDTO currentLang;
+ private String currentLanguageCode;
+ private final I18nServiceAsync i18nService;
+ private HashMap<String, String> lexicon;
+ private final Session session;
- @Inject
- public I18nUITranslationService(final Session session, final I18nServiceAsync i18nService, final EventBus eventBus) {
- this.session = session;
- this.i18nService = i18nService;
- final Location loc = WindowUtils.getLocation();
- final String locale = loc.getParameter("locale");
- i18nService.getInitialLanguage(locale, new AsyncCallback<I18nLanguageDTO>() {
- @Override
- public void onFailure(final Throwable caught) {
- Log.error("Workspace adaptation to your language failed: " + caught.getMessage());
- }
+ @Inject
+ public I18nUITranslationService(final Session session, final I18nServiceAsync i18nService,
+ final EventBus eventBus) {
+ this.session = session;
+ this.i18nService = i18nService;
+ final Location loc = WindowUtils.getLocation();
+ final String locale = loc.getParameter("locale");
+ i18nService.getInitialLanguage(locale, new AsyncCallback<I18nLanguageDTO>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ Log.error("Workspace adaptation to your language failed: " + caught.getMessage());
+ }
- @Override
- public void onSuccess(final I18nLanguageDTO result) {
- currentLang = result;
- currentLanguageCode = currentLang.getCode();
- session.setCurrentLanguage(currentLang);
- 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());
- }
+ @Override
+ public void onSuccess(final I18nLanguageDTO result) {
+ currentLang = result;
+ currentLanguageCode = currentLang.getCode();
+ session.setCurrentLanguage(currentLang);
+ 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());
+ }
- @Override
- public void onSuccess(final HashMap<String, String> result) {
- lexicon = result;
- session.setCurrentLanguage(currentLang);
- eventBus.fireEvent(new I18nReadyEvent());
- }
- });
- }
+ @Override
+ public void onSuccess(final HashMap<String, String> result) {
+ lexicon = result;
+ session.setCurrentLanguage(currentLang);
+ eventBus.fireEvent(new I18nReadyEvent());
+ }
});
- }
+ }
+ });
+ }
- public void changeCurrentLanguage(final String newLanguage) {
- if (!newLanguage.equals(this.currentLanguageCode)) {
- setCurrentLanguage(newLanguage);
- changeLocale(newLanguage);
- }
+ public void changeCurrentLanguage(final String newLanguage) {
+ if (!newLanguage.equals(this.currentLanguageCode)) {
+ setCurrentLanguage(newLanguage);
+ changeLocale(newLanguage);
}
+ }
- /**
- *
- * See in:
- * http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread
- * /5e4e25050d3be984/7035ec39354d06aa?lnk=gst&q=get+locale&rnum=23
- *
- * 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)
- /*-{
- // 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;
+ /**
+ *
+ * See in:
+ * http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread
+ * /5e4e25050d3be984/7035ec39354d06aa?lnk=gst&q=get+locale&rnum=23
+ *
+ * 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)
+ /*-{
+ // 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;
- // 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
+ // 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
- // extjs part:
- // commented because the error: "Ext is not defined"
- // we have to try other way
- // var head = document.getElementsByTagName("head")[0];
- // var script = document.createElement('script');
- // script.id = 'localScript';
- // script.type = 'text/javascript';
- // script.src = "js/ext/locale/ext-lang-"+newLocale+".js";
- // head.appendChild(script);
- }-*/;
+ // extjs part:
+ // commented because the error: "Ext is not defined"
+ // we have to try other way
+ // var head = document.getElementsByTagName("head")[0];
+ // var script = document.createElement('script');
+ // script.id = 'localScript';
+ // script.type = 'text/javascript';
+ // script.src = "js/ext/locale/ext-lang-"+newLocale+".js";
+ // head.appendChild(script);
+ }-*/;
- public String formatDateWithLocale(final Date date) {
- return formatDateWithLocale(date, false);
- }
+ public String formatDateWithLocale(final Date date) {
+ return formatDateWithLocale(date, false);
+ }
- public String formatDateWithLocale(final Date date, final boolean shortFormat) {
- String dateFormat = shortFormat ? currentLang.getDateFormatShort() : currentLang.getDateFormat();
+ public String formatDateWithLocale(final Date date, final boolean shortFormat) {
+ String dateFormat = shortFormat ? currentLang.getDateFormatShort() : currentLang.getDateFormat();
- final DateTimeFormat fmt;
- if (dateFormat == null) {
- fmt = DateTimeFormat.getFormat("M/d/yyyy h:mm a");
- } else {
- if (shortFormat) {
- fmt = DateTimeFormat.getFormat(dateFormat + " h:mm a");
- } else {
- final String abrevMonthInEnglish = DateTimeFormat.getFormat("MMM").format(date);
- final String monthToTranslate = abrevMonthInEnglish + " [%NT abbreviated month]";
- dateFormat = dateFormat.replaceFirst("MMM", "'" + t(monthToTranslate) + "'");
- fmt = DateTimeFormat.getFormat(dateFormat + " h:mm a");
- }
- }
- final String dateFormated = fmt.format(date);
- return dateFormated;
+ final DateTimeFormat fmt;
+ if (dateFormat == null) {
+ fmt = DateTimeFormat.getFormat("M/d/yyyy h:mm a");
+ } else {
+ if (shortFormat) {
+ fmt = DateTimeFormat.getFormat(dateFormat + " h:mm a");
+ } else {
+ final String abrevMonthInEnglish = DateTimeFormat.getFormat("MMM").format(date);
+ final String monthToTranslate = abrevMonthInEnglish + " [%NT abbreviated month]";
+ dateFormat = dateFormat.replaceFirst("MMM", "'" + t(monthToTranslate) + "'");
+ fmt = DateTimeFormat.getFormat(dateFormat + " h:mm a");
+ }
}
+ final String dateFormated = fmt.format(date);
+ return dateFormated;
+ }
- public String getCurrentLanguage() {
- return currentLanguageCode;
- }
+ public String getCurrentLanguage() {
+ return currentLanguageCode;
+ }
- public HashMap<String, String> getLexicon() {
- return lexicon;
- }
+ public HashMap<String, String> getLexicon() {
+ return lexicon;
+ }
- public void init(final I18nServiceAsync i18nService, final Session session, final Listener0 onReady) {
+ public void init(final I18nServiceAsync i18nService, final Session session, final Listener0 onReady) {
- }
+ }
- public void setCurrentLanguage(final String newLanguage) {
- this.currentLanguageCode = newLanguage;
- }
+ public void setCurrentLanguage(final String newLanguage) {
+ this.currentLanguageCode = newLanguage;
+ }
- public void setLexicon(final HashMap<String, String> lexicon) {
- this.lexicon = lexicon;
- }
+ public void setLexicon(final HashMap<String, String> lexicon) {
+ this.lexicon = lexicon;
+ }
- public void setTranslationAfterSave(final String text, final String translation) {
- lexicon.put(text, translation);
+ public void setTranslationAfterSave(final String text, final String translation) {
+ lexicon.put(text, translation);
+ }
+
+ /**
+ * 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
+ * pending for translation in db).
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * @return text translated in the current language
+ */
+ @Override
+ public String tWithNT(final String text, final String noteForTranslators) {
+ if (lexicon == null) {
+ Log.warn("i18n not initialized");
+ return text;
}
+ final String encodeText = TextUtils.escapeHtmlLight(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()) {
+ i18nService.getTranslation(session.getUserHash(), currentLanguageCode, text, noteForTranslators,
+ new AsyncCallback<String>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ }
- /**
- * 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
- * pending for translation in db).
- *
- * Warning: text is escaped as html before insert in the db. Don't use html
- * here (o user this method with params).
- *
- * @param text
- * @return text translated in the current language
- */
- @Override
- public String t(final String text) {
- if (lexicon == null) {
- Log.warn("i18n not initialized");
- return text;
- }
- final String encodeText = TextUtils.escapeHtmlLight(text);
- String translation = lexicon.get(encodeText);
- if (lexicon.containsKey(encodeText)) {
- if (translation == UNTRANSLATED_VALUE) {
- // Not translated but in db, return text
- translation = removeNT(encodeText);
- }
- } else {
- // Not translated and not in db, make a petition for translation
- if (session.isLogged()) {
- i18nService.getTranslation(session.getUserHash(), currentLanguageCode, text,
- new AsyncCallback<String>() {
- @Override
- public void onFailure(final Throwable caught) {
- }
-
- @Override
- public void onSuccess(final String result) {
- }
- });
- Log.debug("Registering in db '" + text + "' as pending translation");
- lexicon.put(encodeText, UNTRANSLATED_VALUE);
- }
- translation = removeNT(encodeText);
- }
- return decodeHtml(translation);
+ @Override
+ public void onSuccess(final String result) {
+ }
+ });
+ Log.debug("Registering in db '" + text + "' as pending translation");
+ lexicon.put(encodeText, UNTRANSLATED_VALUE);
+ }
+ translation = encodeText;
}
+ return decodeHtml(translation);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUtils.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -13,7 +13,7 @@
result = result.replaceAll("\\[%d\\]", "N");
result = result.replaceAll("\\[%s\\]", "Param");
final char[] delimiters = { ' ', '.', '?', ',', ';', '&', '(', ')', '"', '$', '!', '/', '\'', '-',
- '%', ':', '{', '}', '[', ']' };
+ '%', ':', '{', '}', '[', ']', '©', '«', '»' };
result = TextUtils.capitalizeFully(result, delimiters);
result = result.replaceAll("[ \\.\\?,;&\\(\\)\"\\$!\\/\\'\\-%:{}\\[\\]]", "");
return TextUtils.abbreviate(
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -39,7 +39,7 @@
List<I18nTranslationDTO> getTranslatedLexicon(String userHash, final String language,
boolean toTranslate);
- String getTranslation(String userHash, String language, String text);
+ String getTranslation(String userHash, String language, String text, String noteForTranslators);
String setTranslation(String userHash, Long id, String translation) throws DefaultException;
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -36,7 +36,8 @@
void getTranslatedLexicon(String userHash, String language, boolean toTranslate,
AsyncCallback<List<I18nTranslationDTO>> callback);
- void getTranslation(String userHash, String language, String text, AsyncCallback<String> callback);
+ void getTranslation(String userHash, String language, String text, String noteForTranslators,
+ AsyncCallback<String> callback);
void setTranslation(String userHash, Long id, String translation, AsyncCallback<String> asyncCallback);
Modified: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.server.i18n;
-
import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.server.UserSession;
import cc.kune.core.server.manager.I18nTranslationManager;
@@ -33,42 +32,59 @@
@Singleton
public class I18nTranslationServiceDefault extends I18nTranslationService {
- private final I18nTranslationManager translationManager;
+ private final I18nTranslationManager translationManager;
- // private final Provider<UserSession> userSessionProvider;
+ // private final Provider<UserSession> userSessionProvider;
- @Inject
- public I18nTranslationServiceDefault(final I18nTranslationManager translationManager,
- final Provider<UserSession> userSessionProvider) {
- this.translationManager = translationManager;
- // this.userSessionProvider = userSessionProvider;
- }
+ @Inject
+ public I18nTranslationServiceDefault(final I18nTranslationManager translationManager,
+ final Provider<UserSession> userSessionProvider) {
+ this.translationManager = translationManager;
+ // this.userSessionProvider = userSessionProvider;
+ }
- /**
- * If the text is not in the db, it stores the text pending for translation.
- *
- * Warning: text is escaped as html before insert in the db. Don't use html
- * here (o user this method with params).
- *
- * @param text
- * @return text translated in the current language
- */
- @Override
- public String t(final String text) {
- String language;
+ /**
+ * If the text is not in the db, it stores the text pending for translation.
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * @return text translated in the current language
+ */
+ @Override
+ public String t(final String text) {
+ return tWithNT(text, "");
+ }
- // final UserSession userSession = userSessionProvider.get();
- // if (userSession.isUserLoggedIn()) {
- // language = userSession.getUser().getLanguage().getCode();
- // } else {
- language = I18nTranslation.DEFAULT_LANG;
- // }
- final String encodeText = TextUtils.escapeHtmlLight(text);
- String translation = translationManager.getTranslation(language, text);
- if (translation == UNTRANSLATED_VALUE) {
- // Not translated but in db, return text
- translation = removeNT(encodeText);
- }
- return decodeHtml(translation);
+ /**
+ * If the text is not in the db, it stores the text pending for translation.
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * @param noteForTranslators
+ * some note for facilitate the translation
+ *
+ * @return text translated in the current language
+ */
+ @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;
+ // }
+ final String encodeText = TextUtils.escapeHtmlLight(text);
+ String translation = translationManager.getTranslation(language, text, noteForTranslators);
+ if (translation == UNTRANSLATED_VALUE) {
+ // Not translated but in db, return text
+ translation = encodeText;
}
+ return decodeHtml(translation);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -168,7 +168,7 @@
final I18nCountry gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".",
"United Kingdom", "western", ",");
countryManager.persist(gb);
- final I18nTranslation test = new I18nTranslation("test", english, "test");
+ final I18nTranslation test = new I18nTranslation("test", english, "test", "");
translationManager.persist(test);
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -23,31 +23,26 @@
import java.util.List;
import cc.kune.core.client.errors.DefaultException;
-import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
+import cc.kune.core.shared.dto.SearchResultDTO;
import cc.kune.domain.I18nTranslation;
public interface I18nTranslationManager extends Manager<I18nTranslation, Long> {
HashMap<String, String> getLexicon(String language);
- List<I18nTranslation> getTranslatedLexicon(String language);
+ List<I18nTranslationDTO> getTranslatedLexicon(String language);
- SearchResult<I18nTranslation> getTranslatedLexicon(String language, Integer firstResult,
+ SearchResultDTO<I18nTranslationDTO> getTranslatedLexicon(String language, Integer firstResult,
Integer maxResults);
- String getTranslation(String language, String text);
+ String getTranslation(String language, String text, String noteForTranslators);
- String getTranslation(String language, String text, Integer arg);
+ List<I18nTranslationDTO> getUntranslatedLexicon(String language);
- String getTranslation(String language, String text, String arg);
-
- List<I18nTranslation> getUntranslatedLexicon(String language);
-
- SearchResult<I18nTranslation> getUntranslatedLexicon(String language, Integer firstResult,
+ SearchResultDTO<I18nTranslationDTO> getUntranslatedLexicon(String language, Integer firstResult,
Integer maxResults);
String setTranslation(Long id, String translation) throws DefaultException;
- void setTranslation(String language, String text, String translation);
-
}
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-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -29,6 +29,8 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.manager.I18nLanguageManager;
import cc.kune.core.server.manager.I18nTranslationManager;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
+import cc.kune.core.shared.dto.SearchResultDTO;
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.I18nTranslation;
import cc.kune.domain.finders.I18nTranslationFinder;
@@ -69,6 +71,9 @@
@SuppressWarnings("unchecked")
private HashMap<String, String> getLexiconFromDb(final String language) {
+ // FIXME
+ // 1) Generate English
+ // 2) Don't permit to translate English
HashMap<String, String> map = new HashMap<String, String>();
final List<I18nTranslation> set = finder.findByLanguage(language);
if (!language.equals(I18nTranslation.DEFAULT_LANG)) {
@@ -82,21 +87,21 @@
}
@Override
- public List<I18nTranslation> getTranslatedLexicon(final String languageCode) {
+ public List<I18nTranslationDTO> getTranslatedLexicon(final String languageCode) {
return finder.getTranslatedLexicon(getLanguage(languageCode));
}
@Override
- public SearchResult<I18nTranslation> getTranslatedLexicon(final String languageCode,
+ public SearchResultDTO<I18nTranslationDTO> getTranslatedLexicon(final String languageCode,
final Integer firstResult, final Integer maxResults) {
final I18nLanguage language = getLanguage(languageCode);
- final List<I18nTranslation> list = finder.getTranslatedLexicon(language, firstResult, maxResults);
+ final List<I18nTranslationDTO> list = finder.getTranslatedLexicon(language, firstResult, maxResults);
final Long count = finder.getTranslatedLexiconCount(language);
- return new SearchResult<I18nTranslation>(count.intValue(), list);
+ return new SearchResultDTO<I18nTranslationDTO>(count.intValue(), list);
}
@Override
- public String getTranslation(final String language, final String text) {
+ public String getTranslation(final String language, final String text, final String noteForTranslators) {
final HashMap<String, String> lexicon = getLexicon(language);
final String escapedText = TextUtils.escapeHtmlLight(text);
if (lexicon.containsKey(escapedText)) {
@@ -108,7 +113,8 @@
if (!getLexicon(I18nTranslation.DEFAULT_LANG).containsKey(text)) {
final I18nTranslation newTranslation = new I18nTranslation("", null,
I18nTranslation.DEF_PLUR_INDEX, "", I18nTranslation.UNTRANSLATED_VALUE, escapedText,
- I18nTranslation.DEF_NAMESPACE, languageManager.findByCode(I18nTranslation.DEFAULT_LANG));
+ I18nTranslation.DEF_NAMESPACE, languageManager.findByCode(I18nTranslation.DEFAULT_LANG),
+ null, noteForTranslators);
persist(newTranslation);
langCache.clear();
}
@@ -117,31 +123,18 @@
}
@Override
- public String getTranslation(final String language, final String text, final Integer arg) {
- String translation = getTranslation(language, text);
- translation = translation.replaceFirst("\\[%d\\]", arg.toString());
- return translation;
- }
-
- @Override
- public String getTranslation(final String language, final String text, final String arg) {
- String translation = getTranslation(language, text);
- translation = translation.replaceFirst("\\[%s\\]", arg);
- return translation;
- }
-
- @Override
- public List<I18nTranslation> getUntranslatedLexicon(final String languageCode) {
+ public List<I18nTranslationDTO> getUntranslatedLexicon(final String languageCode) {
return finder.getUntranslatedLexicon(initUnstranlated(languageCode));
}
@Override
- public SearchResult<I18nTranslation> getUntranslatedLexicon(final String languageCode,
+ public SearchResultDTO<I18nTranslationDTO> getUntranslatedLexicon(final String languageCode,
final Integer firstResult, final Integer maxResults) {
final I18nLanguage language = initUnstranlated(languageCode);
final Long count = finder.getUnstranslatedLexiconCount(language);
- final List<I18nTranslation> list = finder.getUnstranslatedLexicon(language, firstResult, maxResults);
- return new SearchResult<I18nTranslation>(count.intValue(), list);
+ final List<I18nTranslationDTO> list = finder.getUnstranslatedLexicon(language, firstResult,
+ maxResults);
+ return new SearchResultDTO<I18nTranslationDTO>(count.intValue(), list);
}
private I18nLanguage initUnstranlated(final String languageCode) {
@@ -165,6 +158,8 @@
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
+ assert trans.getLanguage().getCode() != I18nTranslation.DEFAULT_LANG;
final String escapedTranslation = TextUtils.escapeHtmlLight(translation);
trans.setText(escapedTranslation);
persist(trans);
@@ -174,16 +169,4 @@
}
}
- @Override
- public void setTranslation(final String languageId, final String text, final String translation) {
- final I18nLanguage language = getLanguage(languageId);
- final I18nTranslation newTranslation = new I18nTranslation(text, language, translation);
- persist(newTranslation);
- if (languageId.equals(I18nTranslation.DEFAULT_LANG)) {
- langCache.clear();
- } else {
- langCache.remove(languageId);
- }
- }
-
}
Modified: trunk/src/main/java/cc/kune/core/server/rest/I18nTranslationJSONService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rest/I18nTranslationJSONService.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/server/rest/I18nTranslationJSONService.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -21,52 +21,53 @@
import java.util.List;
-
import cc.kune.core.server.manager.I18nTranslationManager;
-import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.server.mapper.Mapper;
import cc.kune.core.server.rack.filters.rest.REST;
import cc.kune.core.shared.SearcherConstants;
import cc.kune.core.shared.dto.I18nTranslationDTO;
import cc.kune.core.shared.dto.SearchResultDTO;
-import cc.kune.domain.I18nTranslation;
import com.google.inject.Inject;
public class I18nTranslationJSONService {
- private final I18nTranslationManager manager;
- private final Mapper mapper;
+ private final I18nTranslationManager manager;
+ private final Mapper mapper;
- @Inject
- public I18nTranslationJSONService(final I18nTranslationManager manager, final Mapper mapper) {
- this.manager = manager;
- this.mapper = mapper;
- }
+ @Inject
+ public I18nTranslationJSONService(final I18nTranslationManager manager, final Mapper mapper) {
+ this.manager = manager;
+ this.mapper = mapper;
+ }
- @REST(params = { SearcherConstants.QUERY_PARAM })
- public List<I18nTranslationDTO> search(final String language) {
- List<I18nTranslation> results = manager.getUntranslatedLexicon(language);
- return mapper.mapList(results, I18nTranslationDTO.class);
- }
+ @REST(params = { SearcherConstants.QUERY_PARAM })
+ public List<I18nTranslationDTO> search(final String language) {
+ final List<I18nTranslationDTO> results = manager.getUntranslatedLexicon(language);
+ return results;
+ }
- @REST(params = { SearcherConstants.QUERY_PARAM, SearcherConstants.START_PARAM, SearcherConstants.LIMIT_PARAM })
- public SearchResultDTO<I18nTranslationDTO> search(final String language, final Integer firstResult,
- final Integer maxResults) {
- SearchResult<I18nTranslation> results = manager.getUntranslatedLexicon(language, firstResult, maxResults);
- return mapper.mapSearchResult(results, I18nTranslationDTO.class);
- }
+ @REST(params = { SearcherConstants.QUERY_PARAM, SearcherConstants.START_PARAM,
+ SearcherConstants.LIMIT_PARAM })
+ public SearchResultDTO<I18nTranslationDTO> search(final String language, final Integer firstResult,
+ final Integer maxResults) {
+ final SearchResultDTO<I18nTranslationDTO> results = manager.getUntranslatedLexicon(language,
+ firstResult, maxResults);
+ return results;
+ }
- @REST(params = { SearcherConstants.QUERY_PARAM })
- public List<I18nTranslationDTO> searchtranslated(final String language) {
- List<I18nTranslation> results = manager.getTranslatedLexicon(language);
- return mapper.mapList(results, I18nTranslationDTO.class);
- }
+ @REST(params = { SearcherConstants.QUERY_PARAM })
+ public List<I18nTranslationDTO> searchtranslated(final String language) {
+ final List<I18nTranslationDTO> results = manager.getTranslatedLexicon(language);
+ return results;
+ }
- @REST(params = { SearcherConstants.QUERY_PARAM, SearcherConstants.START_PARAM, SearcherConstants.LIMIT_PARAM })
- public SearchResultDTO<I18nTranslationDTO> searchtranslated(final String language, final Integer firstResult,
- final Integer maxResults) {
- SearchResult<I18nTranslation> results = manager.getTranslatedLexicon(language, firstResult, maxResults);
- return mapper.mapSearchResult(results, I18nTranslationDTO.class);
- }
+ @REST(params = { SearcherConstants.QUERY_PARAM, SearcherConstants.START_PARAM,
+ SearcherConstants.LIMIT_PARAM })
+ public SearchResultDTO<I18nTranslationDTO> searchtranslated(final String language,
+ final Integer firstResult, final Integer maxResults) {
+ final SearchResultDTO<I18nTranslationDTO> results = manager.getTranslatedLexicon(language,
+ firstResult, maxResults);
+ return results;
+ }
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -110,28 +110,28 @@
public List<I18nTranslationDTO> getTranslatedLexicon(final String userHash, final String language,
final boolean toTranslate) {
if (toTranslate) {
- return mapper.mapList(i18nTranslationManager.getUntranslatedLexicon(language),
- I18nTranslationDTO.class);
+ return i18nTranslationManager.getUntranslatedLexicon(language);
} else {
- return mapper.mapList(i18nTranslationManager.getTranslatedLexicon(language),
- I18nTranslationDTO.class);
+ return i18nTranslationManager.getTranslatedLexicon(language);
}
}
@Override
@Transactional
- public String getTranslation(final String userHash, final String language, final String text) {
+ public String getTranslation(final String userHash, final String language, final String text,
+ final String noteForTranslators) {
String translation = null;
try {
- translation = getTranslationWrapper(language, text);
+ translation = getTranslationWrapper(language, text, noteForTranslators);
} catch (final SessionExpiredException e) {
}
return translation;
}
@Authenticated(mandatory = false)
- private String getTranslationWrapper(final String language, final String text) {
- return i18nTranslationManager.getTranslation(language, text);
+ private String getTranslationWrapper(final String language, final String text,
+ final String noteForTranslators) {
+ return i18nTranslationManager.getTranslation(language, text, noteForTranslators);
}
private UserSession getUserSession() {
Modified: trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -35,29 +35,47 @@
};
private boolean dirty;
private Long id;
+ private String noteForTranslators;
+ private Long parentId;
+ private String parentTrKey;
private String text;
private String trKey;
public I18nTranslationDTO() {
- this(null, null, null);
+ this(null, null, null, null, null);
}
- public I18nTranslationDTO(final Long id, final String trKey, final String text) {
+ public I18nTranslationDTO(final Long id, final String trKey, final String text, final Long parentId,
+ final String parentTrKey) {
this.id = id;
this.trKey = trKey;
this.text = text;
+ this.parentId = parentId;
+ this.parentTrKey = parentTrKey;
setDirty(false);
}
@Override
public int compareTo(final I18nTranslationDTO o) {
- return (o == null || o.trKey == null) ? -1 : -o.trKey.compareTo(trKey);
+ return (o == null || o.id == null) ? -1 : -o.id.compareTo(id);
}
public Long getId() {
return id;
}
+ public String getNoteForTranslators() {
+ return noteForTranslators;
+ }
+
+ public Long getParentId() {
+ return parentId;
+ }
+
+ public String getParentTrKey() {
+ return parentTrKey;
+ }
+
public String getText() {
return text;
}
@@ -78,6 +96,18 @@
this.id = id;
}
+ public void setNoteForTranslators(final String noteForTranslators) {
+ this.noteForTranslators = noteForTranslators;
+ }
+
+ public void setParentId(final Long parentId) {
+ this.parentId = parentId;
+ }
+
+ public void setParentTrKey(final String parentTrKey) {
+ this.parentTrKey = parentTrKey;
+ }
+
public void setText(final String text) {
this.text = text;
}
Modified: trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -19,119 +19,152 @@
*/
package cc.kune.core.shared.i18n;
+import cc.kune.common.client.utils.Pair;
+
public abstract class I18nTranslationService {
- protected static final String TRANSLATION_NOTE_REGEXP = " (\\[)%NT (.*)(\\])$";
- protected static final String NOTE_FOR_TRANSLATOR_TAG_BEGIN = " [%NT ";
- protected static final String NOTE_FOR_TRANSLATOR_TAG_END = "]";
- // Also in I18nTranslation
- protected static final String UNTRANSLATED_VALUE = null;
- public String decodeHtml(final String textToDecode) {
- String text = textToDecode;
- // text = text.replaceAll("©", "©");
- return text;
- }
+ // Also in I18nTranslation
+ protected static final String UNTRANSLATED_VALUE = null;
- public String removeNT(final String string) {
- return string.replaceAll(TRANSLATION_NOTE_REGEXP, "");
- }
+ public String decodeHtml(final String textToDecode) {
+ final String text = textToDecode;
+ // text = text.replaceAll("©", "©");
+ return text;
+ }
- /**
- * 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
- * pending for translation in db).
- *
- * Warning: text is escaped as html before insert in the db. Don't use html
- * here (o user this method with params).
- *
- * @param text
- * @return text translated in the current language
- */
- // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:49
- public abstract String t(final String text);
-
- /**
- * Use [%d] to reference the Integer parameters
- *
- */
- // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
- public String t(final String text, final Integer... args) {
- String translation = t(text);
- for (Integer arg : args) {
- translation = translation.replaceFirst("\\[%d\\]", arg.toString());
- }
- return decodeHtml(translation);
+ /**
+ * Use [%d] to reference the Integer parameters
+ *
+ */
+ // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
+ private String t(final Pair<String, String> pair, final Integer... args) {
+ String translation = tWithNT(pair.getLeft(), pair.getRight());
+ for (final Integer arg : args) {
+ translation = translation.replaceFirst("\\[%d\\]", arg.toString());
}
+ return decodeHtml(translation);
+ }
- /**
- * Use [%d] to reference the Long parameter
- *
- */
- // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
- public String t(final String text, final Long... args) {
- String translation = t(text);
- for (Long arg : args) {
- translation = translation.replaceFirst("\\[%d\\]", arg.toString());
- }
- return decodeHtml(translation);
+ /**
+ * Use [%d] to reference the Long parameter
+ *
+ */
+ // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
+ private String t(final Pair<String, String> pair, final Long... args) {
+ String translation = tWithNT(pair.getLeft(), pair.getRight());
+ for (final Long arg : args) {
+ translation = translation.replaceFirst("\\[%d\\]", arg.toString());
}
+ return decodeHtml(translation);
+ }
- /**
- * Use [%s] to reference the string parameter
- *
- */
- // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
- public String t(final String text, final String... args) {
- String translation = t(text);
- for (String arg : args) {
- translation = translation.replaceFirst("\\[%s\\]", arg);
- }
- return decodeHtml(translation);
+ /**
+ * Use [%s] to reference the string parameter
+ *
+ */
+ // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
+ private String t(final Pair<String, String> pair, final String... args) {
+ String translation = tWithNT(pair.getLeft(), pair.getRight());
+ for (final String arg : args) {
+ translation = translation.replaceFirst("\\[%s\\]", arg);
}
+ return decodeHtml(translation);
+ }
- /**
- * Adds [%NT noteForTranslators] at the end of text. This tag is later
- * renderer in the translator panel to inform translator how to do this
- * translation
- *
- */
- public String tWithNT(final String text, final String noteForTranslators) {
- return t(text + NOTE_FOR_TRANSLATOR_TAG_BEGIN + noteForTranslators + NOTE_FOR_TRANSLATOR_TAG_END);
- }
+ /**
+ * 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
+ * pending for translation in db).
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * some note for facilitate the translation
+ *
+ * @return text translated in the current language
+ */
+ public String t(final String text) {
+ return tWithNT(text, "");
+ }
- /**
- * Use [%d] to reference the Integer parameter.
- *
- * Also adds [%NT noteForTranslators] at the end of text. This tag is later
- * renderer in the translator panel to inform translator how to do this
- * translation
- *
- */
- public String tWithNT(final String text, final String noteForTranslators, final Integer... args) {
- return t(text + NOTE_FOR_TRANSLATOR_TAG_BEGIN + noteForTranslators + NOTE_FOR_TRANSLATOR_TAG_END, args);
- }
+ /**
+ * Use [%d] to reference the Integer parameters
+ *
+ */
+ // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
+ public String t(final String text, final Integer... args) {
+ return t(Pair.create(text, ""), args);
+ }
- /**
- * Use [%d] to reference the Long parameter.
- *
- * Also adds [%NT noteForTranslators] at the end of text. This tag is later
- * renderer in the translator panel to inform translator how to do this
- * translation
- *
- */
- public String tWithNT(final String text, final String noteForTranslators, final Long... args) {
- return t(text + NOTE_FOR_TRANSLATOR_TAG_BEGIN + noteForTranslators + NOTE_FOR_TRANSLATOR_TAG_END, args);
- }
+ /**
+ * Use [%d] to reference the Long parameter
+ *
+ */
+ // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
+ public String t(final String text, final Long... args) {
+ return t(Pair.create(text, ""), args);
+ }
- /**
- * Use [%s] to reference the String parameter.
- *
- * Also adds [%NT noteForTranslators] at the end of text. This tag is later
- * renderer in the translator panel to inform translator how to do this
- * translation
- *
- */
- public String tWithNT(final String text, final String noteForTranslators, final String... args) {
- return t(text + NOTE_FOR_TRANSLATOR_TAG_BEGIN + noteForTranslators + NOTE_FOR_TRANSLATOR_TAG_END, args);
- }
+ /**
+ * Use [%s] to reference the String parameter.
+ *
+ */
+ public String t(final String text, final String... args) {
+ return t(Pair.create(text, ""), args);
+ }
+
+ /**
+ * 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
+ * pending for translation in db).
+ *
+ * Warning: text is escaped as html before insert in the db. Don't use html
+ * here (o user this method with params).
+ *
+ * @param text
+ * @param noteForTranslators
+ * some note for facilitate the translation
+ *
+ * @return text translated in the current language
+ */
+ // @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:49
+ public abstract String tWithNT(final String text, final String noteForTranslators);
+
+ /**
+ * - Use [%d] to reference the Integer parameter.
+ *
+ * Also adds [%NT noteForTranslators] at the end of text. This tag is later
+ * renderer in the translator panel to inform translator how to do this
+ * translation
+ *
+ */
+ public String tWithNT(final String text, final String noteForTranslators, final Integer... args) {
+ return t(Pair.create(text, noteForTranslators), args);
+ }
+
+ /**
+ * Use [%d] to reference the Long parameter.
+ *
+ * Also adds [%NT noteForTranslators] at the end of text. This tag is later
+ * renderer in the translator panel to inform translator how to do this
+ * translation
+ *
+ */
+ public String tWithNT(final String text, final String noteForTranslators, final Long... args) {
+ return t(Pair.create(text, noteForTranslators), args);
+ }
+
+ /**
+ * Use [%s] to reference the String parameter.
+ *
+ * Also adds [%NT noteForTranslators] at the end of text. This tag is later
+ * renderer in the translator panel to inform translator how to do this
+ * translation
+ *
+ */
+ public String tWithNT(final String text, final String noteForTranslators, final String... args) {
+ return t(Pair.create(text, noteForTranslators), args);
+ }
+
}
Modified: trunk/src/main/java/cc/kune/domain/I18nTranslation.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/I18nTranslation.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/domain/I18nTranslation.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -42,154 +42,204 @@
@Table(name = "globalize_translations")
public class I18nTranslation implements HasId {
- public static final String DEF_NAMESPACE = "kune_core";
- public static final Integer DEF_PLUR_INDEX = 1;
- public static final String DEFAULT_LANG = "en";
+ public static final String DEF_NAMESPACE = "kune_core";
+ public static final Integer DEF_PLUR_INDEX = 1;
+ public static final String DEFAULT_LANG = "en";
+ public static final String UNTRANSLATED_VALUE = null;
- public static final String UNTRANSLATED_VALUE = null;
+ @Column(name = "facet")
+ private String facet;
- @Column(name = "facet")
- private String facet;
+ @Id
+ @GeneratedValue
+ @DocumentId
+ @Column(name = "id", unique = true, nullable = false)
+ private Long id;
- @Id
- @GeneratedValue
- @DocumentId
- @Column(name = "id", unique = true, nullable = false)
- private Long id;
+ @Column(name = "item_id")
+ private Integer itemId;
- @Column(name = "item_id")
- private Integer itemId;
+ @ManyToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "language_id")
+ private I18nLanguage language;
- @ManyToOne(cascade = CascadeType.ALL)
- @JoinColumn(name = "language_id")
- private I18nLanguage language;
+ private String noteForTranslators;
- @Column(name = "pluralization_index")
- private Integer pluralizationIndex;
+ @ManyToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "parent_id")
+ private I18nTranslation parent;
- @Column(name = "table_name")
- private String tableName;
+ @Column(name = "pluralization_index")
+ private Integer pluralizationIndex;
- @Column(name = "text")
- private String text;
+ @Column(name = "table_name")
+ private String tableName;
- @Column(name = "tr_key")
- private String trKey;
+ @Column(name = "text")
+ private String text;
- @Column(name = "gtype")
- private String type;
+ @Column(name = "tr_key")
+ private String trKey;
- public I18nTranslation() {
- this(null, null, null, null, null, null, null, null);
- }
+ @Column(name = "gtype")
+ private String type;
- public I18nTranslation(final String trKey, final I18nLanguage language, final String text) {
- this("", null, DEF_PLUR_INDEX, "", text, trKey, DEF_NAMESPACE, language);
- }
+ public I18nTranslation() {
+ this(null, null, null, null, null, null, null, null, null, null);
+ }
- public I18nTranslation(final String facet, final Integer itemId, final Integer pluralizationIndex,
- final String tableName, final String text, final String trKey, final String type,
- final I18nLanguage language) {
- this.type = type;
- this.trKey = trKey;
- this.tableName = tableName;
- this.itemId = itemId;
- this.facet = facet;
- this.language = language;
- this.pluralizationIndex = pluralizationIndex;
- this.text = text;
- }
+ public I18nTranslation(final I18nLanguage language, final String text, final I18nTranslation parent,
+ final String noteForTranslators) {
+ this("", null, DEF_PLUR_INDEX, "", text, null, DEF_NAMESPACE, language, parent, noteForTranslators);
+ }
- public I18nTranslation cloneForNewLanguage() {
- final I18nTranslation clone = new I18nTranslation();
- clone.type = type;
- clone.trKey = trKey;
- clone.tableName = tableName;
- clone.itemId = itemId;
- clone.facet = facet;
- clone.language = null;
- clone.pluralizationIndex = pluralizationIndex;
- clone.text = null;
- return clone;
- }
+ public I18nTranslation(final String trKey, final I18nLanguage language, final String text,
+ final String noteForTranslators) {
+ this("", null, DEF_PLUR_INDEX, "", text, trKey, DEF_NAMESPACE, language, null, noteForTranslators);
+ }
- public String getFacet() {
- return this.facet;
+ public I18nTranslation(final String facet, final Integer itemId, final Integer pluralizationIndex,
+ final String tableName, final String text, final String trKey, final String type,
+ final I18nLanguage language, final I18nTranslation parent, final String noteForTranslators) {
+ this.type = type;
+ this.trKey = trKey;
+ this.tableName = tableName;
+ this.itemId = itemId;
+ this.facet = facet;
+ this.language = language;
+ this.pluralizationIndex = pluralizationIndex;
+ this.text = text;
+ this.parent = parent;
+ this.setNoteForTranslators(noteForTranslators);
+ if (parent == null) {
+ assert trKey != null;
}
-
- @Override
- public Long getId() {
- return this.id;
+ if (parent != null) {
+ assert trKey == null;
}
+ }
- public Integer getItemId() {
- return this.itemId;
- }
+ public I18nTranslation cloneForNewLanguage() {
+ final I18nTranslation clone = new I18nTranslation();
+ clone.type = type;
+ clone.trKey = null;
+ clone.tableName = tableName;
+ clone.itemId = itemId;
+ clone.facet = facet;
+ clone.language = null;
+ clone.pluralizationIndex = pluralizationIndex;
+ clone.text = null;
+ clone.parent = this;
+ return clone;
+ }
- public I18nLanguage getLanguage() {
- return language;
- }
+ public String getFacet() {
+ return this.facet;
+ }
- public Integer getPluralizationIndex() {
- return this.pluralizationIndex;
- }
+ @Override
+ public Long getId() {
+ return this.id;
+ }
- public String getTableName() {
- return this.tableName;
- }
+ public Integer getItemId() {
+ return this.itemId;
+ }
- public String getText() {
- return this.text;
- }
+ public I18nLanguage getLanguage() {
+ return language;
+ }
- public String getTrKey() {
- return this.trKey;
- }
+ public String getNoteForTranslators() {
+ return noteForTranslators;
+ }
- public String getType() {
- return this.type;
- }
+ /**
+ *
+ * The id of what we are translating
+ *
+ * @return the parent id
+ */
+ public I18nTranslation getParent() {
+ return parent;
+ }
- public void setFacet(final String facet) {
- this.facet = facet;
- }
+ public Long getParentId() {
+ return parent == null ? null : parent.getId();
+ }
- @Override
- public void setId(final Long id) {
- this.id = id;
- }
+ public Integer getPluralizationIndex() {
+ return this.pluralizationIndex;
+ }
- public void setItemId(final Integer itemId) {
- this.itemId = itemId;
- }
+ public String getTableName() {
+ return this.tableName;
+ }
- public void setLanguage(final I18nLanguage language) {
- this.language = language;
- }
+ public String getText() {
+ return this.text;
+ }
- public void setPluralizationIndex(final Integer pluralizationIndex) {
- this.pluralizationIndex = pluralizationIndex;
+ public String getTrKey() {
+ if (parent != null) {
+ return parent.getTrKey();
+ } else {
+ return this.trKey;
}
+ }
- public void setTableName(final String tableName) {
- this.tableName = tableName;
- }
+ public String getType() {
+ return this.type;
+ }
- public void setText(final String text) {
- this.text = text;
- }
+ public void setFacet(final String facet) {
+ this.facet = facet;
+ }
- public void setTrKey(final String trKey) {
- this.trKey = trKey;
- }
+ @Override
+ public void setId(final Long id) {
+ this.id = id;
+ }
- public void setType(final String type) {
- this.type = type;
- }
+ public void setItemId(final Integer itemId) {
+ this.itemId = itemId;
+ }
- @Override
- public String toString() {
- return "I18nTranslation[" + trKey + " (" + language + ") " + text + "]";
- }
+ public void setLanguage(final I18nLanguage language) {
+ this.language = language;
+ }
+ public void setNoteForTranslators(final String noteForTranslators) {
+ this.noteForTranslators = noteForTranslators;
+ }
+
+ public void setParentId(final I18nTranslation parent) {
+ this.parent = parent;
+ }
+
+ public void setPluralizationIndex(final Integer pluralizationIndex) {
+ this.pluralizationIndex = pluralizationIndex;
+ }
+
+ public void setTableName(final String tableName) {
+ this.tableName = tableName;
+ }
+
+ public void setText(final String text) {
+ this.text = text;
+ }
+
+ public void setTrKey(final String trKey) {
+ this.trKey = trKey;
+ }
+
+ public void setType(final String type) {
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "I18nTranslation[" + getTrKey() + " (" + language + ") " + text + "]";
+ }
+
}
Modified: trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.List;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.I18nTranslation;
@@ -32,9 +33,9 @@
public interface I18nTranslationFinder {
String TRANSLATED_COUNT_QUERY = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text!=null";
- String TRANSLATED_QUERY = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text!=null";
+ String TRANSLATED_QUERY = "SELECT NEW cc.kune.core.shared.dto.I18nTranslationDTO(gt.id, gt.trKey, gt.text, gt.parent.id, gt.parent.trKey) FROM I18nTranslation gt LEFT JOIN gt.parent gp WHERE gt.language = :language AND gt.text!=null";
String UNTRANSLATED_COUNT_QUERY = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text=null";
- String UNTRANSLATED_QUERY = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text=null";
+ String UNTRANSLATED_QUERY = "SELECT NEW cc.kune.core.shared.dto.I18nTranslationDTO(gt.id, gt.trKey, gt.text, gt.parent.id, gt.parent.trKey) FROM I18nTranslation gt LEFT JOIN gt.parent gp WHERE gt.language = :language AND gt.text=null";
@Finder(query = "SELECT gt FROM I18nTranslation gt JOIN gt.language gl WHERE gl.code = :language", returnAs = ArrayList.class)
public List<I18nTranslation> findByLanguage(@Named("language") final String language);
@@ -45,23 +46,24 @@
@Named("language") final I18nLanguage language);
@Finder(query = TRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getTranslatedLexicon(@Named("language") final I18nLanguage language);
+ public List<I18nTranslationDTO> getTranslatedLexicon(@Named("language") final I18nLanguage language);
@Finder(query = TRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getTranslatedLexicon(@Named("language") final I18nLanguage language,
+ public List<I18nTranslationDTO> getTranslatedLexicon(@Named("language") final I18nLanguage language,
@FirstResult final int first, @MaxResults final int max);
@Finder(query = TRANSLATED_COUNT_QUERY)
public Long getTranslatedLexiconCount(@Named("language") final I18nLanguage language);
@Finder(query = UNTRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getUnstranslatedLexicon(@Named("language") final I18nLanguage language,
- @FirstResult final int first, @MaxResults final int max);
+ public List<I18nTranslationDTO> getUnstranslatedLexicon(
+ @Named("language") final I18nLanguage language, @FirstResult final int first,
+ @MaxResults final int max);
@Finder(query = UNTRANSLATED_COUNT_QUERY)
public Long getUnstranslatedLexiconCount(@Named("language") final I18nLanguage language);
@Finder(query = UNTRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getUntranslatedLexicon(@Named("language") final I18nLanguage language);
+ public List<I18nTranslationDTO> getUntranslatedLexicon(@Named("language") final I18nLanguage language);
}
Copied: trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java (from rev 1511, trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/AbstractLanguageSelectorPanel.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -0,0 +1,161 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.i18n;
+
+import cc.kune.common.client.errors.UIException;
+import cc.kune.common.client.utils.SimpleCallback;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.extjs.gxt.ui.client.data.BaseModel;
+import com.extjs.gxt.ui.client.event.BaseEvent;
+import com.extjs.gxt.ui.client.event.Events;
+import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.store.ListStore;
+import com.extjs.gxt.ui.client.widget.form.ComboBox;
+import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
+import com.extjs.gxt.ui.client.widget.form.FormPanel;
+
+public abstract class AbstractLanguageSelectorPanel extends FormPanel {
+
+ @SuppressWarnings("serial")
+ public class LanguageData extends BaseModel {
+
+ private static final String CODE = "code";
+ private static final String ENGLISH_NAME = "englishName";
+
+ public LanguageData(final String code, final String englishName) {
+ set(CODE, code);
+ set(ENGLISH_NAME, englishName);
+ }
+
+ public String getCode() {
+ return get(CODE);
+ }
+
+ public String getEnglishName() {
+ return get(ENGLISH_NAME);
+ }
+ }
+
+ public static final String LANG_FIELD = "k-langsp-lf";
+
+ private final I18nTranslationService i18n;
+ private ComboBox<LanguageData> langCombo;
+ private final Session session;
+
+ public AbstractLanguageSelectorPanel(final I18nTranslationService i18n, final Session session,
+ final boolean withEnglish) {
+ super();
+ this.i18n = i18n;
+ this.session = session;
+ setBorders(false);
+ setFrame(false);
+ setHeaderVisible(false);
+ setBodyBorder(false);
+ createLangCombo(withEnglish);
+ super.add(langCombo);
+ }
+
+ public void addChangeListener(final SimpleCallback onChange) {
+ langCombo.addListener(Events.Select, new Listener<BaseEvent>() {
+ @Override
+ public void handleEvent(final BaseEvent be) {
+ onChange.onCallback();
+ }
+ });
+ }
+
+ private void createLangCombo(final boolean withEnglish) {
+ // Field.setMsgTarget("side");
+ langCombo = new ComboBox<LanguageData>();
+ langCombo.setName(LANG_FIELD);
+ langCombo.setMinChars(1);
+ // langCombo.setMode(ComboBox.LOCAL);
+ langCombo.setStore(createStore(withEnglish));
+ langCombo.setDisplayField("language");
+ langCombo.setTriggerAction(TriggerAction.ALL);
+ langCombo.setEmptyText(i18n.t("Enter language"));
+ langCombo.setLoadingText(i18n.t("Searching..."));
+ langCombo.setDisplayField(LanguageData.ENGLISH_NAME);
+ langCombo.setValueField(LanguageData.CODE);
+ langCombo.setTypeAhead(true);
+ langCombo.setTypeAheadDelay(1000);
+ langCombo.setSelectOnFocus(false);
+ langCombo.setWidth(140);
+ langCombo.setPageSize(7);
+ langCombo.setForceSelection(true);
+ langCombo.setAllowBlank(false);
+ }
+
+ private ListStore<LanguageData> createStore(final boolean withEnglish) {
+ final ListStore<LanguageData> list = new ListStore<LanguageData>();
+
+ for (final I18nLanguageSimpleDTO lang : session.getLanguages()) {
+ final boolean isEnglish = lang.getCode().equals("en");
+ if (!isEnglish || (isEnglish && withEnglish)) {
+ list.add(new LanguageData(lang.getCode(), lang.getEnglishName()));
+ }
+ }
+ return list;
+ }
+
+ public I18nLanguageSimpleDTO getLanguage() {
+ final String langCode = langCombo.getValue().getCode();
+ for (final I18nLanguageSimpleDTO lang : session.getLanguages()) {
+ if (lang.getCode().equals(langCode)) {
+ return lang;
+ }
+ }
+ throw new UIException("Languege not found");
+ }
+
+ public String getLanguageCode() {
+ return langCombo.getValue().getCode();
+ }
+
+ public String getLanguageEnglishName() {
+ return langCombo.getValue().getEnglishName();
+ }
+
+ @Override
+ public void reset() {
+ langCombo.reset();
+ }
+
+ public void setLangSeparator(final String separator) {
+ langCombo.setLabelSeparator(separator);
+ }
+
+ public void setLangTitle(final String langFieldTitle) {
+ if (langFieldTitle == null) {
+ setHideLabels(true);
+ } else {
+ if (langFieldTitle != null) {
+ langCombo.setFieldLabel(langFieldTitle);
+ }
+ }
+ }
+
+ public void setLanguage(final I18nLanguageSimpleDTO language) {
+ langCombo.setRawValue(language.getEnglishName());
+ }
+}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -93,7 +93,8 @@
+ (odd ? ODD_STYLE : "") + "'>");
sb.appendHtmlConstant("<div style='display: table-cell; width: 100%; padding: 1px 5px;"
+ (value.isDirty() ? DIRTY_STYLE : "") + "'>");
- sb.appendEscaped(value.getTrKey());
+ final String trKey = value.getTrKey();
+ sb.appendEscaped(trKey == null ? value.getParentTrKey() : trKey);
sb.appendHtmlConstant("</div></div>");
}
}
@@ -134,7 +135,7 @@
// used to identify translations when fields change.
cellList = new CellList<I18nTranslationDTO>(cell, I18nTranslationDTO.KEY_PROVIDER);
cellList.setPageSize(30);
- cellList.setEmptyListMessage(SafeHtmlUtils.fromTrustedString("<span style='padding: 10px; font-style: italic;'>Loading</span>"));
+ cellList.setEmptyListMessage(SafeHtmlUtils.fromTrustedString("<span style='padding: 10px; font-style: italic;'>Empty list</span>"));
cellList.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
final SingleSelectionModel<I18nTranslationDTO> selectionModel = new SingleSelectionModel<I18nTranslationDTO>(
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -140,37 +140,32 @@
item.setText(translation.getText());
item.setDirty(true);
dataProvider.refreshDisplays();
- saver.save(new I18nTranslationDTO(item.getId(), item.getTrKey(), newTranslation));
+ saver.save(new I18nTranslationDTO(item.getId(), item.getTrKey(), newTranslation,
+ item.getParentId(), item.getParentTrKey()));
}
}
public void setInfo(final I18nTranslationDTO item) {
saveIfNeeded();
this.item = item;
- final String[] splitted = splitNT(item.getTrKey());
- toTranslate.setText(splitted[0]);
- final boolean hasNT = splitted.length > 1;
+ final String trKey = item.getTrKey();
+ toTranslate.setText(trKey == null ? item.getParentTrKey() : trKey);
+ translation.setText(item.getText());
+ final boolean hasNT = TextUtils.notEmpty(item.getNoteForTranslators());
noteForTranslators.setVisible(hasNT);
noteForTranslatorsTittle.setVisible(hasNT);
if (hasNT) {
- noteForTranslators.setText(splitted[1]);
+ noteForTranslators.setText(item.getNoteForTranslators());
}
- translation.setText(item.getText());
}
public void setToLanguage(final I18nLanguageSimpleDTO language) {
toLanguageTitle.setText(i18n.tWithNT("to [%s]:", "For example, 'to Spanish':",
language.getEnglishName()));
- }
+ toTranslate.setText("");
+ translation.setText("");
+ noteForTranslators.setVisible(false);
- private String[] splitNT(final String textWithNT) {
- String[] nt;
- final String[] splitted = textWithNT.split(" \\[%NT ");
- if (splitted.length > 1) {
- nt = splitted[1].split("\\]$");
- splitted[1] = nt[0];
- }
- return splitted;
}
private void updateWithTimer() {
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -17,26 +17,21 @@
private static final String TRANSLATOR_ERROR_ID = "i18n-trans-panel-error";
private static final String TRANSLATOR_PANEL_ID = "i18n-trans-panel";
private static final int WIDTH = 570;
- private final LanguageSelectorPanel lanSelectorPanel;
+ private final AbstractLanguageSelectorPanel lanSelectorPanel;
private final I18nToTranslateGridPanel toTranslateGrid;
private final I18nTranslatedGridPanel translatedGrid;
private final I18nTranslateRecomendPanel transRecommend;
@Inject
public I18nTranslatorPanel(final I18nTranslationService i18n, final NotifyLevelImages images,
- final I18nTranslatorTabsCollection transGroup, final LanguageSelectorPanel lanSelectorPanel,
+ final I18nTranslatorTabsCollection transGroup,
+ final LanguageSelectorWithoutEnglishPanel lanSelectorPanel,
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);
setIcon(res.language());
this.lanSelectorPanel = lanSelectorPanel;
- lanSelectorPanel.addChangeListener(new SimpleCallback() {
- @Override
- public void onCallback() {
- setLanguage(lanSelectorPanel.getLanguage());
- }
- });
this.toTranslateGrid = toTranslateGrid;
this.translatedGrid = translatedGrid;
this.transRecommend = transRecommend;
@@ -47,6 +42,12 @@
lanSelectorPanel.setLangTitle(i18n.t("to"));
lanSelectorPanel.setLabelAlign(LabelAlign.RIGHT);
lanSelectorPanel.setLangSeparator(":");
+ lanSelectorPanel.addChangeListener(new SimpleCallback() {
+ @Override
+ public void onCallback() {
+ setLanguage(lanSelectorPanel.getLanguage());
+ }
+ });
}
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPresenter.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPresenter.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -62,7 +62,9 @@
@Override
public void show() {
final I18nLanguageDTO userLang = session.getCurrentLanguage();
- getView().setLanguage(new I18nLanguageSimpleDTO(userLang.getCode(), userLang.getEnglishName()));
+ if (!userLang.getCode().equals("en")) {
+ getView().setLanguage(new I18nLanguageSimpleDTO(userLang.getCode(), userLang.getEnglishName()));
+ }
getView().show();
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -1,159 +1,15 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
package cc.kune.gspace.client.i18n;
-import cc.kune.common.client.errors.UIException;
-import cc.kune.common.client.utils.SimpleCallback;
import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.extjs.gxt.ui.client.data.BaseModel;
-import com.extjs.gxt.ui.client.event.BaseEvent;
-import com.extjs.gxt.ui.client.event.Events;
-import com.extjs.gxt.ui.client.event.Listener;
-import com.extjs.gxt.ui.client.store.ListStore;
-import com.extjs.gxt.ui.client.widget.form.ComboBox;
-import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
-import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.google.inject.Inject;
-public class LanguageSelectorPanel extends FormPanel {
+public class LanguageSelectorPanel extends AbstractLanguageSelectorPanel {
- @SuppressWarnings("serial")
- public class LanguageData extends BaseModel {
-
- private static final String CODE = "code";
- private static final String ENGLISH_NAME = "englishName";
-
- public LanguageData(final String code, final String englishName) {
- set(CODE, code);
- set(ENGLISH_NAME, englishName);
- }
-
- public String getCode() {
- return get(CODE);
- }
-
- public String getEnglishName() {
- return get(ENGLISH_NAME);
- }
- }
-
- public static final String LANG_FIELD = "k-langsp-lf";
-
- private final I18nTranslationService i18n;
- private ComboBox<LanguageData> langCombo;
- private final Session session;
-
@Inject
public LanguageSelectorPanel(final I18nTranslationService i18n, final Session session) {
- super();
- this.i18n = i18n;
- this.session = session;
- setBorders(false);
- setFrame(false);
- setHeaderVisible(false);
- createLangCombo();
- super.add(langCombo);
- setBodyBorder(false);
+ super(i18n, session, true);
}
- public void addChangeListener(final SimpleCallback onChange) {
- langCombo.addListener(Events.Select, new Listener<BaseEvent>() {
- @Override
- public void handleEvent(final BaseEvent be) {
- onChange.onCallback();
- }
- });
- }
-
- private void createLangCombo() {
- // Field.setMsgTarget("side");
- langCombo = new ComboBox<LanguageData>();
- langCombo.setName(LANG_FIELD);
- langCombo.setMinChars(1);
- // langCombo.setMode(ComboBox.LOCAL);
- langCombo.setStore(createStore());
- langCombo.setDisplayField("language");
- langCombo.setTriggerAction(TriggerAction.ALL);
- langCombo.setEmptyText(i18n.t("Enter language"));
- langCombo.setLoadingText(i18n.t("Searching..."));
- langCombo.setDisplayField(LanguageData.ENGLISH_NAME);
- langCombo.setValueField(LanguageData.CODE);
- langCombo.setTypeAhead(true);
- langCombo.setTypeAheadDelay(1000);
- langCombo.setSelectOnFocus(false);
- langCombo.setWidth(140);
- langCombo.setPageSize(7);
- langCombo.setForceSelection(true);
- langCombo.setAllowBlank(false);
- }
-
- private ListStore<LanguageData> createStore() {
- final ListStore<LanguageData> list = new ListStore<LanguageData>();
-
- for (final I18nLanguageSimpleDTO lang : session.getLanguages()) {
- list.add(new LanguageData(lang.getCode(), lang.getEnglishName()));
- }
- return list;
- }
-
- public I18nLanguageSimpleDTO getLanguage() {
- final String langCode = langCombo.getValue().getCode();
- for (final I18nLanguageSimpleDTO lang : session.getLanguages()) {
- if (lang.getCode().equals(langCode)) {
- return lang;
- }
- }
- throw new UIException("Languege not found");
- }
-
- public String getLanguageCode() {
- return langCombo.getValue().getCode();
- }
-
- public String getLanguageEnglishName() {
- return langCombo.getValue().getEnglishName();
- }
-
- @Override
- public void reset() {
- langCombo.reset();
- }
-
- public void setLangSeparator(final String separator) {
- langCombo.setLabelSeparator(separator);
- }
-
- public void setLangTitle(final String langFieldTitle) {
- if (langFieldTitle == null) {
- setHideLabels(true);
- } else {
- if (langFieldTitle != null) {
- langCombo.setFieldLabel(langFieldTitle);
- }
- }
- }
-
- public void setLanguage(final I18nLanguageSimpleDTO language) {
- langCombo.setRawValue(language.getEnglishName());
- }
}
Added: trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorWithoutEnglishPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorWithoutEnglishPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorWithoutEnglishPanel.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -0,0 +1,15 @@
+package cc.kune.gspace.client.i18n;
+
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class LanguageSelectorWithoutEnglishPanel extends AbstractLanguageSelectorPanel {
+
+ @Inject
+ public LanguageSelectorWithoutEnglishPanel(final I18nTranslationService i18n, final Session session) {
+ super(i18n, session, false);
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -34,54 +34,54 @@
import com.gwtplatform.mvp.client.ViewImpl;
public class EntityLicensePanel extends ViewImpl implements EntityLicenseView {
- public static final String LICENSE_LABEL = "k-elp-lic-lab";
- private final I18nTranslationService i18n;
- private final FlowPanel licenseBar;
- private final Image licenseImage;
- private final Tooltip tooltip;
+ public static final String LICENSE_LABEL = "k-elp-lic-lab";
+ private final I18nTranslationService i18n;
+ private final FlowPanel licenseBar;
+ private final Image licenseImage;
+ private final Tooltip tooltip;
- @Inject
- public EntityLicensePanel(final I18nTranslationService i18n, final GSpaceArmor armor) {
- this.i18n = i18n;
- licenseImage = new Image();
+ @Inject
+ public EntityLicensePanel(final I18nTranslationService i18n, final GSpaceArmor armor) {
+ this.i18n = i18n;
+ licenseImage = new Image();
- licenseBar = new FlowPanel();
- licenseBar.add(licenseImage);
- licenseImage.addStyleName("k-footer-license-img");
- armor.getEntityFooter().add(licenseBar);
- tooltip = Tooltip.to(licenseImage, ".");
- }
+ licenseBar = new FlowPanel();
+ licenseBar.add(licenseImage);
+ licenseImage.addStyleName("k-footer-license-img");
+ armor.getEntityFooter().add(licenseBar);
+ tooltip = Tooltip.to(licenseImage, ".");
+ }
- @Override
- public Widget asWidget() {
- return null;
- }
+ @Override
+ public Widget asWidget() {
+ return null;
+ }
- @Override
- public void attach() {
- licenseBar.setVisible(true);
- }
+ @Override
+ public void attach() {
+ licenseBar.setVisible(true);
+ }
- @Override
- public void detach() {
- licenseBar.setVisible(false);
- }
+ @Override
+ public void detach() {
+ licenseBar.setVisible(false);
+ }
- @Override
- public HasClickHandlers getImage() {
- return licenseImage;
- }
+ @Override
+ public HasClickHandlers getImage() {
+ return licenseImage;
+ }
- @Override
- public void openWindow(final String url) {
- KuneWindowUtils.open(url);
- }
+ @Override
+ public void openWindow(final String url) {
+ KuneWindowUtils.open(url);
+ }
- @Override
- public void showLicense(final String groupName, final LicenseDTO licenseDTO) {
- final String licenseText = i18n.t("© [%s], under license: [%s]", groupName, licenseDTO.getLongName());
- // KuneUiUtils.setQuickTip(licenseLabel, licenseText);
- licenseImage.setUrl(licenseDTO.getImageUrl());
- tooltip.setText(licenseText);
- }
+ @Override
+ public void showLicense(final String groupName, final LicenseDTO licenseDTO) {
+ final String licenseText = i18n.t("© [%s], under license: [%s]", groupName, licenseDTO.getLongName());
+ // KuneUiUtils.setQuickTip(licenseLabel, licenseText);
+ licenseImage.setUrl(licenseDTO.getImageUrl());
+ tooltip.setText(licenseText);
+ }
}
Modified: trunk/src/main/resources/db/liquibase_changelog.xml
===================================================================
--- trunk/src/main/resources/db/liquibase_changelog.xml 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/resources/db/liquibase_changelog.xml 2011-09-19 13:00:39 UTC (rev 1521)
@@ -143,4 +143,10 @@
encoding="utf8" stripComments="1" />
<rollback>SELECT * FROM globalize_countries;</rollback>
</changeSet>
+ <changeSet id="22" author="vjrj">
+ <comment>I18n translations cleanup</comment>
+ <sqlFile path="src/main/resources/db/update-0017-i18nclean2.sql"
+ encoding="utf8" stripComments="1" />
+ <rollback>SELECT * FROM globalize_countries;</rollback>
+ </changeSet>
</databaseChangeLog>
Added: trunk/src/main/resources/db/update-0017-i18nclean2.sql
===================================================================
--- trunk/src/main/resources/db/update-0017-i18nclean2.sql (rev 0)
+++ trunk/src/main/resources/db/update-0017-i18nclean2.sql 2011-09-19 13:00:39 UTC (rev 1521)
@@ -0,0 +1,3 @@
+BEGIN WORK;
+TRUNCATE TABLE globalize_translations;
+COMMIT;
\ No newline at end of file
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/main/resources/kune.properties 2011-09-19 13:00:39 UTC (rev 1521)
@@ -1,16 +1,13 @@
### kune.properties
-### general
+### general site config
-kune.upload.location = /var/lib/kune/uploads/
-
-### site config
-
kune.siteurl = http://localhost:8080
kune.sitelogourl = images/kune-logo-16px.png
# Every kune site have a group with this name:
+
kune.default.site.name = Site Administration
kune.default.site.shortName = site
kune.site.domain = localhost
@@ -90,12 +87,17 @@
kune.wsthemes.blackwhite.colors = #FFF, #FFF, #000, #FFF, #FFF, #000, #000, #FFF
kune.wsthemes.transparent.backgrounds = transparent, transparent, #e3dbdb, transparent, transparent, #e3dbdb, transparent, transparent
kune.wsthemes.transparent.colors = #000, #000, #000, #000, #000, #000, #000, #000
-### Gallery options
-kune.upload.gallerypermittedextensions = jpg,jpeg,png,gif,bmp,svg,avi,mpg,mpeg,ogg,mov,tif,tiff,mp3,wav
+### Uploads
+
+kune.upload.location = /var/lib/kune/uploads/
kune.upload.maxfilesizeinmegas = 10
kune.upload.maxfilesizeinks = 10000000
kune.upload.delayfortest = 50
+
+### Gallery options
+kune.upload.gallerypermittedextensions = jpg,jpeg,png,gif,bmp,svg,avi,mpg,mpeg,ogg,mov,tif,tiff,mp3,wav
+
# Images are resized to thumbsize pixels and later cropped (centered) to cropsize
# (integer values)
kune.images.resizewidth = 400
Modified: trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/test/java/cc/kune/core/client/i18n/I18nUtilsTest.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -24,6 +24,8 @@
@Test
public void basicTests() {
assertEquals("yesOrNo", I18nUtils.convertMethodName("yes, or & no?"));
+ assertEquals("yesOrNo", I18nUtils.convertMethodName("yes or no"));
+ assertEquals("yesOrNo", I18nUtils.convertMethodName("yes or no"));
}
@Test
Modified: trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java 2011-09-16 00:01:50 UTC (rev 1520)
+++ trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java 2011-09-19 13:00:39 UTC (rev 1521)
@@ -74,8 +74,10 @@
final int initialSize = map.size();
final int initialSize2 = map2.size();
- final String translation = translationManager.getTranslation("es", "Foo foo foo");
- final String translation2 = translationManager.getTranslation("aa", "Foo foo foo");
+ final String translation = translationManager.getTranslation("es", "Foo foo foo",
+ "note for translators");
+ final String translation2 = translationManager.getTranslation("aa", "Foo foo foo",
+ "note for translators");
assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation);
assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation2);
@@ -91,47 +93,32 @@
@Test
public void getNonExistentTranslationReturnsDefaultLanguage() {
- final String translation = translationManager.getTranslation("af", "January [month]");
+ final String translation = translationManager.getTranslation("af", "January [month]",
+ "note for translators");
assertEquals("January", translation);
}
@Test
public void getTranslation() {
- final String translation = translationManager.getTranslation("af", "Sunday [weekday]");
+ final String translation = translationManager.getTranslation("af", "Sunday [weekday]",
+ "note for translators");
assertEquals("Sondag", translation);
}
@Test
public void getTranslationUTF8() {
- final String translation = translationManager.getTranslation("el", "January [month]");
+ final String translation = translationManager.getTranslation("el", "January [month]",
+ "note for translators");
assertEquals("Ιανουάριος", translation);
}
@Test
- public void getTranslationWithIntArg() {
- final String translation = translationManager.getTranslation("en", "[%d] users", 20);
- assertEquals("20 users", translation);
- }
-
- @Test
public void getTranslationWithIntArgFromService() {
final String translation = translationService.t("[%d] users", 20);
assertEquals("20 users", translation);
}
@Test
- public void getTranslationWithIntArgFromWithNtService() {
- final String translation = translationService.tWithNT("[%d] users", "foo foo", 20);
- assertEquals("20 users", translation);
- }
-
- @Test
- public void getTranslationWithStringArg() {
- final String translation = translationManager.getTranslation("en", "[%s] users", "Twenty");
- assertEquals("Twenty users", translation);
- }
-
- @Test
public void getTranslationWithStringArgFromService() {
final String translation = translationService.t("[%s] users", "Twenty");
assertEquals("Twenty users", translation);
@@ -154,27 +141,24 @@
languageManager.persist(spanish);
languageManager.persist(afrikaans);
languageManager.persist(greek);
- translationManager.persist(new I18nTranslation("Sunday [weekday]", english, "Sunday"));
- translationManager.persist(new I18nTranslation("January [month]", english, "January"));
- translationManager.persist(new I18nTranslation("Sunday [weekday]", afrikaans, "Sondag"));
- translationManager.persist(new I18nTranslation("January [month]", greek, "Ιανουάριος"));
+ translationManager.persist(new I18nTranslation("Sunday [weekday]", english, "Sunday",
+ "note for translators"));
+ translationManager.persist(new I18nTranslation("January [month]", english, "January",
+ "note for translators"));
+ translationManager.persist(new I18nTranslation("Sunday [weekday]", afrikaans, "Sondag",
+ "note for translators"));
+ translationManager.persist(new I18nTranslation("January [month]", greek, "Ιανουάριος",
+ "note for translators"));
translationManager.persist(new I18nTranslation(StringEscapeUtils.escapeHtml("[%s] users"), english,
- StringEscapeUtils.escapeHtml("[%s] users")));
+ StringEscapeUtils.escapeHtml("[%s] users"), "note for translators"));
translationManager.persist(new I18nTranslation(StringEscapeUtils.escapeHtml("[%d] users"), english,
- StringEscapeUtils.escapeHtml("[%d] users")));
+ StringEscapeUtils.escapeHtml("[%d] users"), "note for translators"));
final I18nCountry gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".",
"United Kingdom", "western", ",");
countryManager.persist(gb);
}
@Test
- public void setTranslation() {
- translationManager.setTranslation("en", "Foo foo foo", "Foo foo foo translation");
- final String translation = translationManager.getTranslation("en", "Foo foo foo");
- assertEquals("Foo foo foo translation", translation);
- }
-
- @Test
public void testGetLexicon() {
final HashMap<String, String> map = translationManager.getLexicon("af");
assertTrue(map.size() > 0);
1
0
16 Sep '11
Author: vjrj_
Date: 2011-09-16 02:01:50 +0200 (Fri, 16 Sep 2011)
New Revision: 1520
Modified:
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
Log:
Small fix with Wave client mock
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-09-15 23:46:46 UTC (rev 1519)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-09-16 00:01:50 UTC (rev 1520)
@@ -32,12 +32,11 @@
import cc.kune.core.client.state.SiteTokens;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.wave.client.WaveClientView;
+import cc.kune.wave.client.WaveClientProvider;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
import com.google.inject.Inject;
-import com.google.inject.Provider;
public class ErrorHandler {
@@ -45,11 +44,11 @@
private final I18nTranslationService i18n;
private final Session session;
private final StateManager stateManager;
- private final Provider<WaveClientView> waveClient;
+ private final WaveClientProvider waveClient;
@Inject
public ErrorHandler(final Session session, final I18nTranslationService i18n,
- final StateManager stateManager, final EventBus eventBus, final Provider<WaveClientView> waveClient) {
+ final StateManager stateManager, final EventBus eventBus, final WaveClientProvider waveClient) {
this.session = session;
this.i18n = i18n;
this.stateManager = stateManager;
1
0
Author: vjrj_
Date: 2011-09-16 01:46:46 +0200 (Fri, 16 Sep 2011)
New Revision: 1519
Added:
trunk/script/syncI18nTransInDb.sh
trunk/src/main/resources/db/update-0017-i18nclean1.sql
Modified:
trunk/DEV-GUIDE
trunk/script/findMsg.sh
trunk/src/main/resources/db/liquibase_changelog.xml
Log:
NEW - # 79: I18n refactorization
http://kune.ourproject.org/issues/ticket/79
Modified: trunk/DEV-GUIDE
===================================================================
--- trunk/DEV-GUIDE 2011-09-14 11:56:30 UTC (rev 1518)
+++ trunk/DEV-GUIDE 2011-09-15 23:46:46 UTC (rev 1519)
@@ -303,6 +303,10 @@
"Being written in Java, we strongly recommend following the principles outlined in Effective Java. On top of that, patterns that aid testability (dependency injection, etc) are quite important. But beyond that, I don't know if there are any other patterns or practices that would be universal across the whole thing. The web client and the server run in very different environments, so the appropriate patterns change (e.g., the client-only code doesn't have to worry about thread safety, but should worry about excessive short-lived object creation)."
+=== Running Hosted Mode without Wave webclient ===
+
+See class WaveClientProvider in Kune (in a short term, we should define this in a .gwt.xml not there, but this is a start point).
+
==Changelog==
Periodically update the Changelog using svn2cl:
Modified: trunk/script/findMsg.sh
===================================================================
--- trunk/script/findMsg.sh 2011-09-14 11:56:30 UTC (rev 1518)
+++ trunk/script/findMsg.sh 2011-09-15 23:46:46 UTC (rev 1519)
@@ -1,3 +1,3 @@
#!/bin/bash
STR=`echo $1 | sed 's/ /\\[\\\"\\\+\\\n \\]\*/g'`
-echo egrep -r -m 1 "\"$STR\"" src/main/java/cc
\ No newline at end of file
+grep -q -r -m 1 "\"$STR\"" src/main/java/cc
\ No newline at end of file
Added: trunk/script/syncI18nTransInDb.sh
===================================================================
--- trunk/script/syncI18nTransInDb.sh (rev 0)
+++ trunk/script/syncI18nTransInDb.sh 2011-09-15 23:46:46 UTC (rev 1519)
@@ -0,0 +1,50 @@
+#!/bin/bash
+mysql -B --skip-column-names --password="db4kune" -u kune kune_dev -e \
+"SELECT id, tr_key, language_id FROM globalize_translations" \
+| sed 's/ /ł/g' \
+| awk -F "ł" '
+BEGIN {
+ print "BEGIN;"
+}
+{
+ trkey=$2
+ id=$1
+ lang=$3
+ #gsub(/\(/, "\\(", trkey)
+ #gsub(/\)/, "\\)", trkey)
+ gsub(/\[/, "\\[", trkey)
+ gsub(/\]/, "\\]", trkey)
+ gsub(/&/, "\\\\&", trkey)
+ gsub(/;/, "\\;", trkey)
+ #print trkey
+ #exit
+ cmd="bin/findMsg.sh \""trkey"\""
+ #print cmd
+ #exit
+ mat=match($2, "(.*NT weekday.*|.*NT month.*|.*NT abbreviated weekday.*|.*NT abbreviated month.*|.*default.*|.*green.*|.*purple.*|.*grey.*|.*red.*|.*sahara.*|.*blue.*|.*redblack.*|.*camp.*|.*pink.*|.*highcontrast.*|.*whiteblack.*|.*blackwhite.*|.*transparent.*)")
+ if (mat == 0) {
+ result = system(cmd)
+ #print result
+ if (result != "0") {
+ print "DELETE FROM globalize_translations WHERE tr_key=\""$2"\" AND language_id="lang";"
+ }
+ }
+}
+END {
+ print "ROLLBACK;"
+}'
+
+# NOT USED NOW, BUT MAYBE FOR TESTS:
+
+#| grep "accept this member" \
+
+#|tail -200 | \
+
+#grep globalize_translations src/main/resources/db/update-00* | grep INSERT \
+#| sed "s/['\"],['\"]/SEPAR/g" \
+#| sed "s/['\"],/SEPAR/g" \
+#| sed "s/SEPAR/ł/g" \
+#| awk -F "ł" '{print $4"ł"$6}' \
+#| sed "s/^['\"]//g" | sed "s/['\"],/\|/g" | sed 's/);//g' \
+#| sed "s/\([^\]\)'/\1\\\'/g" \
+
Property changes on: trunk/script/syncI18nTransInDb.sh
___________________________________________________________________
Name: svn:executable
+ *
Modified: trunk/src/main/resources/db/liquibase_changelog.xml
===================================================================
--- trunk/src/main/resources/db/liquibase_changelog.xml 2011-09-14 11:56:30 UTC (rev 1518)
+++ trunk/src/main/resources/db/liquibase_changelog.xml 2011-09-15 23:46:46 UTC (rev 1519)
@@ -137,4 +137,10 @@
encoding="utf8" stripComments="1" />
<rollback>SELECT * FROM globalize_countries;</rollback>
</changeSet>
+ <changeSet id="21" author="vjrj">
+ <comment>I18n translations cleanup</comment>
+ <sqlFile path="src/main/resources/db/update-0017-i18nclean1.sql"
+ encoding="utf8" stripComments="1" />
+ <rollback>SELECT * FROM globalize_countries;</rollback>
+ </changeSet>
</databaseChangeLog>
Added: trunk/src/main/resources/db/update-0017-i18nclean1.sql
===================================================================
--- trunk/src/main/resources/db/update-0017-i18nclean1.sql (rev 0)
+++ trunk/src/main/resources/db/update-0017-i18nclean1.sql 2011-09-15 23:46:46 UTC (rev 1519)
@@ -0,0 +1,847 @@
+BEGIN WORK;
+DELETE FROM globalize_translations WHERE tr_key = "This is only a meet sample. You can invite other participants to this meeting, but also publish to the general public allowing you to to help in the organization, call and speed-up of events." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Language:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "admin in:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Participates as..." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Groups in which participates" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Select Workspace theme for this group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Go to Public Space" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "This content is not public" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin this:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can edit:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can view:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Permissions" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Nobody" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Everybody" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "(Not rated)" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "� [%s], under license: " AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Request to join" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more in this group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Must be between 3 and 15 lowercase characters. Can only contain characters, numbers, and dashes" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Passwords do not match" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Language" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Country" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your country" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Timezone" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your timezone" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Close [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Text to translate" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Click to sort" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Translation (click to edit)" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Change language" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add member" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Don't accept this member" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Help to translate kune to [%s]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Administrate these groups [%NT talking about a person]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "and as collaborator in:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Excellent" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Below average" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Above average" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Poor" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Average" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new [%s]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Please enter a name:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "This is a copyleft license" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "This is not a copyleft license" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Select a license to share your group contents with other people. We recomend [%s] licenses for practical works." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Please fill this form and follow the next steps to register a new group:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search results" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Searching for: [%s]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search users" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search groups" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Language:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "admin in:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Participates as..." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Groups in which participates" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Select Workspace theme for this group" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Go to Public Space" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "This content is not public" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin this:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can edit:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can view:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Permissions" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Nobody" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Everybody" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "(Not rated)" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "� [%s], under license: " AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Request to join" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more in this group" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Must be between 3 and 15 lowercase characters. Can only contain characters, numbers, and dashes" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Passwords do not match" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Language" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Country" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your country" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Timezone" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your timezone" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Close [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Text to translate" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Click to sort" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Translation (click to edit)" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Change language" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add member" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Don't accept this member" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Help to translate kune to [%s]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Administrate these groups [%NT talking about a person]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "and as collaborator in:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Excellent" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Below average" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Above average" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Poor" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Average" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new [%s]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Please enter a name:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "This is a copyleft license" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "This is not a copyleft license" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Select a license to share your group contents with other people. We recomend [%s] licenses for practical works." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Please fill this form and follow the next steps to register a new group:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Search results" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Search [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Searching for: [%s]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Search users" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Search groups" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "([%d] user)" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Content rated" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "([%d] user)" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Content rated" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Put Your Logo Here" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "My buddies" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Presence of my buddies" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies connected" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies not connected" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add new buddy" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Connected" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Start a chat with this person" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Not connected" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Help" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "� Back [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Next � [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Cancel [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Finish [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Type of group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Creative Commons" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Others licenses" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Allow commercial uses of your work?" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Yes, as long as others share alike" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname or email" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Retype password" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Full Name" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "My Groups" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Put Your Logo Here" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "My buddies" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Presence of my buddies" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies connected" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies not connected" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add new buddy" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Connected" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Start a chat with this person" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Not connected" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Help" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "� Back [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Next � [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Cancel [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Finish [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Type of group" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Creative Commons" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Others licenses" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Allow commercial uses of your work?" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Yes, as long as others share alike" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname or email" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Retype password" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Full Name" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "My Groups" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Background Color" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Bold" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Create Link" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Font Size" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Font Type" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Horizontal Rule" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Right" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Image" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Italic" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Center" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Left Justify" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Right Justify" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Left" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Formatting" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Link" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Strikethrough" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Subscript" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Superscript" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Underline" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Font Color" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Extra small" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Very small" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "small" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Medium" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Large" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Very large" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Extra large" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Edit HTML" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Background Color" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Bold" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Create Link" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Font Size" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Font Type" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Horizontal Rule" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Right" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Image" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Italic" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Center" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Left Justify" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Right Justify" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Left" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Formatting" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Link" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Strikethrough" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Subscript" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Superscript" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Underline" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Font Color" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Extra small" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Very small" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "small" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Medium" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Large" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Very large" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Extra large" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Edit HTML" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Save [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Document Saved" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Save confirmation" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Save before close?" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Save [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Document Saved" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Save confirmation" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Save before close?" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Edit [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "by: [%s] [%NT used in a list of authors]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Language: [%s]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to help with translation" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Edit [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "by: [%s] [%NT used in a list of authors]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Language: [%s]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to help with translation" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Published on: [%s]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Published on: [%s]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Error performing operation" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Incorrect nickname/email or password" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Requested. Waiting for admins decision" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "This name in already in use, try with a different name." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users and groups and add as members" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add [%s] as member?" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Confirm addition of member" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Member added as collaborator" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Error performing operation" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Incorrect nickname/email or password" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Requested. Waiting for admins decision" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "This name in already in use, try with a different name." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users and groups and add as members" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add [%s] as member?" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Confirm addition of member" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Member added as collaborator" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Alert" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, you are the last admin of this group. Look for someone to substitute you appropriately as admin before unjoin this group." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Alert" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, you are the last admin of this group. Look for someone to substitute you appropriately as admin before unjoin this group." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Server error saving translation" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Server error saving translation" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Error saving document. Retrying..." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Type of member changed" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Unjoin this group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Collaborate in these groups" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Error saving document. Retrying..." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Type of member changed" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Unjoin this group" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Collaborate in these groups" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Translate [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Now you can participate more actively in this site with other people and groups. You can also use your personal space to publish contents. Your email is not verified, please follow the instructions you will receive by email." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Thanks for registering" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Write a new name:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Rename" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "New chat room" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add a folder" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Folder created" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "A project is a kind of group in which new members inclusion is moderated by the project administrators. An administrator is the person who creates the project and other people she/he choose in the future as administrator too." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Orphaned Project" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "An organization is like a project, but organizations must be a legal entity." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "If you have an idea but you don't have capacity/possibilities/resources to work on it, just register a orphaned project, and permit others to work and develop it." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add a group or a person as member of this group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add a document" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Created, now you can edit the document" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, this functionality is currently in development" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Delete [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Translate [%NT used in button]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Now you can participate more actively in this site with other people and groups. You can also use your personal space to publish contents. Your email is not verified, please follow the instructions you will receive by email." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Thanks for registering" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Write a new name:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Rename" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "New chat room" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add a folder" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Folder created" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "A project is a kind of group in which new members inclusion is moderated by the project administrators. An administrator is the person who creates the project and other people she/he choose in the future as administrator too." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Orphaned Project" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "An organization is like a project, but organizations must be a legal entity." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "If you have an idea but you don't have capacity/possibilities/resources to work on it, just register a orphaned project, and permit others to work and develop it." AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add a group or a person as member of this group" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add a document" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Created, now you can edit the document" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, this functionality is currently in development" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Double click to rename" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Double click to rename" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Choose a license type:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Choose a license type:" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to create a group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to create a group" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new buddy to your contact list" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Click to rate this" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Report kune bugs" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new buddy to your contact list" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Click to rate this" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Report kune bugs" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more as a member in this group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Searching" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Displaying results {0} - {1} of {2} [%NT Respect {} values in translations, these will produce: 'Displaying results 1 - 25 of 95465' for instance]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "No results to display" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more as a member in this group" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Searching" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Displaying results {0} - {1} of {2} [%NT Respect {} values in translations, these will produce: 'Displaying results 1 - 25 of 95465' for instance]" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "No results to display" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Click to go to the group homepage" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Delete [%NT used in button]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Click to go to the group homepage" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Go to parent folder" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Navigation tree" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "The contents of this group don't have any tag" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Group Summary" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Some summarized information about current project" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide searcher" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search contents" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Go to parent folder" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Navigation tree" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "The contents of this group don't have any tag" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Group Summary" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Some summarized information about current project" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide searcher" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Search contents" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide translator" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Authors" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] items with this tag" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Keywords or terms associated with this work" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Authors of this work" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Remove author" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin/edit/view this work" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Date of publication of this work" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "The language of this work" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] item with this tag" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide translator" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Authors" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] items with this tag" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Keywords or terms associated with this work" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Authors of this work" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Remove author" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin/edit/view this work" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Date of publication of this work" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "The language of this work" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] item with this tag" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add author" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Add author" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Page" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "First Page" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Next Page" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Last Page" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Previous Page" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Refresh" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search users & groups" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Page" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "First Page" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Next Page" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Last Page" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Previous Page" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Refresh" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Search users & groups" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "of {0} [%NT Used to show multiple results: '1 of 30']" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "of {0} [%NT Used to show multiple results: '1 of 30']" AND language_id=5889;
+DELETE FROM globalize_translations WHERE tr_key = "Add a chat room" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Enter room" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Chat rooms" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Send" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Users" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Now in this room" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Insert a emoticon" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Change your status" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "busy" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "away" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Set status" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Invite another user to this chat room" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide chat dialog" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Connecting to the room..." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "[%s] came online" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Confirm" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Are you sure you want to exit from this room?" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "[%s] went offline" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Some summarized information about current project (in development)" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Leave the workspace and go to the public space of this group" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Select one of these licenses:" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users and groups" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "User space: it shows a list of all your documents and contents in which you participate" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Public space: In this space you can see a preview of how the Personal or Group Space looks like on the web, outside this site" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Group and personal space: Where you can create and publish contents for your personal or group web spaces" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Create a New Document. This document will be a new 'Page' in the public web if you publish it" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Select an image in your computer as the logo for this group. For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Current background image: " AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Thanks for joining this site. Now you can actively participate in this site. You can also use your personal space to publish contents. Note: your email is not verified, please follow the instructions you will receive by email." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "to [%s]: [%NT For example, 'to Spanish':]" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "This is only a meet sample. You can invite other participants to this meeting, but also publish to the general public allowing you to to help in the organization, call and speed-up of events." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Language:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "admin in:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Participates as..." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Groups in which participates" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Select Workspace theme for this group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Go to Public Space" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "This content is not public" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin this:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can edit:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can view:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Permissions" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Nobody" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Everybody" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "(Not rated)" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "� [%s], under license: " AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Request to join" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more in this group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Must be between 3 and 15 lowercase characters. Can only contain characters, numbers, and dashes" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Passwords do not match" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Language" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Country" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your country" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Timezone" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your timezone" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Close [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Text to translate" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Click to sort" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Translation (click to edit)" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Change language" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add member" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Don't accept this member" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Help to translate kune to [%s]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Administrate these groups [%NT talking about a person]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "and as collaborator in:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Excellent" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Below average" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Above average" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Poor" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Average" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new [%s]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Please enter a name:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "This is a copyleft license" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "This is not a copyleft license" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Select a license to share your group contents with other people. We recomend [%s] licenses for practical works." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Please fill this form and follow the next steps to register a new group:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search results" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Searching for: [%s]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search users" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search groups" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "([%d] user)" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Content rated" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Put Your Logo Here" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "My buddies" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Presence of my buddies" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies connected" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies not connected" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add new buddy" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Connected" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Start a chat with this person" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Not connected" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Help" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "� Back [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Next � [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Cancel [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Finish [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Type of group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Creative Commons" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Others licenses" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Allow commercial uses of your work?" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Yes, as long as others share alike" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname or email" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Retype password" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Full Name" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "My Groups" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Background Color" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Bold" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Create Link" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Font Size" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Font Type" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Horizontal Rule" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Right" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Image" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Italic" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Center" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Left Justify" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Right Justify" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Left" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Formatting" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Link" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Strikethrough" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Subscript" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Superscript" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Underline" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Font Color" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Extra small" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Very small" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "small" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Medium" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Large" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Very large" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Extra large" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Edit HTML" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Save [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Document Saved" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Save confirmation" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Save before close?" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Edit [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "by: [%s] [%NT used in a list of authors]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Language: [%s]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to help with translation" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Published on: [%s]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Error performing operation" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Incorrect nickname/email or password" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Requested. Waiting for admins decision" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "This name in already in use, try with a different name." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users and groups and add as members" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add [%s] as member?" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Confirm addition of member" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Member added as collaborator" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Alert" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, you are the last admin of this group. Look for someone to substitute you appropriately as admin before unjoin this group." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Server error saving translation" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Error saving document. Retrying..." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Type of member changed" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Unjoin this group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Collaborate in these groups" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Translate [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Now you can participate more actively in this site with other people and groups. You can also use your personal space to publish contents. Your email is not verified, please follow the instructions you will receive by email." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Thanks for registering" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Write a new name:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Rename" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "New chat room" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add a folder" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Folder created" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "A project is a kind of group in which new members inclusion is moderated by the project administrators. An administrator is the person who creates the project and other people she/he choose in the future as administrator too." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Orphaned Project" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "An organization is like a project, but organizations must be a legal entity." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "If you have an idea but you don't have capacity/possibilities/resources to work on it, just register a orphaned project, and permit others to work and develop it." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add a group or a person as member of this group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add a document" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Created, now you can edit the document" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, this functionality is currently in development" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Double click to rename" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Choose a license type:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to create a group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new buddy to your contact list" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Click to rate this" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Report kune bugs" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more as a member in this group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Searching" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Displaying results {0} - {1} of {2} [%NT Respect {} values in translations, these will produce: 'Displaying results 1 - 25 of 95465' for instance]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "No results to display" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Click to go to the group homepage" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Delete [%NT used in button]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Go to parent folder" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Navigation tree" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "The contents of this group don't have any tag" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Group Summary" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Some summarized information about current project" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide searcher" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search contents" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide translator" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Authors" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] items with this tag" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Keywords or terms associated with this work" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Authors of this work" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Remove author" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin/edit/view this work" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Date of publication of this work" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "The language of this work" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] item with this tag" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add author" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Page" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "First Page" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Next Page" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Last Page" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Previous Page" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Refresh" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search users & groups" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "of {0} [%NT Used to show multiple results: '1 of 30']" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Add a chat room" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Enter room" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Chat rooms" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Send" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Users" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Now in this room" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Insert a emoticon" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Change your status" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "busy" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "away" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Set status" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Invite another user to this chat room" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide chat dialog" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Connecting to the room..." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "[%s] came online" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Confirm" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Are you sure you want to exit from this room?" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "[%s] went offline" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Some summarized information about current project (in development)" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Leave the workspace and go to the public space of this group" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Select one of these licenses:" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users and groups" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "User space: it shows a list of all your documents and contents in which you participate" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Public space: In this space you can see a preview of how the Personal or Group Space looks like on the web, outside this site" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Group and personal space: Where you can create and publish contents for your personal or group web spaces" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Create a New Document. This document will be a new 'Page' in the public web if you publish it" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Select an image in your computer as the logo for this group. For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Current background image: " AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Thanks for joining this site. Now you can actively participate in this site. You can also use your personal space to publish contents. Note: your email is not verified, please follow the instructions you will receive by email." AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "to [%s]: [%NT For example, 'to Spanish':]" AND language_id=7484;
+DELETE FROM globalize_translations WHERE tr_key = "Select an image in your computer as your avatar. For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Search the user you want to add and in his/her homepage press 'Add as a buddie'" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Create a New Document here. This document will be a new 'Page' in the public web if you publish it" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Voting" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "New Gadget" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Calendar" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Media" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "Others" AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "A project is a kind of group in which new members joining is moderated by the project administrators. An administrator is the person who creates the project and other people she/he chooses to be administrator as well." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "An organization works as a project, but organizations must be a legal entity." AND language_id=1819;
+DELETE FROM globalize_translations WHERE tr_key = "This is only a meet sample. You can invite other participants to this meeting, but also publish to the general public allowing you to to help in the organization, call and speed-up of events." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Language:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "admin in:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Participates as..." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Groups in which participates" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Select Workspace theme for this group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Go to Public Space" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "This content is not public" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin this:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can edit:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Who more can view:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Permissions" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Nobody" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Everybody" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "(Not rated)" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "� [%s], under license: " AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Request to join" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more in this group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Must be between 3 and 15 lowercase characters. Can only contain characters, numbers, and dashes" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Passwords do not match" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Language" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Country" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your country" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Timezone" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Enter your timezone" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Close [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Text to translate" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Click to sort" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Translation (click to edit)" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Change language" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add member" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Don't accept this member" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Help to translate kune to [%s]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Administrate these groups [%NT talking about a person]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "and as collaborator in:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Excellent" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Below average" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Above average" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Poor" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Average" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new [%s]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Please enter a name:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "This is a copyleft license" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "This is not a copyleft license" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Select a license to share your group contents with other people. We recomend [%s] licenses for practical works." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Please fill this form and follow the next steps to register a new group:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search results" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Searching for: [%s]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search users" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search groups" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "([%d] user)" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Content rated" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Put Your Logo Here" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "My buddies" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Presence of my buddies" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies connected" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Buddies not connected" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add new buddy" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Connected" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Start a chat with this person" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Not connected" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Help" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "� Back [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Next � [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Cancel [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Finish [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Type of group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Creative Commons" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Others licenses" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Allow commercial uses of your work?" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Yes, as long as others share alike" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname or email" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Nickname" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Retype password" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Full Name" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "My Groups" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Background Color" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Bold" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Create Link" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Font Size" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Font Type" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Horizontal Rule" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Right" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Insert Image" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Italic" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Center" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Left Justify" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Right Justify" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Indent Left" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Formatting" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Remove Link" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Strikethrough" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Subscript" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Superscript" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Toggle Underline" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Font Color" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Extra small" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Very small" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "small" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Medium" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Large" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Very large" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Extra large" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Edit HTML" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Save [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Document Saved" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Save confirmation" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Save before close?" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Edit [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "by: [%s] [%NT used in a list of authors]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Language: [%s]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to help with translation" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Published on: [%s]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Error performing operation" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Incorrect nickname/email or password" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Requested. Waiting for admins decision" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "This name in already in use, try with a different name." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users and groups and add as members" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add [%s] as member?" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Confirm addition of member" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Member added as collaborator" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Alert" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, you are the last admin of this group. Look for someone to substitute you appropriately as admin before unjoin this group." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Server error saving translation" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Error saving document. Retrying..." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Type of member changed" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Unjoin this group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Collaborate in these groups" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Translate [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Now you can participate more actively in this site with other people and groups. You can also use your personal space to publish contents. Your email is not verified, please follow the instructions you will receive by email." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Thanks for registering" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Write a new name:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Rename" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "New chat room" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add a folder" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Folder created" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "A project is a kind of group in which new members inclusion is moderated by the project administrators. An administrator is the person who creates the project and other people she/he choose in the future as administrator too." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Orphaned Project" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "An organization is like a project, but organizations must be a legal entity." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "If you have an idea but you don't have capacity/possibilities/resources to work on it, just register a orphaned project, and permit others to work and develop it." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add a group or a person as member of this group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add a document" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Created, now you can edit the document" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Sorry, this functionality is currently in development" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Double click to rename" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Choose a license type:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Sign in or register to create a group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add a new buddy to your contact list" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Click to rate this" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Report kune bugs" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Don't participate more as a member in this group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Searching" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Displaying results {0} - {1} of {2} [%NT Respect {} values in translations, these will produce: 'Displaying results 1 - 25 of 95465' for instance]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "No results to display" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Click to go to the group homepage" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Delete [%NT used in button]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Go to parent folder" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Navigation tree" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "The contents of this group don't have any tag" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Group Summary" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Some summarized information about current project" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide searcher" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search contents" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide translator" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Authors" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] items with this tag" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Keywords or terms associated with this work" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Authors of this work" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Remove author" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Who can admin/edit/view this work" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Date of publication of this work" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "The language of this work" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "[%d] item with this tag" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add author" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Page" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "First Page" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Next Page" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Last Page" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Previous Page" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Refresh" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search users & groups" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "of {0} [%NT Used to show multiple results: '1 of 30']" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Add a chat room" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Enter room" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Chat rooms" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Send" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Users" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Now in this room" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Insert a emoticon" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Change your status" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "busy" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "away" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Set status" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Invite another user to this chat room" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Show/hide chat dialog" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Connecting to the room..." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "[%s] came online" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Confirm" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Are you sure you want to exit from this room?" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "[%s] went offline" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Some summarized information about current project (in development)" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Leave the workspace and go to the public space of this group" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Select one of these licenses:" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users and groups" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search existing users" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "User space: it shows a list of all your documents and contents in which you participate" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Public space: In this space you can see a preview of how the Personal or Group Space looks like on the web, outside this site" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Group and personal space: Where you can create and publish contents for your personal or group web spaces" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Create a New Document. This document will be a new 'Page' in the public web if you publish it" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Select an image in your computer as the logo for this group. For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Current background image: " AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Thanks for joining this site. Now you can actively participate in this site. You can also use your personal space to publish contents. Note: your email is not verified, please follow the instructions you will receive by email." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "to [%s]: [%NT For example, 'to Spanish':]" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Select an image in your computer as your avatar. For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Search the user you want to add and in his/her homepage press 'Add as a buddie'" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Create a New Document here. This document will be a new 'Page' in the public web if you publish it" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Voting" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "New Gadget" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Calendar" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Media" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "Others" AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "A project is a kind of group in which new members joining is moderated by the project administrators. An administrator is the person who creates the project and other people she/he chooses to be administrator as well." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "An organization works as a project, but organizations must be a legal entity." AND language_id=1607;
+DELETE FROM globalize_translations WHERE tr_key = "[%s] created [%NT New content created, for instance]" AND language_id=1819;
+COMMIT;
\ No newline at end of file
1
0