Migrating to GradebookNG?

GradebookNG is now included in the recently released Sakai 11!

If you want to use the Import From Site feature to migrate content from previous sites to new sites, you need to have GradebookNG in the previous site.

You can do this in two ways:

  1. Add GradebookNG to the sites you are migrating FROM. You can do this manually, or via a database script or a web service.
  2. Convert all of the Gradebook Classic tools in the existing sites to GradebookNG.
    In the upgrade from Sakai 10 to Sakai 11 there is an optional database conversion that you can run that will do this:

    UPDATE SAKAI_SITE_TOOL SET REGISTRATION='sakai.gradebookng' WHERE REGISTRATION='sakai.gradebook.tool';

Note: If you don’t have GradebookNG in the site you are migrating content TO, you can add this to sakai.properties to have it added automatically when you use Import From Site.

site.setup.import.addmissingtools=true

Tool properties in tool registration files

I discovered this feature by accident when setting up a new tool and configuring its registration file. The registration file is what you use to wire up a webapp in Sakai so that it can be added to sites. You can give it a title, description, tell it what site types are supported and a few other settings.

One of the recent features in Sakai is the ability to get a direct URL to any tool within Sakai. This is useful when you want to link to a tool without the portal around it.

header

Note the links on the right hand side are part of the tool registration. The ones on the left are controlled within the tool code itself and together it makes for a nice navbar when in full screen mode.

However, if you have a tool that doesn’t need any header items, for example a summary tool or widget, and there are multiples of them on screen, you still get the Link and Help items which can clutter the UI. You can disable the Help in the tool registration file via:

<configuration name="help.button" value="false" />

However the Link doesn’t have a corresponding configuration option (oversight maybe… blame me, I wrote the code…). However you can disable it with a tool property – although this is normally something reserved for an admin user to set into the tool placement within the portal, which is a manual step per placement. But what I have discovered is that you can add the tool property to the tool registration file and it is automatically linked up! Magic.

<configuration name="sakai:tool-directurl-enabled" value="true" />

This is coming in very handy as we are creating a series of relatively small widgets to place on the home screen of a site and the header toolbar was cluttering the UI. Now it is nice and clean with the header toolbar completely removed.

no-header

Sakai, ditch the custom classloaders

A few years ago I added support to the Sakai Maven Plugin to deploy everything that normally goes into /shared/lib and common/lib into just /lib, as per the standard Tomcat classloader layout.

To use, add -Dsakai.app.server=tomcat7 to the build command. Everything gets deployed to /lib and Sakai starts up without any modifications (except the standard connector modification in server.xml and the optional performance improvements in catalina.properties).

Enjoy the future!

Sakai 11: Java 8, Tomcat 8

Sakai 11 now requires Java 8 and Tomcat 8.

However, when you upgrade (and configure), you’ll notice a rather long startup time due to a change in the JAR scanning behaviour of Tomcat:

Server startup in 252800 ms

This scanning is unnecessary for Sakai though, so add this to your Tomcat/conf/context.xml file:

<Context>
...

<JarScanner>
    <JarScanFilter defaultPluggabilityScan="false" />
</JarScanner>
...
</Context>

And now you should have a much happier (and usable) startup time:

Server startup in 55836 ms

Got any more tips to improve startup times? Post in the comments!

Sakai Wicket Maven Archetype updated and released to Maven Central

The Sakai Wicket Maven Archetype has been updated to the latest version of Wicket 6 and styling issues fixed for the latest Sakai portal. It’s also been released to Maven central.

The Sakai Wicket Maven Archetype allows you to generate a sample Sakai app via a single Maven command. The app demonstrates how to get a Sakai tool styled, internationalised and registered, setup your own APIs, wire them up with Spring and inject them via annotations. The app also also includes multi database support via Spring JDBC. It could easily be used as a base for a real tool.

Generate an app:

mvn archetype:generate -DarchetypeGroupId=org.sakaiproject.maven-archetype -DarchetypeArtifactId=sakai-wicket-maven-archetype -DarchetypeVersion=1.5.0 -DgroupId=org.sakaiproject.example -DartifactId=exampleApp

More info here:
https://confluence.sakaiproject.org/display/BOOT/Sakai+Wicket+Maven+Archetype

Sakai Quartz example bundle receives an update

Six years ago I wrote a little bundle for Sakai that sets up a Quartz job and registers it with the Sakai Job Scheduler so you can setup triggers for it to run, just like a cron job. It was getting a little long in the tooth so it’s now had a makeover and now works for Sakai 11.

All of the bits of code are documented so if you are looking to write Quartz jobs for Sakai, this is what you need. Check it out:

https://source.sakaiproject.org/contrib/swinsburg/quartz-example/

Sakai 10 released

Sakai LogoThe Sakai Core Team is happy to announce the release of Sakai 10.0. Congratulations to our worldwide team on the successful completion of Sakai 10.0!

Sakai 10 builds on the solid work of the Sakai 2.9.3 release. We have two new tool contributions, better support for audio and video using HTML 5, infrastructure improvements, about 50 security fixes, performance improvements, a number of new features, and close to 2,000 fixes! Highlights include, but are not limited to:

  • Signup tool, previously a Contrib tool, is now part of Sakai core.
  • Delegated Access tool, previously a Contrib tool, is now part of Sakai core.
  • Updated and enhanced context sensitive help  includes step-by-step instructions, and in a format that is easier to modify to your institution’s needs.
  • IMS LTI 2.0 – first LMS (learning
    management system) with support for LTI 2.0.
  • IMS Common Cartridge (CC) upgrade. Support for reading CC files is able to read CC versions 1.0, 1.1, 1.2 and it can export data in CC version 1.1 or 1.2. User selectable.
  • Peer graded Assignments – Option for students to review each other’s work.
  • Group Assignments – Option for students to submit, and be graded upon, work as a group.
  • Test and Quizzes has new question types: Calculated question and Extended Matching Items. Plus improved precision on numeric answers and a new accordion-style interface for quiz setup.
  • Lessons (aka LessonBuilder) toolbar has been redesigned and simplified, better support for embedded Audio and video, new Table of Contents feature, support for inline use of polls, and better overall look and feel.
  • Resources has support for drag and drop adding of files from desktop for all browsers, and support for folder drag and drop in Chrome.
  • Syllabus Tool updated with a new interface, bulk update of syllabus items, accordion view, and better handling of link migration.
  • Gradebook added support for extra credit.
  • Distributed Cacheing provides support for JCache/JSR-107 which includes improvement to the default cache sizes and better control by configuration. Session replication to failover from one server to another without losing session data. Overall provides better performance for large Sakai installation (though please note that these features are not turned on by default OOTB).
  • Project Keitai (mobile) improved REST API support in anticipation of Sakai Mobile applications.
  • Security Updates – The Sakai community fixed about 50 security issues including various XSS issues and CSRF issues.  AntiSamy is on by default in Sakai 2.9.3 and Sakai 10. AntiSamy ensures that user supplied HTML/CSS is in compliance within an application’s rules.
  • Student Success Portal – new integration available.
  • Java – added support for JDK 7.x. JDK 8.x support is in process of being added.
  • Sakai technical organization simplified – Reincorporated many of the “Indies” to make management of Sakai releases and reporting of issues easier.Release notes available in English, Spanish and Chinese:
    https://confluence.sakaiproject.org/display/DOC/Sakai+10+Release+Notes

Three new portlet releases

I am pleased to announce three new portlet releases.

Basic LTI Portlet – 1.4.2 (source, maven)

Sakai Connector Portlet – 1.5.2 (source, maven)

Simple RSS Portlet – 1.2.2 (source, maven)

All portlets are available as source tags or as artifacts in Maven central.

These releases ensure uPortal 4 compatibility, fixes a few bugs and adds seven new languages, including German (de), Spanish (es), French (fr), Japanese (ja), Dutch (nl), Portuguese (pt) and Swedish (sv).

Most of these languages were made possible by auto-i18n, an automated translation tool I developed. For native speakers, I am very interested to receive your feedback on the quality of these automatically translated languages. You can enable the various languages using the User Locale Selector portlet in uPortal.

Both the Basic LTI Portlet and Sakai Connector Portlet are now finalised and very soon should appear in the main uPortal release, as they have (almost) graduated from the Jasig incubation process!

Update: New release versions for each portlet (updated above) – slight restructuring ready for the uPortal portlet overlay.

External Calendaring Service for Sakai

Over the past few months I’ve been working on and off on a project to make working with iCal files within Sakai really easy – I call it the External Calendaring Service. I am pleased to announce that this is now available for your delicious consumption.

It leverages iCal4J and allows you to turn Sakai CalendarEvents into iCal files. You can aggregate a number of events together to create one calendar and then attach it to an email, then update events, delete events, add and remove participants etc. This is really useful when tools want to send out notices about events, so an obvious integration for this is the Signup tool, which fully integrates with the service.

Check out the Javadocs for the complete info:

http://source.sakaiproject.org/release/external-calendaring-service/1.0.5/apidocs/org/sakaiproject/calendaring/api/ExternalCalendaringService.html

The service is available in source code via the Sakai SVN repo, but to integrate with your project just add the following dependency to your POM and you are done:

 <dependency>
     <groupId>org.sakaiproject.calendaring</groupId>
     <artifactId>external-calendaring-service-api</artifactId>
     <version>1.0.5</version>
 </dependency>

Source: https://source.sakaiproject.org/contrib/external-calendaring-service/

Feedback or suggestions for features warmly welcomed.

Reduce your Sakai CLE startup time

There is a current discussion on the sakai-dev list about the recent switch to Tomcat 7 and some new features in Tomcat that meant startup times took a bit longer than they used to.

http://collab.sakaiproject.org/pipermail/sakai-dev/2012-November/thread.html#19508

As it turns out there is a new feature in Tomcat 7 that scans jar files for various Servlet 3 features. However the CLE code doesn’t use any Servlet 3 features yet.

So we can just disable the scanning and cut our startup times by a fair amount.  On my local full trunk deployment I was able to reduce my startup from 175 seconds down to 89 seconds.

To do this, in catalina.properties, set:

org.apache.catalina.startup.ContextConfig.jarsToSkip=*.jar

So far, all CLE tools in 2.10 appear fully functional. If you try this and experience issues, please let me know in the comments, or post on list.