On 04/23/2010 09:36 PM, Chris Haynes wrote:
> Hello all,
>
> I'm a newbie to XWiki, but have used and developed plugins for
> another Java-based wiki. I've got a few days in which to find out
> what I'm letting myself in for if I switch from that other Wiki to
> XWiki.

Most of the development for a custom wiki is done not in Java, but in 
scripting languages on top of Java: Velocity, which is a templating 
language on top of a public API, and Groovy.

> I've spend a couple of hours reading the web site documentation, but
> can't find out if / how certain features I need are supported.
>
> I'd be ever so grateful if someone who knows their way round XWiki
> could just give me a quick indication of how much is going to be
> involved to provide the following features. Just a quick 'OOB' (out
> of the box), 'AP' (available plugin), 'DN' (development by me needed)
> or similar against each feature I need would be really helpful.
>
> The application is an on-line training programme for a closed
> charitable community. The overall training material is structured
> into modules. Students have modules 'unlocked' for them on an
> individual basis as they proceed. Each module contains a number of
> chapters, each chapter will be structured into sections for
> readability - a section corresponding to a Wiki page.
>
> Now for the unusual (?) features I need:
>
> - Single login shared with an associated Database programme (a
> servlet), using JAAS. (Preference is to run database and Wiki on a
> single Jetty instance, as I have 6 years Jetty experience).

The XWiki authentication mechanism is modular, and there are already 
several bridges between XWiki and external credential services. OOB only 
LDAP is provided, several others are available at 
https://svn.xwiki.org/svnroot/xwiki/contrib/sandbox/ . I don't think 
that one for JAAS is already developed, but it shouldn't be too hard to 
write it.

> - That shared login also supplies user's group membership (student,
> editor, admin, etc)

Yep, depends on how far the JAAS integration goes. XWiki does support 
groups, and it does support retrieving group membership from external 
source.

> - Info obtained from database indicating which module(s) the student
> is permitted to view (could be done by multiple-group membership),

Aren't access right enough? If yes, then you can query access rights for 
the current user on different spaces. If you need to do this with 
different data, then it should be easy to code a small application for 
this, once you get the hang of how XWiki development works.

> - Security permissions for individual pages inferred by inheriting
> permissions from the module containing that page,

There are page access rights, space access rights, and wiki access 
rights. If you split your wiki as one module = one space, this is 
straightforward.

> - Inter-page references only shown if user is permitted to read those
> pages OR (preferably) alternate paragraph-sized blocks of Wiki text
> are displayed depending on whether an embedded link may be followed
> i.e.  IF page_X_can_be_viewed THEN show_text_A ELSE show_text_B.

The normal link syntax doesn't do this, but you could write a wiki macro 
(see http://platform.xwiki.org/xwiki/bin/DevGuide/WikiMacroTutorial ) 
that does this using a little bit of velocity and the XWiki API.

> - Output to database programme (by API or HTML call) or to
> machine-readable log, on time/date each page viewed by each student,
> so that student-specific log may be compiled,

IIRC, OOB, using the activity stream plugin, but with DN to provide a 
nice UI for viewing the data. If I don't remember correctly, and this 
data is not already being recorded, it would be very easy (for a Java 
programmer) to write it using the observation manager.

> - 'Print Chapter' command - produces single printable document
> containing all the sections (Wiki Pages) comprising that chapter,

Possible, but no UI for this is shipped by default, although there is an 
application which does this: 
http://code.xwiki.org/xwiki/bin/view/Applications/PDFExportPanelApplication

> - The above 'Print Chapter' command to omit any embedded 'eye-candy'
> images from that printed chapter (by use of CSS @media ?)

WDYM by eye-candy images? The one from the wiki engine (skin), or images 
introduced by you? You can check how the printer friendly and the PDF 
export look somewhere on an existing wiki, for example:
- http://incubator.myxwiki.org/xwiki/bin/Sandbox/
- http://incubator.myxwiki.org/xwiki/bin/Sandbox/?xpage=print
- http://incubator.myxwiki.org/xwiki/bin/export/Sandbox/?format=pdf

> - 'Help me on this topic' button. Sends private email help request to
> tutor with hot-link annotation showing the tutor where the student
> was when help was requested. Must at least identify location by
> Section (Wiki Page), preferably identify by paragraph in section.

A bit of DN, mostly gluing existing APIs together: the mailsender 
plugin, a custom panel with a bit of velocity code, and maybe a bit of 
javascript to let the student select the section from the current page. 
It would be a bit harder to identify by paragraph, since by default 
paragraphs are not identified automatically.

Starting point: 
http://code.xwiki.org/xwiki/bin/view/Applications/SendPageByEmailApplication

> Preferable: simple, automatic next page / previous page buttons
> working through

I can't find it, but I remember there was an application on 
code.xwiki.org which did something like this.

> - Quality feedback form at end of each chapter, form data sent to
> database (see linkage options above).

DN, that's a basic application on top of XWiki, easy to write by an 
experience XWiki developer in a few hours.

> Import of pre-written, formatted documents: I've found the XWiki
> method which uses an Open Office instance running on the server, but
> I'm not sure if the virtual server we can afford has enough RAM to
> cope with this. Is there any other way of uploading pre-formatted
> documents, or of doing the format conversion before upload. I think
> we only need simple formatting such as headings, bold, italic text.
> No tables. Some chapters have already been written in M$ Word (can't
> be helped :-(

If you want to import office documents, then you need the office 
importer. I'm not sure, but I think you can run OO on a distinct machine 
and communicate with it via the network, if you can't allocate enough 
RAM for it on the same server as the wiki.

> Many TIA,
>
> Chris

A few final remarks:

First, although I think that all you need is (easily) possible with 
XWiki, and the fact that XWiki is a very flexible application 
development platform will make it possible to extend and add many other 
features you didn't think of yet, I must ask you if you really want a 
wiki engine for this. There are open source applications specifically 
tailored for e-learning, training and courses, the most famous example 
being Moodle. If you don't need the extra power and flexibility of 
XWiki, then I'd advise you to consider using Moodle, which probably 
offers all you specified here OOB or with existing modules.

Second, in order to properly master XWiki, you must learn how to write 
applications inside XWiki. In theory, anything is possible with XWiki, 
but to really accomplish something good, you must learn about the data 
model, the public APIs of the platform, how to write scripts, the 
services offered, development best practices, etc. The documentation is 
far from perfect, but it's always improving, and currently it's good 
enough to get you started. The mailing list is a good help after the 
documentation ends.

Third, please don't read this as a commercial push, but just as 
presenting an option, since there is quite a bit of custom development 
needed: if you need help with the development or want things done 
faster, you could contact the main company behind XWiki, XWiki SAS. See 
http://www.xwiki.com/xwiki/bin/view/Services/
-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to