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