The XWiki development team is pleased to announce the release of XWiki
Enterprise 2.0 Milestone 3.
Go grab it at http://www.xwiki.org/xwiki/bin/view/Main/Download
This is the third and last milestone for the 2.0 version.
The main goal of 2.0 is to make XWiki fully XWiki 2.0 syntax.
Main changes from 2.0 Milestone 2:
* Lots of improvements and new features in the new WYSIWYG editor
* Lots of improvements and bugfixes in the rendering engine and
the syntax converter
* Upgrade to SmartGWT 1.2
* New experimental network event distribution module
* Several blog application improvements
* Several tags application bug fixes
* Translations updated for de, fr, lv, nl, ru
For more information see the Release notes at:
http://www.xwiki.org/xwiki/bin/view/Main/ReleaseNotesXWikiEnterprise20M3
Thanks
-The XWiki dev team
Hello,
I have a few questions about how to contribute to the dutch
application_resource file.
Yesterday I have added some translations to the dutch translation of the
XE resources at the I10n.wiki.org site. Is there any documentation about
this site? I am unsure about what some functions do and the effects they
may have on others. For instance the link 'Import/reimport default
language file', Admin actions like 'Import' and 'Prepare'. Also I
noticed that when I get the dutch translation as a application resource
file, it only has the resources filled in if a dutch translation exists.
This seems logical, but as long as not all strings have a dutch
translation, my xwiki contains lots of empty strings. Is there a way to
build a resource file with dutch translations where available, and the
default english strings when not? Another thing that is not clear to me
is the functionality around reviewing and validation. If I find a
translation that is incorrect of I thing there is a better one, can I
just change it, or should I somehow make a review request to somebody
authorized to accept or reject the change? Is there any way to know who
is contributing to the same translation in order to achieve some common
ideas about how to translate xwiki terms?
Thanks,
Henk
--
==
Henk F. Schouten, ICT-architect, Dienst ICT
room: SL 2.32, phone (31) 70 4457611, email: H.F.Schouten(a)hhs.nl
De Haagse Hogeschool, Johanna Westerdijkplein 75, 2521 EN the Hague (NL)
On Aug 13, 2009, at 3:52 PM, Henk Schouten wrote:
>
> Hello,
>
> I have a few questions about how to contribute to the dutch
> application_resource file.
> Yesterday I have added some translations to the dutch translation of
> the
> XE resources
> at the I10n.wiki.org site.
Yes that's very cool thanks! :)
We've already applied them and they'll be in today's release of XE 2.0M3
Thanks
-Vincent
> Is there any documentation about this site? I
> am unsure about
> what some functions do and the effects they may have on others. For
> instance the link
> 'Import/reimport default language file', Admin actions like 'Import'
> and
> 'Prepare'. Also
> I noticed that when I get the dutch translation as a application
> resource file, it only has
> the resources filled in if a dutch translation exists. This seems
> logical, but as long as not
> all strings have a dutch translation, my xwiki contains lots of empty
> strings. Is there a
> way to build a resource file with dutch translations where available,
> and the default
> english strings when not? Another thing that is not clear to me is the
> functionality around
> reviewing and validation. If I find a translation that is incorrect
> of I
> thing there is a better
> one, can I just change it, or should I somehow make a review request
> to
> somebody
> authorized to accept or reject the change? Is there any way to know
> who
> is contributing
> to the same translation in order to achieve some common ideas about
> how
> to translate
> xwiki terms?
>
> Thanks,
> Henk
Hi devs,
I would like to release XWiki Enterprise 2.0M3.
It's the last milestone release for 2.0 before starting the RC process.
36 jira as been closed for this release. Among others things it
introduce network event distribution system, footnote macro and light
XHTML renderer. See
http://www.xwiki.org/xwiki/bin/view/Main/ReleaseNotesXWikiEnterprise20M3
for more.
Here is my +1
--
Thomas Mortagne
Hi
I attached a patch to this JIRA report that fixes various issues around the feed plugin when used within the Blog application:
http://jira.xwiki.org/jira/browse/XWIKI-4158
It does not fix all the issues but the ones releated to the Blog application within the Feed plugin.
Cheers
Andreas Schaefer
This might be useful for those wanting to do server administration functions
(start/stop tomcat, reboot, stats, etc) out of an Xwiki doc (make sure your
doc is password protected or more, if it allows people to reboot your
server!; Anything needing root or tomcat user would use /etc/sudoers to
grant specfic permissions to specific programs needed by user
tomcat-ssh-slave):
Input:
> ==== Use Groovy Script run server processes and display result ====
> See [[SshHelperClass?viewer=code]], [[
> http://blog.asyd.net/2008/12/xwiki-cest-decidemment-magique/]]
> ==== Call parseGroovyFromPage("Groovy.SshHelperClass") ====
{{velocity}}
#set( $sshHelper = $xwiki.parseGroovyFromPage("Groovy.SshHelperClass") )
$sshHelper.openSession("127.0.0.1", "22", "tomcat-ssh-slave",
> "/usr/share/tomcat6/.ssh/id_dsa", "")
{{/velocity}}
> ==== Output from 'uname -a'====
##{{velocity}}$sshHelper.runCommand("uname -a"){{/velocity}}##
> ==== Output from 'free' ====
##{{velocity}}$sshHelper.runCommand("free"){{/velocity}}##
> ==== Output from 'ps -l U tomcat-ssh-slave U tomcat U apache' ====
##{{velocity}}$sshHelper.runCommand("ps -l h U tomcat-ssh-slave U tomcat U
> apache"){{/velocity}}##
> ==== Output from 'df -H' ====
##{{velocity}}$sshHelper.runCommand("df -H"){{/velocity}}##
> ==== Output from 'top -b -n 1' ====
##{{velocity}}$sshHelper.runCommand("top -b -n 1"){{/velocity}}##
> ==== Close the connection and exit tomcat-ssh-slave shell ====
warning: if something breaks above, hopefully this will get called otherwise
> we
get a left-over sub-process tomcat-ssh-slave
##{{velocity}}$sshHelper.close(){{/velocity}}##
Output:
> Use Groovy Script run server processes and display result
>
> See SshHelperClass ,
>> http://blog.asyd.net/2008/12/xwiki-cest-decidemment-magique/
>
> *Call parseGroovyFromPage("Groovy.SshHelperClass")*
>
> *Output from 'uname -a'*
>
> Linux ce 2.6.27.29-170.2.78.fc10.x86_64 #1 SMP Fri Jul 31 04:16:20 EDT
>> 2009 x86_64 x86_64 x86_64 GNU/Linux
>
> *Output from 'free'*
>
> total used free shared buffers cached
>
> Mem: 1928992 1778932 150060 0 47272 532128
>
> -/+ buffers/cache: 1199532 729460
>
> Swap: 3866616 78776 3787840
>
> *Output from 'ps -l U tomcat-ssh-slave U tomcat U apache'*
>
> 5 S 92 18792 18788 0 80 0 - 22060 select ? 0:00 sshd:
>> tomcat-ssh-slave@notty
>
> 0 R 92 18879 18792 1 80 0 - 22453 - ? 0:00 ps -l h U tomcatssh-slave U
>> tomcat U apache
>
> 0 S 91 31695 1 0 80 0 - 463955 futex_ ? 7:47 /usr/java/default/bin/java
>> -server -Xms160m -Xmx1024m -XX:PermSize=160m -XX:MaxPermSize=320m ...
>
> *Output from 'df -H'*
>
> Filesystem Size Used Avail Use% Mounted on
>
> /dev/mapper/VolGroup00-LogVol00 242G 26G 204G 12% /
>
> /dev/sda1 200M 15M 175M 8% /boot
>
> tmpfs 988M 353k 988M 1% /dev/shm
>
> *Output from 'top -b -n 1'*
>
> top - 11:17:20 up 2 days, 16:21, 3 users, load average: 0.78, 0.68, 0.56
>
> Tasks: 150 total, 2 running, 148 sleeping, 0 stopped, 0 zombie
>
> Cpu(s): 7.7%us, 1.7%sy, 0.0%ni, 90.2%id, 0.3%wa, 0.1%hi, 0.1%si, 0.0%st
>
> Mem: 1928992k total, 1794420k used, 134572k free, 47304k buffers
>
> Swap: 3866616k total, 78776k used, 3787840k free, 532356k cached
>
> ...
>
>
Special Installation Instructions
To make this run (Fedora Linux):
1. sudo yum install trilead-ssh2 trilead-ssh2-javadoc
2. sudo ln -s /usr/share/java/trilead-ssh2-213.jar
/usr/share/java/tomcat6/trilead-ssh2.jar
3. Make sure "tomcat" user exists in /etc/passwd, and create an additional
uid=92 gid=92 account "tomcat-ssh-slave":
• tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat6:/bin/sh
° "tomcat" user created as "disabled" by installing tomcat6-6.0.18-6.2.fc10
• tomcat-ssh-slave:x:92:92:User for SSH Subprocesses From
Tomcat:/home/tomcat-ssh-slave:/bin/bash
° create this using fedora admin utility 'system-config-users' or by
hand-editing /etc/passwd...
4. sudo passwd -u tomcat
• unlock tomcat account temporarily
5. sudo passwd tomcat
• set password for tomcat account
6. Login to "tomcat" account using SSH from current account terminal.
7. ssh-keygen -t dsa
• Leave "empty for no passphrase" for decrypting the DSA-key produced by
ssh-keygen, although it can be specified as last parameter for
sshHelper.openSession("localhost", "22", "tomcat-ssh-slave",
"/usr/share/tomcat6/.ssh/id_dsa", "").
8. From the "tomcat" account, run "ssh tomcat-ssh-slave(a)127.0.0.1"
• answer Yes: "Are you sure you want to continue connecting (yes/no)? yes"
• enter password for tomcat-ssh-slave set above via system-config-users.
• exit the connection.
• The purpose of this step is to test the account, and init
/usr/share/tomcat6/.ssh/known_hosts
9. sudo cp /usr/share/tomcat6/.ssh/id_dsa.pub
tomcat-ssh-slave/.ssh/authorized_keys
10. From the "tomcat" account, do "ssh tomcat-ssh-slave(a)127.0.0.1" again
• verify that login happens w/o password prompt, which is what happens when
authorized_keys is set to the
public key of the account accessing SSH.
• exit from tomcat-ssh-slave account. It's now ready to run out of tomcat.
11. passwd -l tomcat
• lock the tomcat account from further logins, now that it's been setup and
the dsa public/private keys have been generated.
1. *TODO:* remove password from user tomcat-ssh-slave ('!!' in passwd field
of /etc/shadow) password not needed for login
2. *TODO:* alternately, is there a local customization to ensure certs only
used for login to the account? I know this can be done globally in
/etc/ssh/sshd_config: "PasswordAuthentication no" and "PermitEmptyPasswords
no"
3. *TODO:* for user tomcat-ssh-slave, integrate "limited command processing"
by replacing /bin/sh as login shell with /usr/local/bin/tomcat-ssh-shell (or
equiv):
#!/bin/sh -noprofile
###############################################################################
#
# File: sshslave-shell
# RCS: $Header: $
# Description: Shell to allow execution of remote commands from a tomcat
server.
# For security purposes, this "login" is limited in commands it can
# perform, and runs as a separate user from the tomcat server, separating
# the ability to directly modify tomcat state from the functionality
provided
# by user tomcat-ssh-slave. This shell is run as the "login shell" (via
# /etc/passwd) for account tomcat-ssh-slave, which is accessed via SSH.
# The account is preferably a nonprivileged user account with pid>500, Home
# directory /home/tomcat-ssh-slave must exist, with correct permisssions.
# /home/tomcat-ssh-slave contains scripts referred to via
fully qualified
# filenames in this script. The directory would also store the accounts'
# .ssh settings, keys, etc. Secure, password-less access to the
tomcat-ssh-slave
# account can be achieved by having tomcat's SSH public identity
/usr/share/tomcat6/.ssh/id_dsa.pub
# installed as /home/tomcat-ssh-slave/.ssh/authorized_keys (and
keeping id_dsa secret)
# This would prevent use of tomcat-ssh-slave "account" from being used by
anything
# other than preauthorized accounts.
#
# Here's some example commands:
#
# ssh -x tomcat-ssh-slave(a)127.0.0.1 cleanlog
# ssh -x tomcat-ssh-slave(a)127.0.0.1 getlog
# ssh -x tomcat-ssh-slave(a)127.0.0.1 setdbglvl 'INFO'
# ssh -x tomcat-ssh-slave(a)127.0.0.1 getdbglvl
# ssh -x tomcat-ssh-slave(a)127.0.0.1 tomcat-restart
# ssh -x tomcat-ssh-slave(a)127.0.0.1 apache-restart
# ssh -x tomcat-ssh-slave(a)127.0.0.1 tomcat-start
# ssh -x tomcat-ssh-slave(a)127.0.0.1 apache-start
# ssh -x tomcat-ssh-slave(a)127.0.0.1 top
# ssh -x tomcat-ssh-slave(a)127.0.0.1 ps
# ssh -x tomcat-ssh-slave(a)127.0.0.1 df
# ssh -x tomcat-ssh-slave(a)127.0.0.1 free
# ssh -x tomcat-ssh-slave(a)127.0.0.1 reboot
# Author: Niels P. Mayer
# Created: Monday 8/10/2009
# Modified:
# Language: Shell-script
# Package: N/A
# Status: Production
#
# (C) Copyright 2009, Niels Mayer, all rights reserved.
#
###############################################################################
# make sure nothing funny goes on
PATH="/bin:/usr/bin"
# make sure they rsh or ssh in with a single command
if [ -z "$1" ] || [ "$1" != "-c" ]
then
echo You must use ssh -c to access this account
exit 1
else
shift
SSHSLAVE_COMMAND="$@"
fi
# only let them run specific commands, eg.
# ssh -x tomcat-ssh-slave(a)127.0.0.1 cleanlog
# ssh -x tomcat-ssh-slave(a)127.0.0.1 getlog
# ssh -x tomcat-ssh-slave(a)127.0.0.1 setdbglvl 'INFO'
# ssh -x tomcat-ssh-slave(a)127.0.0.1 getdbglvl
# ssh -x tomcat-ssh-slave(a)127.0.0.1 tomcat-restart
# ssh -x tomcat-ssh-slave(a)127.0.0.1 apache-restart
# ssh -x tomcat-ssh-slave(a)127.0.0.1 tomcat-start
# ssh -x tomcat-ssh-slave(a)127.0.0.1 apache-start
# ssh -x tomcat-ssh-slave(a)127.0.0.1 top
# ssh -x tomcat-ssh-slave(a)127.0.0.1 ps
# ssh -x tomcat-ssh-slave(a)127.0.0.1 df
# ssh -x tomcat-ssh-slave(a)127.0.0.1 free
# ssh -x tomcat-ssh-slave(a)127.0.0.1 reboot
case ${SSHSLAVE_COMMAND} in
cleanlog \
getlog \
getdbglvl \
tomcat-restart \
apache-restart \
tomcat-start \
apache-start \
top \
ps \
df \
free \
reboot \
) #single argument commands -- exact match to SSHSLAVE_COMMAND
exec "/home/tomcat-ssh-slave/${SSHSLAVE_COMMAND}"
;;
setdbglvl* \ #e.g., setdbglvl 'INFO' ... multiple argument command.
Beware command injection.
)
exec `echo "/home/tomcat-ssh-slave/${SSHSLAVE_COMMAND}" | cut -f1 -d" "`
`echo "${SSHSLAVE_COMMAND}" | cut -f2- -d" "`
;;
* )
exec echo You are not authorized to do that.
;;
esac
Niels
http://nielsmayer.com
Hi
I just checked out platform (core SVN revision: 22631) and enterprise, built it and installed the Generic installer XWiki. While starting it up I saw this exception:
2009-08-12 12:37:34.565::WARN: Failed startup of context org.mortbay.jetty.webapp.WebAppContext@4d88a387{/xwiki,/Users/schaefa/Development/xwiki/installations/xwiki.20090812/jetty/../webapps/xwiki}
java.lang.NullPointerException
at org.xwiki.observation.remote.internal.DefaultRemoteObservationManagerContext.isRemoteState(DefaultRemoteObservationManagerContext.java:36)
at org.xwiki.observation.remote.internal.jgroups.JGroupsRemoteObservationManager.notify(JGroupsRemoteObservationManager.java:150)
at org.xwiki.observation.remote.internal.LocalEventListener.onEvent(LocalEventListener.java:115)
at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:248)
at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:229)
at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:264)
at org.xwiki.container.servlet.XWikiServletContextListener.contextInitialized(XWikiServletContextListener.java:77)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1239)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:466)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mortbay.start.Main.invokeMain(Main.java:194)
at org.mortbay.start.Main.start(Main.java:523)
at org.mortbay.start.Main.main(Main.java:119)
Can't figure out what is wrong but it seems to be an issue with the Execution not be set on the DefaultRemoteObservationManagerContext or the Execution.getContext() returns null.
Cheers
Andreas Schaefer
Hi,
In order to integrate Shindig with the XWiki datastore, 4 interfaces have to
be implemented: PersonService, AppDataService, ActivityService and
MessagesService (javadocs here [0]). To this end, I have created the
xwiki-social-opensocial module [1].
While implementing PersonService (PersonServiceXW - [2]), I have encountered
the following problem:
As I needed to access the datastore, I also made PersonServiceXW a XWiki
Component in order to gain access to the DocumentAccessBridge Component.
BUT, here is the problem, the DocumentAccessBridge never gets initialized
and at runtime is null.
The reason this might happen, as Sergiu suggested, is that Shindig uses
Guice to bind the services implementations in its code, thus the
PersonServiceXW component never gets to be registered with XWiki's Component
Manager.
My question is how do I get data in and out XWiki's datastore from the
PersonService implementation, if I cannot use the DocumentAccessBridge this
way? Can it be registered to the Component Manager somehow, or is there a
completely different way this could be achieved?
I will continue with some integration details (about the patch on
xwiki-web-standard and the OpenSocial XWiki Application). At the end I
included some instructions on how to build and test them.
***xwiki-web-standard patch (apply on xwiki-platform-web), consisting of:
- in standard/src/main/webapps/templates:
* added 3 .vm files which handles getting/adding/deleting friends:
addfriend.vm, getuserfriends.vm, deletefriend.vm
- in standard/src/main/webapps/resources/xwiki/opensocial:
* added javascript and css files necessary for the Shindig container
- in standard/src/main/webapps/WEB-INF:
* modified web.xml to include all shindig servlet mappings and necessary
Guice modules
- in standard/src/main/webapps/WEB-INF/classes:
* added container/default/container.js and shindig.properties - default
Shindig container configurations. I put them in the classpath as they
required modifications from the original files
- in standard:
* modified pom.xml, to include as a dependency xwiki-social-opensocial
module
***Open Social XWiki Application, consisting of:
- OpenSocial.GadgetContainerClass - the simplest OpenSocial Gadget
container; has a single url property (the url of the gadget); in view mode
it displays/renders it
- OpenSocial.GadgetContainerClassSheet
- OpenSocial.GadgetContainerClassTemplate
- OpenSocial.HelloWorld - hello world Gadget (only displays a String) - NO
OpenSocial features - works
- OpenSocial.LabpixiesTodo - Gadget with NO OpenSocial features 1 - works
- OpenSocial.Horoscope - Gadget with NO OpenSocial features 2 - works
- OpenSocial.ListFriends - SHOULD list the friends of the currently logged
in user. The friends are retrieved using the XWiki implementation of the
Shindig's PersonService, which is located in the xwiki-social-opensocial
module (PersonServiceXW). The service TRIES to use DocumentAccessBridge
component in order to retrieve the necessary data from the XWiki datastore.
- OpenSocial.TestingGadgetsSource - used to attach gadgets XML files to the
page. Their URLs can be used for GadgetContainerClass objects (e.g.
ListFriends gadget)
- Panels.My Friends - panel, displays the friends of the currently logged in
user
- Panels.Navigation
- XWiki.FriendClass - A friend; objects of this type can be attached to user
profiles; has as a single property friendName, which contains the name of
the friend
- XWiki.FriendClassSheet
- XWiki.FriendClassTemplate
- XWiki.XWikiUserSheet - to add the list of friends to profile
- XWiki.MyResources
- XWiki.XWikiPreferences
Instructions for testing (one possible way at least):
1. Patch xwiki-platform-web (changes are only in xwiki-web-standard), with
the patch from JIRA - [3]
2. Build xwiki-web-standard
3. Build xwiki-enterprise in offline mode (-o), so it will use
xwiki-web-standard from the local repository build at step 2
4. Run XWiki Enterprise. I always use
xwiki-enterprise-jetty-hsqldb-2.0-SNAPSHOT from the generated distributions
5. Import opensocial XAR - [4]
What to look for while testing (working stuff):
- Gadgets:
- see all/add new gadgets
http://localhost:8080/xwiki/bin/view/OpenSocial/GadgetContainerClass
- http://localhost:8080/xwiki/bin/view/OpenSocial/HelloWorld
- http://localhost:8080/xwiki/bin/view/OpenSocial/LabpixiesTodo
- http://localhost:8080/xwiki/bin/view/OpenSocial/Horoscope
- http://localhost:8080/xwiki/bin/view/OpenSocial/ListFriends (social
features) --> as specified before, not working
- While you're here, you could also:
- Log in as Alice (password 'alice')
- Go to profile page and edit friends list; You should have 2 friends:
Jane and Bob (they have as passwords 'jane', and 'bob')
- See My Friends Panel, with the friends of the current logged in user
displayed
[0] -
http://incubator.apache.org/shindig/shindig-1.1.x/apidocs/org/apache/shindi…
[1] -
https://svn.xwiki.org/svnroot/xwiki/sandbox/gsoc/opensocial/xwiki-social-op…
[2] -
https://svn.xwiki.org/svnroot/xwiki/sandbox/gsoc/opensocial/xwiki-social-op…
[3] -
http://jira.xwiki.org/jira/browse/XSANDBOX-36?focusedCommentId=43674&page=c…
[4] -
http://jira.xwiki.org/jira/browse/XSANDBOX-64?focusedCommentId=43675&page=c…
Other helpful links:
- Guice module configuration for my service implementations
https://svn.xwiki.org/svnroot/xwiki/sandbox/gsoc/opensocial/xwiki-social-op…
- Exemple of PersonService being injected by Guice in Shindig's code
http://svn.apache.org/repos/asf/incubator/shindig/trunk/java/social-api/src…
Thanks,
Anamaria