[xwiki-users] Newbie questions - on-line training
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. 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). - That shared login also supplies user's group membership (student, editor, admin, etc) - Info obtained from database indicating which module(s) the student is permitted to view (could be done by multiple-group membership), - Security permissions for individual pages inferred by inheriting permissions from the module containing that page, - 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. - 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, - 'Print Chapter' command - produces single printable document containing all the sections (Wiki Pages) comprising that chapter, - The above 'Print Chapter' command to omit any embedded 'eye-candy' images from that printed chapter (by use of CSS @media ?) - '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. Preferable: simple, automatic next page / previous page buttons working through - Quality feedback form at end of each chapter, form data sent to database (see linkage options above). 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 :-( Many TIA, Chris
Hello Chris, I think most of these things will require some development but with XWiki scripting support and API it should be minimal in most cases. 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.
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). We don't have a JAAS authentication implementation. To support it you will need to implement XWikiAuthService. http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-core/src/main/j...
- That shared login also supplies user's group membership (student, editor, admin, etc)
There is an interface XWikiGroupService http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-core/src/main/j... Another option might be to mirror the users and groups from the database into XWiki using script.
- Info obtained from database indicating which module(s) the student is permitted to view (could be done by multiple-group membership),
Again you could implement the right service or use script to mirror the permissions from the database in the XWiki system. http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-core/src/main/j...
- Security permissions for individual pages inferred by inheriting permissions from the module containing that page,
If the modules are each kept in a separate space, you can set permissions on each space so we can call this "supported out of the box". Each page also can have a "parent page" and you can list all children of a given page. This could be used to represent chapters.
- 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.
Not supported, changing it could be done with script, the easy way is to use plug in rendering transformations. I don't know much about this topic, maybe others can respond?
- 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,
We have an activity stream which records such data but I imagine you want it in a certain format. You could collect the data from the activity stream table or on your own by modifying a velocity file such as view.vm in the webapp folder. You can write a special XWiki document with script to supply the data on request then get the rendered content using XML-RPC, or plain HTTP. We also support Rest and WebDav but I don't know that they can be used to get rendered content. Alternatively scripts can make HTTP requests so you could also push the data to the database instead of pulling from the wiki.
- 'Print Chapter' command - produces single printable document containing all the sections (Wiki Pages) comprising that chapter,
Less than 20 lines of velocity script to include the content of each page in the space.
- The above 'Print Chapter' command to omit any embedded 'eye-candy' images from that printed chapter (by use of CSS @media ?)
We do use CSS @media for the printer friendly pages, I'm not a CSS expert so I would approach the problem by trying to pattern match and remove image tags in the script which bunches the documents together.
- '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.
If there's one help button per paragraph then it's easy ;) Seriously though, I think something could be done with Javascript to detect where the user was when they pressed the button. We have an email sending plugin so the help button should be easy enough.
Preferable: simple, automatic next page / previous page buttons working through
Write a script to generate a standard page, include the script in each page.
- Quality feedback form at end of each chapter, form data sent to database (see linkage options above).
You can create a form which submits back to the same page then get the parameters from the request. Again you get to decide whether you want to push them to the database or have a cron script pull them from storage in the wiki page.
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 :-(
I would approach this by running an instance on a desktop computer and importing all of the word documents there. Then you will have XWiki syntax documents which you can save to the live server or you can export and import them. I appreciate your interest, Caleb
Many TIA,
Chris
_______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
On Saturday, April 24, 2010 at 12:52:57 AM, Caleb James DeLisle wrote:
Hello Chris, I think most of these things will require some development but with XWiki scripting support and API it should be minimal in most cases.
... Excellent! Just the kind of help I was looking for. Thanks, Chris
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/
participants (3)
-
Caleb James DeLisle -
Chris Haynes -
Sergiu Dumitriu