Hi,
I've been experimenting with AngularJS and XWiki and I find the two
technologies are a pretty good fit.
You can see a demo of some AngularJS taking to an XWiki backend:
The extension is here:
http://extensions.xwiki.org/xwiki/bin/view/Extension/AngularJSDemo
A demo is here:
http://www.ludovic.org/xwiki/bin/view/Phones/AngularSearch
What I like a lot about AngularJS is the template approach while still
being able to bind dynamic behavior and the fact that there is no backend
compile making it a great fit for integration in XWiki pages.
The demo is a angularJS screen right in an XWiki page. The controler could
have been written as a JS Extension but in the demo it is also in the same
page. The controler is calling both LiveTable JSON pages and REST pages to
retrieve individual documents.
XWiki's current REST apis are far from optimal to quickly retrieve the
needed information to display as I had to configure 3 requests to get the
page information, the main object and the attachment list. However with
AngularJS this was very transparent as you did not need to chain the
requests. Now if would be better if we improved our REST apis with that
type of framework in mind. I've long thought that our REST system lacks the
flexibility we have with XWiki pages. If we want to have the same
flexibility with AJAX development and use and improve our REST apis instead
of writing additional APIs in XWiki pages, then we need an easy way to
extend or override existing REST apis. This could be achieved using Groovy
Scripts that the REST api can dynamically load. These groovy script your
replace, add or extend existing APIs. The example of the LiveTable is a
very good example of the lack of flexibility/speed the development of
additional REST apis represent. If we had had that flexibility the
livetable backend code could be written as REST apis and not as an XWiki
page. This is something we need to fix in our development model if we want
to be a good Javascript UI citizen.
We could push this type of integration way further providing an XWiki
service for AngularJS which would simplify reading XWiki data and
transforming it to the right objects for using in AngularJS templates. We
could also provide additional filters and features for editing.
In any case I believe this is something we really need to look into more in
the future as the embedding works quite well and the angular JS development
model fits the XWiki one quite well. It has the same "visual" aspect as
velocity development but in Javascript with the additional dynamicity.
WDYT ?
Ludovic
--
Ludovic Dubost
Founder and CEO
Blog: http://blog.ludovic.org/
XWiki: http://www.xwiki.com
Skype: ldubost GTalk: ldubost
Hi All!
I am trying to solve next task:
I need to compare login of current user (current session login) and login
of user which is stored in the object, which is added to the page.
To get first value i use next function:
xwiki.getUserName(xcontext.getUser(), false)
it is working good!
to store second value i have created object ( which is linked to page) and
added property "List of users" into it.
I can input username into this object, but i cannot get back it.
i try to get it via ${xwiki.getUserName(MyObject.display("ApproverList",
"view"), true)
but it doesn't work ( it returns link to the user profile image)
i have tried other but they don't work too.
Can somebody help me and explain, how to get user name from this object?
Hi devs,
I have filed today a blocker issue: http://jira.xwiki.org/browse/XWIKI-9041
This serious issue is the result of our current schema migration process.
Currently, managing schema changes is done at two level:
1) A automatic script is computed by hibernate, comparing the current DB
schema, and the targeted schema extracted from mapping files.
2) DataMigration may change schema using liquibase (git like solution for
managing schema changes)
According to the Hibernate team, 1) should only be used for development
purpose. The Hibernate team clearly discourage usage of 1) in production,
since it does not cover every use cases. For example, it does not:
- drop column, table, etc...
- change datatype
- add constrainst
...
However, this was the first, and until 4.x, the only way we had to manage
our database schema. This is why we have introduced 2) in 4.0, to be able
to change more information in our schema. Since 4.3, 2) was even be
splitted in two steps, one before and one after step 1) for partially
solving similar issue to http://jira.xwiki.org/browse/XWIKI-9041.
While 1) is an uncontrollable monolithic step, 2) is like the underlying
data migration, a chronologic process, that apply change in order. These
two methods does not really work well join together, since parts of step 1)
may need some part of step 2) to be done, and the reverse.
For example, migration of IDs from 32bits to 64bits bases its schema
changes on the hibernate mapping, and need the schema to be updated by
hibernate first. A new table like xwikistringlists introduced in 5.0M2
implies the creation of new constraints against existing IDs, and therefore
need the change of datatype to be processed first. There is no way out of
that situation, and this is the cause of
http://jira.xwiki.org/browse/XWIKI-9041.
Since we do not do a lot of schema updates during a release cycle, the
current situation has been manageable during the 4.x cycle. But, to avoid
XWIKI-9041, it implies that user must not skip a major release during
migration. This is a possible option, but it may implies some refactoring
of existing migration inside a given release cycle, and probably some
limitations as well.
After brainstorming about the situation with Thomas, we have concluded that
it would be better to get rid of step 1), to control precisely the
evolution of the schema. However, we do not want to cause a breakage for
existing users. So here what we proposed:
A) For any existing database having a version lower than 50000, apply the
automatic update of schema using hibernate, but based on the mapping file
of the latest 4.5.x release, and followed by B)
B) Any changes in mapping file done in 5.x or later (implying schema
changes) should be backed by a corresponding DataMigration that provide
Liquibase changelogs to reflect those changes on the database.
C) Newly created database are setup using the latest mapping file by
hibernate (since we manage versioning of our database, old liquibase change
logs will never be applied to these new db)
D) Advanced user will be allowed to also provide liquibase file, to manage
their schema updated properly (existing hidden feature), but...
E) The automatic hibernate schema update script is computed after the above
steps to check that it is empty, and that the DB schema is in sync with the
mapping file. Optionally we may allow this step to apply more schema
updates for advanced users (at their own risk) that do not provide the
liquibase change log required. (keeping the existing internal custom
mapping feature, as well as the logic of our dynamic mapping).
The pros:
- New database will no more be updated blindly, and liquibase will provide
a complete history of changes (except advanced user changes and dynamic
mapping)
- Existing database will start to have a complete history of schema
changes starting from 5.x (and a somewhat partial history for 4.x versions)
- Migration test will only be needed from pre-5.x to 5.x version, future
migration will be more isolated, and can be tested more locally between the
release introducing the migration and the previous one
- We optionally keep existing functionalities (step E)
The cons:
- More work to be done while changing mapping file
- Advanced user may need also to be more careful about their change in
.hbm file
- We keep using our versioning solution (we do not really use the
liquibase way), maybe a advantage as well
- We need some time to put that in place and we have already a slipping RC1
However, the only alternative I see to fix
http://jira.xwiki.org/browse/XWIKI-9041 would be to revert the schema
changes until the above, or a similar solution is available.
The bad news now. Once again, I have not planned to work on this, and my
planning is already really busy. It will also require to
be thoroughly tested, and Sorin will not say the opposite, migration test
is time consuming. So, this will not improve our schedule to release 5.0
and I will need serious support from you guys to put that in place.
WDTH ?
--
Denis Gervalle
SOFTEC sa - CEO
eGuilde sarl - CTO
Hi!
I have next error after changing dns-name for xwiki server:
All links in email-notification contains ip-address like
http://x.x.x.x/(not like
http://xwiki-dns-name)
Before changes all work fine and link was shown like http://xwiki-dns-name
How i can fix it?
I have found template for email-notification letters, it contains next
function to getURL:
$event.getUrl()
Then i checked resolving new dns-name from server console - it works good.
where must i update dns-name for xwiki ?
Hi devs,
With XWiki 4.x cycle coming to an end soon, it's time to prepare the roadmap for XWiki 5.0.
This is a proposal that comes from some internal meetings done with XWiki committers who are working for XWiki SAS.
If you're interesting in participating to this release, don't hesitate to add yourself to the list so that everyone can have some visibility of what's going to be worked on during this timeframe!
If you think some work defined below doesn't go in the interest of the project also feel free to raise issues.
Features:
* Continue SOLR implementation - Edy
* EM upgrade of subwikis + flavor concept (add Flavor type in EM/Repository) + leftover from 4.x for EM/DW - Thomas + Marius for DW UI part for flavors
* AWM work from 4.x to finish (see http://www.xwiki.org/xwiki/bin/view/Roadmaps/WebHome) - Marius
* scalable import/export - Thomas
* Home page improvements (XE) and usability improvements in general - JV
* Horizontal Menu management (add, remove pages) - JV
* virtual=1 by default - Edy (Edy will need to make a proposal for that since it's an important decision ;))
* l10n speed improvements - Ludovic
Important JIRAs sorted by priority (most important first):
* AWM Add the ability to publish an application as an extension XWIKI-7377 - Marius
* AWM Add the ability to export an application XWIKI-7376 - Marius
* Unable to edit a page using the WYGIWYG editor after adding a dashboard macro to it XWIKI-8495 - Need volunteer
* Improve AWM for it to deal with error messages made by Client when filling the AWM form in using special chars XWIKI-8763 - Marius
* Import of Office file breaks Activity Stream and Recently Modified Panel XRENDERING-261 - Need volunteer
* Cannot change document title from "inline" mode XWIKI-7905 - Not sure if we want it, to be checked with Marius
* When the workspace owner is changed, the new owner is not added as a member nor in the admin group XWIKI-8397 - Edy
* Unable to upload a new attachment using the "All pages" tab in the WYSIWYG editor XWIKI-8465 - Marius
* Workspace owner and initial members not set as members (nor in admin group) when the workspace identifier contains an underscore XWIKI-8394 - Edy
Investigations:
* XEM Homepage / Portal - Caty
* Knowledge base Flavor - Caty/Ludovic
* New Activity Stream Investigation Part 1 - JV (he's agree to become our AS champion :))
* General Flavours Investigation - Caty + input from tech
Regarding dates I'm proposing the following:
* 5.0M1: 4 March 2013
* 5.0M2: 25 March 2013
* 5.0RC1: 8 April 2013
* 5.0Final: 15 April 2013
Thanks
-Vincent
Are we sure we want to drop the $msg binding in the future [1]?
Compared to other services, $services.localization would be used heavily
inside scripts and we would basically have 2 options:
1. use $services.localization.render('key') (you fall asleep writing this
every time)
2. always declare a variable in your script like #set ($keys =
$services.localization) and then do $keys.render('key')
AFAIK, we have already considered in the past that a similarly used service
like $services.model is already becoming a bit annoying having to write the
oh-so-very-long "$services.model.createDocumentReference(wiki,
space,name)"; do we want to get the same effect with the new localization
module?
I understand and agree that the new localization module is more powerful
and flexible than the XWikiMessageTool, but I feel that those new features
are not required in day to day use and unnecessarily crowd/pollute the
regularly used API.
This transition should IMO be smoother and with less impact than what is
currently being proposed. If the new localization module can provide all
the features of the XWikiMessageTool, then I propose that we simply reuse
the $msg binding as it is and, in the background, transform
XWikiMessageTool into a facade (as I see we have already pretty much done
to preserve backwards compatibility), but agree that we *keep* $msg as the
simplified translations binding, to be used in day to day operations and,
for more complex tasks, the dev needs to use $services.localization instead.
Basically, I`m proposing to apply the KIS(s) principle. :)
WDYT?
Thanks,
Eduard
----------
[1] http://markmail.org/message/atrshzt3mlscfedc
Hi,
Just an idea, maybe it could be interesting for us to provide an integration with Apache Shiro:
http://shiro.apache.org/
The framework looks nice and maybe we could offload work to it.
Thanks
-Vincent
Hello all ,
I am a 4th (final) year undergraduate from Department of Computer Science
and Engineering, University of Moratuwa, Sri Lanka. After going through
accepted list of organizations and their project ideas for GSOC 2013, your
organization’s proposal called “Live Notifications inside XWiki” found
pretty interesting for me.
I am fluent with Java EE technologies and HTML5/JavaScript application
development. I also have nearly 1 year industrial experience on Java based
enterprise application development and HTML5/JavaScript dynamic front-end
developments.
After going through description of the project idea I am thinking about few
possible approaches to solve this problem they are
*1. **Using HTTP Ajax streaming mechanism*
Main drawbacks will be connection overloading and comparatively high
resource usage in server side
*2. **Using polling mechanism initiated by front-end JavaScript*
Main drawbacks will be delay of updating frontend and request handling
overheads in backend
*3. * *Integration with compatible messaging mechanism like XMPP*
This approach can lead to major modifications in backend to support
third-party components.
I have used all these approaches within various projects but need expert
advice from XWiki community to choose best approach for
this particular project. I have started to getting familiar with XWiki in
users perspective as well as a developer. Currently I am in the process of
setting up development and testing environment for the project.
I ll put up a more formal proposal on due course. At this moment your
comments and guidance to approach this problem is highly
appreciated. Looking forward to contribute to XWiki as a developer and
become a part of the community.
Thanks in Advance.
--
Akila Darshana Panditha
SMIEEE
Undergraduate (BSc Engineering)
Department of Computer Science and Engineering
University of Moratuwa
Sri Lanka.
about.me/akiladarshana
Telephone - *+94714407683* (Mobile) , *+94112641772* (Residence)
Blog - akiladarshana.wordpress.com
Hi All,
I'm Visitha Baddegama, a final year undergraduate from the Department
ofComputer Science and Engineering, University
of Moratuwa, Sri Lanka. This time I'm planning to contribute XWiki Project
under Google Summer of Code 2013.
I am fluent in Java, C# languages,and Web technologies. And I was a student
of GSOC 2012 under the DocBook project [1] and sucessfully completed it
[2]. By working on that project I got deep knowledge in technologies like
XSLT, XML, JavaScript, HTML, Ant, Make, JQuery and CSS. And because of I
have developed lot of Android and Phonegap apps, I am familiar with HTML5,
CSS, JavaScript and JQuery mobile too.
At the end of last November, I joined to OwnCloud [3] (An Open source
personnel cloud) community and already I have developed few important
features to OwnCloud's messaging app, calendar app and files app.
I went through the GSOC 2013 idea page [4] of XWiki and found several very
interesting projects. Among all of them, I am looking forward to work with
"Improve the Messaging Feature" project. As our department group project,
we have already developed very similar features to OwnCloud messaging app
too. There we improved to display unread inbox message count on the top of
message app icon and improved it to display messages as conversations in
smart phone. And we tried to integrate it with FB/Google chat application.
Therefore I have huge eager to apply to this project and have a good
confidence that I can successfully complete this project and give my whole
strength to this project. I will send you a proposal including how I am
going to develop this project. I think we can add few additional features
to messaging app other than expected functionality too. Please guide me to
next steps of this project. And I warmly welcome any advices and guidance
from you to improve my knowledge in this project.
I successfully integrated XWiki to my machine using this [5] and now I am
gathering more knowledge in XWiki and its features. Looking forward to be a
part of XWiki community.
Thanks in Advance..!!
[1]. http://docbook.org/
[2]. http://www.google-melange.com/gsoc/org/google/gsoc2012/docbook
[3]. https://owncloud.org/
[4]. http://dev.xwiki.org/xwiki/bin/view/GoogleSummerOfCode/<https://en.opensuse.org/openSUSE:GSOC_ideas>
[5]. http://enterprise.xwiki.org/xwiki/bin/view/Main/Download
--
Visitha Warna Baddegama
Undergraduate
Department of Computer Science and Engineering
University of Moratuwa
Sri Lanka