Child pages
  • Sakai 2.9 Detailed List of Features
Skip to end of metadata
Go to start of metadata


BasicLTIBLTI-119Improve IMS Learning Tools Interoperability Support (Basic LTI, IMS CC 1.1 Support, Full LTI)This is an umbrella JIRA to capture a series of improvements to the LTI support in Sakai. At a high level, the following are the tasks:

- Build an administrator user interface that allows creation of new Basic LTI tools without using an XML descriptor
- Build an instructor user interface to create BLTI virtual tools for placement in Lesson Builder
- Add support for BLTI to Lesson Builder, integrated with the new LTI Service
- Add support for importing and exporting BLTI placements - similar to what was done for Moodle 2.1 -
- Add support for dynamic URL remapping and instructor custom parameter configuration per the soon-to-be released Basic LTI 1.1 best practices.

The UI for this will look a *lot* like the Moodle Basic LTI Module and the ATutor Basic LTI support. In particular you can see the use cases of the Administrator UI and the Instructor UI. ATutor is more like what the Sakai UI will be like as ATutor supports instructor custom properties ( new Basic LTI 1.1 best practice) as well as instructor configured tools.



This will also lay down some workflow and data model elements that will be needed for Full LTI - mostly about tool lifecycle. I won't yet build the Full LTI user interface, profiles, and services - but I will put elements in place and have UI hooks that will make Full LTI provisioning, launch, import, and export come in pretty easily.
BasicLTIBLTI-104Version specified for provided jarsthe root dependency management specifies versions for servelet-api and commons-logging - both of these are provided by sakai-standard-tool and intorduce risk of dependency drift in the future
BasicLTIBLTI-123Add Support for new IMS POX-Style ServicesAdd support for the emerging IMS Plain Old XML (POX) services for outcomes, roster, etc.
BasicLTIBLTI-156Site info External Tools generates 'unexpected error'Error in Site info:

When the user clicks on External Tools the page says an unexpected error has occurred. Please find the screenshots of the error in the attachments.
Kernel - K1KNL-934Authz performance issuesHere is the patch file for our (VT) local changes to the authz service to support that query change (discussed in the TCC meeting).

Since the parameter order had to be tweaked to accomodate our change, and since we implemented a static role-key cache to support the hardcoding of role key values into the query, the patch is somewhat complicated.

There's also a change to ehcache.xml that I'm not certain is related to the function of this patch at all, but I wanted to get this patch to you right away rather than spending a bunch of time verifying things.

Will and I worked together on redesigning the query itself, starting from a suggestion by Richard Quintin. Jihane did most of the work on implementing the role key cache, I believe. This patch tweaks the query for all DB implementations, but Oracle is the only one we've tested at production scale.

I'm guessing some actual stats on the improvement this query makes in performance would be worthwhile. I will try to dig those up from my email archive or I might resort to recalculating them if need be. It should be relatively straightforward to do so.

The patch applies cleanly against kernel 1.2.6 (the one paired with Sakai 2.8.1). My understanding is that this query or the role key cache would need to be made optional if this were to be included in 2.9. I'm guessing Will and/or Jihane are better equipped to help out with that effort than I would be. Otherwise, let me know what else I can do to help the effort to get this work into the community code.
Kernel - K1KNL-970Update default role permissions in sakai_realm.sql for Lesson Builder, SiteStats, and roleswapWhen you first add Lessons to a site - in this case a project site - the default permissions are still missing. I know we talked about this a while back and was not sure if this was done in kernel configuration scripts or conversion scripts - but I tried this on the current 2.9 Longsight Server today and it is still unfixed. I checked out a copy of 2-9-x last week and it was still unfixed.

So I am putting it in because I could not find the JIRA that tracks this and I just don't want us to forget about it.
Kernel - K1KNL-629Allow content from CHS to be filtered when servedSAK-13492 has details of how the kernel can filter served up content.
This is useful initially to add headers and footers to HTML fragments created by the FCKEditor in resources.
Kernel - K1KNL-742Add new Messages permissions to sakai_realm.sqlA new feature was added to the Messages tool in MSGCNTR-401 that introduced new permissions that need to be added to the sakai_realm script:

Patch attached for sql additions. Please let me know if there is a different route I need to take to get these permissions added for ootb sakai. Thanks!
Kernel - K1KNL-897Admin Worksite Setup - Unpublished sites not appearing in listWhile experimenting on the nightly server (, I noticed that a new site I created as "unpublished" was not appearing at all in My Workspace > Worksite Setup. It was appearing as a "tab" up top, since I called the site "A test site" so it was alphabetically available. However, it should also be listed in the "Worksite Setup" area since an admin should be able to view all sites, not just published sites. (Like a faculty member can see his/her published and unpublished sites if they are the site owner/maintain/instructor role.)

I opened a new browser and could reproduce the behavior. I logged out and logged back in and it still happened. I created a new site ("A test site 2"), also unpublished, and it wasn't listed either. I created another ("A test site 3"), this one published, and it did appear in the list.

Please see the screenshot for the visual.
Kernel - K1KNL-807ContentHosting should post an event whenever a change is made in the availability of a resourcePlease add a new event "content.upd.visibility" that will be posted whenever a previously shown resource becomes hidden, whenever a previously hidden resource becomes shown, and whenever release and/or retract dates for a resource are added, changed or deleted.
Kernel - K1KNL-919Delegated Access Sakai patchesThe following patch need to be in Sakai for the delegated access tool to work properly

This patch do not modify the user experience in any way unless the system has enabled the delegated access tool.
Kernel - K1KNL-946Standardize parsing of property values in sakai.propertiesThere currently are multiple strategies invoked for parsing property values in One of the side-effects of these multiple approaches is that they split comma-separated parameters up in different ways with regards to white-space, some of which are not as well equipped variations as others (e.g., SAK-9447). We should standardize on how white-space is treated in, and provide developers with uniform methods for parsing their parameters.
Kernel - K1KNL-342Allow ToolListener to be configured to use a path other than /tools/I was doing a little bit of development and had ny tool registration files in /WEB-INF/tools/ which is wrong (should be in /tools/) the ToolListener doesn't warn when it can't find the folder (or it doesn't register any files). So I've added some logging at WARN level as if you have the ToolListener but not tool registration files you can probably remove the listener (or add a tool registration file in the correct place.

I also allowed for the tool registration folder to be configurable with a context init parameter (defaulting to /tools/), context listeners can't have configuration directly so we have to use a context init parameter.
Kernel - K1KNL-356Automatically remove dropboxes for users who aren't members of the siteSAK-7964 Was the original issue.

When a user is added to a site a dropbox is created for them, however if they leave the site the dropbox remains even if the user didn't ever upload anything into it.

The attached patch removes empty dropboxes of users who are no longer members of the site.
Kernel - K1KNL-655Upgrade to Ehcache to 1.7.2We're using ehchache 1.6.0 at the moment. This is now 2 year old. Also later versions have a smaller memory footprint:

"Update: Ehcache 2.0 will introduce a new implementation for MemoryStore based on a custom ConcurrentHashMap. This version provides fast iteration and does away with the need for the keyArray thus bringing memory use back down to pre 1.6 levels. And with other memory optimisations made to Element in 1.7, memory use will actually be considerably lower than pre 1.6 levels."
Kernel - K1KNL-885The group property to enable Site Info to see groups should be moved out of site-manage and into kernel-apiIn order for a group to show up in the Manage Groups part of Site Info, it must have the property:


This is defined in:
site-manage-util/util/src/java/org/sakaiproject/site/util/ public static final String GROUP_PROP_WSETUP_CREATED = "group_prop_wsetup_created";

Therefore, other tools that want to create groups with this property must either take a chance that the property won't change and hard code it themselves, or use the constant from the site manage utils, creating a hard dependency.

Ideally, this property would be moved to the kernel.
Kernel - K1KNL-893KNL-532 AuthenticationCache cache not serializedClick here for more information.
Kernel - K1KNL-895No way to override/clear the propertyI have an installation defined with the property in

I also have a and file for specific overrides.

On a particular instance I want to disable the force secure setting as I am running http only.

However there is no way to do that. If I set the value to a blank value (in local or, ie as an override) in an attempt to clear it, then it throws a NumberFormatException.

So once the setting has a value it must always have a value, AND forces URLs to be https. The code should be adjusted so that a blank value negates any previous value that has been set.
Kernel - K1KNL-817rename method in BaseContentService is actually copy/removeThe "rename" method in BaseContentService does not actually rename resources or collections. It copies them and then removes the old copy. This may work all right for relatively small files and collections, but for large files and collections this can create I/O throughput issues as well as potential risks in multi-volume storage setups, when all that is needed is to update a few fields in existing database records. We've recently been experiencing performance problems on application servers struggling to keep up with multiple large "rename" activities on directories full of multi-gigabyte files, which quickly saturates the NFS I/O throughput available on that application server.
Kernel - K1KNL-705CLONE - The ability to move a site to a recycle bin and then purge it after a set period of timeThis is a set of patches that add some interesting behaviour to site deletions.

It adds the capability for sites to be softly deleted, and after a set period of time, purged from the system. The way it works is thusly:

A maintainer of a site deletes that site. If this is enabled, the user receives a message about this instead of the normal message. The site is then, for all intents and purposes, deleted. It does not show in any lists and users cannot navigate to it. However the site still exists and is completely intact with all content and user lists. Users with the appropriate permission (site.visit.softly.deleted) can manually navigate to the url. They get a message that the site is due to be purged but can still act on the site, perhaps retrieving content.

Normal users of a softly deleted site cannot access the site at all.

After a configured grace period, a Quartz job purges softly deleted sites from the system.

In addition, another permission is added, site.del.softly.deleted. This allows users with this permission to issue another removeSite call, perhaps from a webservice or similar, and that will manually purge the site from the system.

# enable soft site deletions when a site is deleted normally
# if true, they will be softly delete and then purged after 30 days
# if false, thet will be deleted immediately
# defaults to false.

# the number of days to keep softly deleted sites until they are purged.
# if not set and site.soft.deletion=true, defaults to 30 days.

There are a couple of components touched by this, and for trunk, there are two patches per component (I haven't merged the patches together sorry). Simply apply the -trunk patch, then the -trunk-2 patch.
Kernel - K1KNL-976MultiRefCacheEntry is not serializableClick here for more information.

Lesson Builder

Lesson BuilderLSNBLDR-32Lesson Builder has dependencies on contrib toolsThe LessonBuilder code has dependencies on contrib tools (yaft and mneme). Core tools should never depend on contrib tools -- see lessonbuilder/pom.xml:


These dependencies should be removed for the 2.9 release
Lesson BuilderLSNBLDR-69Regression : Change links broken in current 1.4.x @107763On 2.9.0-b05 it works if you create a quiz, hit "Change quiz", however on 1.4.x after what I believe after this commit:

nothing happens clicking this link. I don't think it's only limited to quizzes. This only happens in the 1.4.x when


It works in the trunk and on the 2.9 QA servers (running b05)

It looks like this is because there is an onclick="return false" in the anchor now. And the jquery click handler is stopping it now in ui.js.
$('.add-quiz-link, #change-quiz').click(function(event){
if (!picker) return true;
Lesson BuilderLSNBLDR-15Revise LB poms so that we can perform separate API and tool releasesAs discussed in the LA project planning meeting one change we intend to make for 2.9+ is to perform API releases independently and ahead of tool releases. In the case of LB, sometime after code freeze we would release sakai-lessonbuilder-api-1.0 (or 1.2 whatever you want). In order to do this we will need to replace the api's current <parent> (the LB base pom) with a purepom-like "sakai api" pom that will be released first so that an LB api release can actually be performed (currently, you can't do a release of an api that has a snapshot dependency on its own project base pom). Ideally, once we hit code freeze, we release the kernel apis, then all the tool apis. We should then be able to better reflect version-wise the actual steady state of most project apis. LB tool 1x tool releases should then be able to bind to lessonbuilder-api-1.0 for the life of the 1x series.
Lesson BuilderLSNBLDR-11Prep LessonBuilder poms for off-cycle releasesPrepping LessonBuilder poms to utilize the release plugin. Also tidy up the poms as necessary.

1. Change the <groupId> to org.sakaiproject.lessonbuilder. LB's coordinates will adhere to the pattern adopted for other indies, which is reflective of broader Maven naming practices including that practiced by Apache.

2. Change trunk versionId to 1.3-SNAPSHOT. This is necessary because it reflects accurately the unstable nature of trunk and is required in order for Maven to deploy snapshot artifacts to the snapshot repo.

3. Set up LB so that we can deploy binaries to the snapshot repo. Basically boilerplate additions to the base pom. Add <distributionManagement>, <repositories>, <pluginRepositories> and <reporting> declarations to base pom. Update the current Jenkins job to deploy snapshot updates.

4. Add an assembly which provides a Tomcat-overlay zip of LB. As I noted in LA we will not substitute an assembly for a full source check out of LB but the assemblies have proven quite useful to msub deployers such as Steve Swinsburg. Plus, if we ever get the app store concept going a zip of LB binaries will prove quite useful. Again, this code, a pom file and deploy.xml is largely boilerplate. It takes about 5 minutes to write.

5. Set LB up to use the release plugin. Involves swapping out the master pom for the edu-tool purepom like other indies. We have 2.6, 2.7, 2.8, 2.9 versions of purepoms. I expect that LB will benefit from use of the release plugin (which the purepoms provide) which provides the ability to generate off-cycle releases in a simple, nay trivial manner.

6. Tidy up the poms. For example, substitute standard Maven variables such as ${project.groupId} and ${project.version} where appropriate for LB's own "internal" dependencies.

7. Delete tool/src/maven2 folder. It is now redundant as updated sakairsf 0.8-SNAPSHOT artifacts exist.
Lesson BuilderLSNBLDR-7Breadcrumb trail titles and Index titles don't update when user changes page titles in settingsBreadcrumb trail titles and Index titles don't update when user changes page titles in settings

See short screencast video of Rutgers instance:

(Attached screenshots of Ithaca College's instance.)
Lesson BuilderLSNBLDR-8Inconsistent and icorrect use of Custom Sakai Maven variablesThe tool pom references version properties from master/pom.xml. As maven variables have a scope of the pom their in this will cause some plugins to fail. Also the versions are inconsistent and sometimes incorrect:


sakai.version <> sakai.samigo.version



sakai.version <> message center version

Dependency management should be used rather than inheriting custom variables
Lesson BuilderLSNBLDR-28Oracle auto ddl problem with LessonBuilder tablesI've seen those errors in my log:

2011-08-12 16:47:32,905 WARN main org.sakaiproject.springframework.orm.hibernate.AddableSessionFactoryBean - Unsuccessful schema statement: create table lesson_builder_comments (id number(19,0) not null, itemId number(19,0) not null, pageId number(19,0) not null, timePosted timestamp not null, author varchar2(36 char) not null, comment clob, UUID varchar2(36 char) not null, html number(1,0) not null, primary key (id))
java.sql.SQLException: ORA-00904: : invalid identifier

at oracle.jdbc.driver.DatabaseError.throwSqlException(
at oracle.jdbc.driver.T4CTTIoer.processError(
at oracle.jdbc.driver.T4CTTIoer.processError(
at oracle.jdbc.driver.T4C8Oall.receive(

2011-08-12 16:37:33,902 WARN main org.sakaiproject.springframework.orm.hibernate.AddableSessionFactoryBean - Unsuccessful schema statement: alter table lesson_builder_comments add comment clob
java.sql.SQLException: ORA-00904: : invalid identifier

at oracle.jdbc.driver.DatabaseError.throwSqlException(
at oracle.jdbc.driver.T4CTTIoer.processError(
at oracle.jdbc.driver.T4CTTIoer.processError(

all the error seems to be related with clob fields.
Lesson BuilderLSNBLDR-59Common Cartridge Import - IssueWhile CC import,

1. IMS CC 1.1 - error: Unable to create file while importing Common Cartridge: 100 copies already exist:
2. IMS CC 1.0 - Assessment is migrated in to tests and quiz but no question appeared.

Note: IMS cc 1.1 working fine in BlackBorad 9.1
Lesson BuilderLSNBLDR-80Help pages displaying underneath when adding textWhen the instructor starts with a brand new 'Lesson', and clicks 'Add Text', 'Add Assignment', etc, the help page for Lesson Builder displays behind the add item.

From Site Info -> Edit Tools, add Lessons
Click on Lessons -> Add Text
Add text and save

The help page is displayed while adding text and after text has been added.
In order to get rid of the background help page, the browser needs to be refreshed.
Lesson BuilderLSNBLDR-107Fatal Error Showing When Adding Student Comments Tool in LessonsClick here to for more information.
Lesson BuilderLSNBLDR-97MP3s are not uploadable in LessonsTried to add an mp3 file to lessons, both under Add Multimedia and Add Resource. Received the following error:

Unable to add resource: org.sakaiproject.exception.ServerOverloadException id=failed to write file from stream to database

I then recorded a file on Win7, which Windows saved as a wma file. This file uploads, and when clicked on, opens a new window, a pop-up displays asking if I want to open with the Windows Media Player. Of course, this does not work on the MAC.

Currently, there seems to be no way to make audio files available to all students. MP3 files should be supported in case the instructor wants to give audio instructions or wants students to upload audio recordings.

To reproduce:
Click on Lessons, then either choose Add Multimedia or Add Resource
Upload an mp3 file

Error message displays
Lesson BuilderLSNBLDR-120Comments tool displays a page or more of unrelated contentTested on - Sakai Revision: 114139 (Kernel 1.4.0-SNAPSHOT)- Server

Tested also on - tags/sakai-2.9.0-rc01 QA on Oracle - Built: 09/27/12 11:28 - Sakai tags/sakai-2.9.0-rc01 (Kernel 1.3.0-rc01)- Server qa3-us

To reproduce:

1) Add Lessons tool to a site
2) Choose "More Tools" -> "Add Comments Tool"

Results: Text editor box with two Submit buttons followed by a number of things including the text below, preceeded by the two Submit button comment entry and followed by a number of things which I've enclosed as screenshot page3.png, page4.png, page5.png, page6.png.

Page "2", text on page with Comment submission:

Require that the student submit this assessment.
Require that the student submit this assignment.
Require that the student submit a posting to this topic.
Require that the student use this item
Require that the student receive
points on this assessment.
points on this assignment.
Require that the student <b>Pass</b> this assignment
Require that the student receive at least a
Require that the student receive a Checkmark
Title must not be blank.
This must be a Youtube URL
Item Name must not be blank
Page Title must not be blank.
Edit Quiz
Edit Quiz Settings
Edit Assignment
Edit Forum Topic
Edit external tool
Number of pages must be a number
Title must contain a number
Site CSS
System CSS
Points must be set to a valid number.
The width and height must be positive numbers, i.e. "500" or "500px," or a percentage below 100%
You may not have a height or width larger than 100%.
Lesson BuilderLSNBLDR-24Allow subpages to be time released independently of their parent pages.Allow subpages to be time released independently of their parent pages. Currently the only way to time release content is to have each branch of material in a LB tool placement. This could get very unwieldy.


MailsenderMSND-60When an email has an attachment, a stracktrace is thrownClick here for more information.

Messages & Forums

Messages & ForumsMSGCNTR-403Grading Forums - Easier way to view all messages from one person and enter grade in one screen, or view list of all users with counts of posts and grade entry boxMake grading by Forum/Topic easier
Messages & ForumsSAK-14081The word count of the messages (threads) text in forums has to be evaluated and stored in the databaseStrip the html tags from the text and evaluate the word count for all the messages in the forums. Add an additional column in the table 'mfr_message_t', to store the word count of the messages.
Messages & ForumsMSGCNTR-516Catalan translation for sakai 2.9Updates to the catalan translation
Messages & ForumsMSGCNTR-6523.0 conversion scripts missing semicolonThe following statement is missing a semicolon in the 2.8 --> 3.0 conversion scripts (and incidentally the 2.9 sakai conversion scripts):

alter table MFR_TOPIC_T modify CONTEXT_ID varchar(255)
Messages & ForumsMSGCNTR-86Permission level names are not internationalizedCustomizing the permision levels in DF for instance by changing the owner permission to:

-- owner type
'00000000-0000-0000-1111-000000000000', 'admin',
SYSDATE(), 'admin', SYSDATE(),
'', 'sakai_messageforums',
'Manager Permission Level', 'Manager Permission Level', 'Manager
Permission Level');


-- owner permission level
null, 0, '00000000-0000-0000-0000-111111111111', SYSDATE(), 'admin',
SYSDATE(), 'admin',
'Manger', '00000000-0000-0000-1111-000000000000', 1, 1, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 1);

On gets the following errors:

1) roles are not mapped to the default permission level as defined in
2) setting a role to the permission produces errors in the UI.
Messages & ForumsMSGCNTR-109Display photo alongside name in Forums tool when viewing responses to threadLike Moodle, 'twould be good to have ones photo (from 'Profile') displayed in miniturised form alongside ones name in the Forums tool.

This would be on the page where one views responses to a posed topic, ie, next to

Re: TOPIC_HERE - Marshall, Adam (Jul 17, 2007 10:04 AM)

I leave it to the tool author to decide upon positioning!
Messages & ForumsMSGCNTR-683Performance issue due to duplicate forums iterated over in the DiscussionForumTool.getForums()In org.sakaiproject.tool.messageforums.DiscussionForumTool.getForums(), a List of DiscussionForum's called 'tempForums' gets populated with duplicates and soon gets iterated over:
for (DiscussionForum forum: tempForums) {

This loop has a nested loop that iterates over topics, so for some sites with lots of topics, the tempForums loop takes an excessive amounts of time often causing users to wait several minutes to do most actions within the forums tool. By removing duplicates (in java code), I've cut the loading time for a forum with 500 topics from ~1 minute to ~5 seconds.
Messages & ForumsMSGCNTR-711Search Content producer needs to implement PortalUrlEnabledProducerAs it returns real urls it needs to implement this method
Messages & ForumsMSGCNTR-426Page size incorrect with new CKEditorThe page size is doing the double window iframe issue when the page has the new CKEditor
Messages & ForumsMSGCNTR-231Ability to create Forum Topics/Forums based on groups.Private, group based discussions are a common use of Forums across institutions. Unfortunately the permissions that need to be configured for each Forum/Topic are complex and tedious.

To configure a private group Forum/Topic requires setting all student's (and any other group) permissions' set to none and then to set the specific group to be a contributor. These steps are multiplied by the number of groups. This is a relatively common task that is very complex.

Would it be possible to simplify the process to "create a group topic" that simply presented a list of existing groups/roles and then assumes all of these settings?

I appreciate your consideration.

--- Updated Wednesday June 16, 2010 - Denver Sakai Conference
Messages & ForumsMSGCNTR-529MSGCNTR-528 Add conditional descriptive text in entry page to guide usersThe entry page is where a site organizer (or similar role) structures the forum interaction. Although the auto-created default forum and topic are a help, we have found that users still need a bit of guidance. Propose to add help text/links that will the user in the following circumstances:

1. Default forum and topic
"Use Forum Settings and Topic Settings to change the title and other details of this forum.
New forums and topics can only be created by you or someone with your level of access.
Use Template Settings to set up a template for all new forums."

2. Childless forum
(displayed below childless forum) "You need to add at least one topic for the forum above to be active. <link>Create a topic?</link>"

3. No Forums (either defaults have not been created or all have been deleted)
"No forums have been created. <link>Create a forum?</link>"

4. All forums are draft
"Note: All forums are draft. Forums saved as drafts cannot be seen by all participants. "

5. All topics are draft
"Note: All topics are draft. Topics saved as drafts cannot be seen by all participants. "

6. No topics
"Note: You need to add at least one topic."
(displayed below childless forum) "You need to add at least one topic for the forum above to be active. <link>Create a topic?</link>"

7. All Forums or all topics are draft, or there is just forums (no topics). Stock MSGCNTR does not display a message to access user saying that no forums are available.
(displayed to access type user)"There may be forums that are not yet available for participation. Contact the site owner if you have questions about the status of a forum."

For reference to BRD: Req 1 "Add conditional descriptive text to guide users through topic creation"
Messages & ForumsMSGCNTR-555register Messages tool as group-aware when starting PermissionHelperThis is cloned from SAK-19819:

Permission helper will only show group options if invoked with "groupAware" attribute set to Boolean.TRUE
Messages & ForumsMSGCNTR-636More than 1000 topics in Forums causes Oracle failureWe're seeing an ORA-01795, which can be caused by any query that has IN (.....) list, in production.

Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(
at org.hibernate.exception.JDBCExceptionHelper.convert(
at org.hibernate.loader.Loader.doList(
at org.hibernate.loader.Loader.listIgnoreQueryCache(
at org.hibernate.loader.Loader.list(
at org.hibernate.loader.hql.QueryLoader.list(
at org.hibernate.hql.ast.QueryTranslatorImpl.list(
at org.hibernate.engine.query.HQLQueryPlan.performList(
at org.hibernate.impl.SessionImpl.list(
at org.hibernate.impl.QueryImpl.list(
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(
... 101 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-01795: maximum number of expressions in a list is 1000

This can be traced back to line 677 of

This query needs to check for more than 1000 taskIds, and if so, break the query into several IN () statements, for example: ... IN (x,y,z) OR IN (x1, y1, z1) OR IN (x2, y2, z2) ...
Messages & ForumsMSGCNTR-647Create sequence statement missing from conversion scriptClick here for more information.
Messages & ForumsMSGCNTR-691NPE caused Forum messages not searchable under server-client search configClick here for more information.
Messages & ForumsMSGCNTR-524Strange behavior when grading forum postingsCreate a forum and topic. Link your topic to a gradebook item.
Make a post to the topic.
The grading behavior seems strange.
First, click on the topic and then "Display Entire Message". Click the "Grade" link for the message. A new browser window opens with the grading widget. If you then enter a grade and submit, the window refreshes with a success message and all of the form fields are empty.
Now try grading from the actual message view. The grading thickbox appears, but it is cut off and has a scrollbar. You are unable to scroll enough to use the buttons. See screenshot.

This occurs in both FF and Safari using Nightly - sakai/trunk on Oracle - Built: 06/21/11 12:00 - Sakai Revision: 93919.
PollsPOLL-151Catalan translation for sakai 2.9 (polls)Updates to the catalan translation.
PollsPOLL-137Accessibility: Polls tool brings up the FCKEdit instead of the CKEditorThe polls tool didn't switch over to the CKEditor on qa1-nl when the default WYSIWYG editor was set to the CKEditor.

To reproduce:
1. Log into qa1-nl
2. Verify other tools use CKEditor (go to add an assignment page and check the WYSIWYG editor)
3. Switch to the polls tool and go to the "Add a poll" page.
4. Check the WYSIWYG editor
 KERN-149Ability to set privacy settings on different parts of profileYou should be able to specify for each key in your profile file whether it's publicly visible or visible for your connections only.
Profile2PRFL-388Allow user to create a worksite containing a selection of users from their connections[we decided to limit this to a user's connections and forget about search results for now]

[note: Sakai administrators should specify the default tool set required for sites of type "project" in toolOrder.xml and/or use with the wsetup.home.toolids properties (seeSakai 2.8 configuration)]

Allow user to create a worksite containing a selection of users from search matches. It seems to make sense to be able to select a number of hits from a connection search and just click a button to create a project site with those members. The site could be created and site invites (maybe including a connection request) could be sent out via emails containing a link signalling assent. A quartz job could periodically check for positive responses and add the user into the site.

Something like this would really enhance the research collaboration aspects of Sakai.
Profile2PRFL-7762.9 Oracle conversion script has an errorThis sql:
-- PRFL-612 add avatar image url column to uploaded and external image records
alter table PROFILE_IMAGES_T add RESOURCE_AVATAR varchar2(4000) not null;

Gives this error:
>[Error] Script lines: 701-703 ----------------------
ORA-01758: table must be empty to add mandatory (NOT NULL) column
Script line 703, statement line 2, column 13
Profile2PRFL-632Catalan translation for sakai 2.9 (profile2)Catalan translation updates for sakai
Profile2PRFL-695Update Spanish translations files in trunk, 1.5.xI can provide different patches or you can assign me the Jira to make the changes in

The goal is to have Profile2 fully translated to spanish in Sakai 2.9+
Profile2PRFL-730Searching on Common interest is case sensitiveWhen searching profiles, search term is case-sensitive and should be case-insensitive

Click on Profile -> Search
Select Common interest and enter a term you know will be found, but use a different case
Click Search - no results found

Now enter the same term in the correct case and click Search
Now results display


Searched on rollins because a couple of users had this as a favorite author
No results found
Entered Rollins and now I have results

Reset Password & Account Validation

Reset Password & Account ValidationRES-25Catalan translation for sakai 2.9 (reset-pass)Catalan translation updates for sakai
SamigoSAM-1236Catalan translation for sakai 2.9 (samigo)Updates for catalan bundles
SamigoSAM-15422.8 2.9 conversion for mysql missing ;there is a semicolon missing after the SAM-1255 update
SamigoSAM-1793Regresion: GradingService.validate no longer accepts , as a decimalAll UI documentation indicates that , is a valid numerical separator for numbers in numeric questions but as of 2.9 these are no longer accepted.

More seriously accessing the answers of a test where , was used by a student results in a UI error
SamigoSAM-1401"Delivery Date is not of correct format" is seen even if the date is in correct formatHere is how to reproduce:

1. Login to Sakai.
2. Without going to Assessment Settings page. Create an assessment and add some questions.
3. In Edit Assessment page, click on "Publish" link directly.
4. You will see an error asking you to select a retract date.
5. Select the date and click on "Save and Publish".
6. The error "Delivery Date is not of correct format: mm/dd/yyyy hh:mm:ss:aa." is seen.

Note: this error can only be seen if there is an error happens at step 4.
SamigoSAM-691Exported assessment does not want to import againExported an assessment, when trying to import it into another site, get error:

There was an error importing this assessment. Ensure that the file is correctly formatted IMS QTI. Error java.lang.RuntimeException: java.lang.RuntimeException: resourceId is null

Attach content package
SamigoSAM-822Timer does not continue to count down when 5 minutes popup window appears.Click here for more information.
SamigoSAM-998Audio recordings play automatically in Safari on Mac.This is reported by Stanford (CW-2708):

In Safari on a mac, if you go to the grading page to grading audio questions, all audio recordings play back at the same time, e.g. An instructor loads a grading page with 10 answers and all audio files play simultaneously.
SamigoSAM-1099Samigo uses old version of Apache PoiSamige uses poi-3.5-Final this version of poi is now more than 2 years old and there have been significant bug fixes and performance improvements. It seems the latest stable release (3.7) is compatible with Samigo
SamigoSAM-1232Accessibility: Many Question Types Marked-Up Entirely As a Level 5 HeadingThe entire markup for many question types as delivered in Test and Quizzes are the child of the level 5 heading that starts at the question number text. This might have been an accident, but if it was done to make the entire question appear in bold font it is inappropriate.

Some adaptive technologies include all of the child text as the heading; this means the JavaScript code that appears in the child script elements is also announced (see TQHeadingsListExample.png (attached)). Also, as the screen-reader user navigates through the parts of the question, each part is announced as a level 5 heading which is very distracting and adds to the chatter that they have to tune out when trying to decide what is the real content they need to pay attention to.


Only have the "Question x of y d.dd Points" part be the level 5 heading that precedes the question text. Use CSS as appropriate to keep the existing bold font styling.
SamigoSAM-1347Importing assessment with (large) attachments as ZIP file fails with error messageThis is reported by Stanford (CW-2812):

Steps to repro:
1. Create an assessment with at least one part, at least one question in the part, and at least one attachment for each part and question.
2. Export the assessment as a ZIP file.
3. Import the exported assessment.

Observe: Get error message on page: "There was an error importing this assessment. Ensure that the file is correctly formatted IMS QTI. "
Expect: No error, ZIP imported

Expected result:
UI change on student side
For File Upload question type:
-Change the limit to 100MB. There is slight change in wording "(Maximum file size: 100MB)". Please see attachment "StudentFileUploadModified.png". Please note, the limit (100MB) is set in the So it can be changed.

UI change on instructor side
-The current error message appears on the landing page (please see attachment "ImportErrorOriginal.png")
-The modified error message should appear on the Import Assessment page (please see attachment "ImportErrorModified.jpg")
-Text of error message: "<ZIP file name> could not be imported because there is a file size limit of 100MB per import."

-Please also change the instructional text to say "Choose an IMS QTI-compliant XML file or an IMS Content Packaging ZIP file from your computer."
(please see attachment "Import.jpg")
SamigoSAM-1435When a student is dropped from a site/course, s/he is still included in in-progress and submitted countsIf a student drops a course or is manually removed from a site, his or her attempts are still reflected in the submitted and in-progress counts shown for published assessments on the main Assessments screen. As a result, when the instructor access the total scores page, the number of students who have submitted will be < than the "submitted" account, which is concerning to instructors.

To reproduce.

1. Publish a new assessment.
2. Log in as a student and take the assessment.
3. Log in as instructor and note the submitted count is 1 and one student has a submission on the total scores page.
4. Now remove the student from the site.
5. Return to T&Q. Not that teh submitted count is still 1. However, when you click the link to go to the total scores page, no submissions are visible.
SamigoSAM-1429if instructor takes an assesment in student/access view, in-progress and/or submitted count is incrementedWhile in student/access view mode, if the instructor starts an assessment, this will cause it to count as an in-progress assessment. If the instructor submits in student view, the submission count is incremented by 1, which can be misleading. The in-progress and submitted counts shown on the main assessment screens should not include attempts made by the instructor in student view.

1) Create an assessment and publish it
2) Click on 'Enter student view'
3) Take the publish assessment and save an answer but do not hit submit
4) Logout and close browser
5) Go back into the course as the instructor
6) In T&SB it shows an In Progress of 1 now
7) Now return to student view and submit the assessment. The "Submitted" count us incremented by one on main assessments page.
SamigoSAM-1512problems with "show feedback" and "feedback immediate" on character "Hi

If we have a test configurated with "feedback inmediate" and it has a fill in blank question whose correct answer contains the character ", when student, during assessment, selects "show feedback" it always shows the wrong feedback because the question's correct answer has been stored with &quot; instead of character ".

The question text to reproduce this could be:

'How many fingers do you have in your hand? {"five"}'

Sometimes the question's correct answer that it's stored is &quot;five&quot;. When it happens, if student, during assessment, selects "show feedback" always gets the wrong feedback despite of writing the correct answer.

We think it is a bug. Thanks
SamigoSAM-1734Duplicated explanation for buttonsThe following explanation for buttons is duplicated:

Random access to questions from a Table of Contents. (There are "Next" and "Previous" buttons on each page for navigation.) (There are only "Next" buttons to go forward. There is NO Table of Contents page.)

in random_access of
SamigoSAM-1139Calculated questionsAt the moment the calculated question type is missing in Samigo, i.e. the ability to have questions which contains variables, a method of setting the range of those variables and the number of questions to be generated of that type.
eg. what is {x} + {y} where 0 < x < 100 and 0 < y < 50

i.e., integration with equation editors.
SamigoSAM-1257Move action labels to CommonMessages bundlesAt AuthorBean.getPendingSelectActionListX (X=Æ, 1, 2) methods I've seen that two properties bundles are used: AuthorMessages and CommonMessages. From my point of view, it would better if the AuthorMessages key would be moved to CommonMessages because that will ease translationa&updates and i18n testing. Additionally, all of them are related to actions (print, preview and so on), so they can probably general, which is the purpose of CommonMessages.
SamigoSAM-1278SAM-1277 Cleanup Javascript importsA Javascript import should just be:

<script type="text/javascript">

Some tags are just <script>. Others add the deprecated Language="JAvaScript". This patch cleans it up.
SamigoSAM-1620statistics do not show when random draw from pool is usedWhen an assessment involves random draw from pool, no statistics link shows. This is a problem. Both total score and score per question are still meaningful, although interpreting them is slightly different than if you're not using a random draw.
SamigoSAM-1130Emailing test takers in Chrome or Safari causes stacktraceThe feature that allows instructors to email test-takers in Tests & Quizzes causes a stacktrace in Chrome or Safari. To reproduce:

In Chrome or Safari, go to Tests and Quizzes and view the scores of a published test. (At least one user must complete the test first.)
Click on the "Email" link under one of the users' names.
Click "Send"

This will cause a stacktrace.

I did some poking around and found the problem is caused by the "clickEmailLink()" javascript function on the totalScores.jsp (and some other pages as well). The problem boils down to the fact that the script tries to submit a form and then also load a different web page in the same script. Firefox and Internet Explorer seem to be able to handle this, but Chrome and Safari won't. They'll either load the page or submit the form, but not both. In the current configuration, Chrome/Safari don't submit the form. Since the form isn't submitted, Sakai doesn't know who the recipient of the email is supposed to be. When it tries to send it, it finds a null email address which causes a stacktrace.

I tried to reshuffle the script to make it work in Chrome/Safari, but almost any changes caused the script to break in Firefox. Firefox would tend to stop navigating back to the totalScores page with any change. I'm not familiar enough with the inner workings of Tests and Quizzes to know what other solution to attempt.
SamigoSAM-1140NPE from mailerClick here for more information.
SamigoSAM-1237Show images attached when viewing printable versionShow images attached when viewing printable version, in this way, users can print the complete quizz with referenced images included.
SamigoSAM-1249Email feature in Submission Status sends feedback to wrong addressSee the following screencast:

If a user forgets to click send or cancel a previously started message and clicks on the Email link in Submission status, the previous addressee gets the message.

Observed on QA3 and on our Delaware production environment (Sakai 2.8.0 (Kernel 1.2.1))

UD Jira reference: UDSAKAI-433
SamigoSAM-1255Grading default should be that student's identities can be seen by gradersDuring the LA conference we had discussions after the SAMigo BoF about how anonymous grading is still the default OOTB for Samigo, which causes much instructor confusion.

I think may agreed that the default should be that student's identities can be seen by graders.

I'd be interested to hear use cases around why anonymous grading (something I perceive to be a bit of an edge case) should be the default OOTB.
SamigoSAM-1385Importing Tests from Site doesn't clear out "Release To" infoWhen you import tests from another site, the Release To information doesn't get cleared out and set to the current site. This prevents students from viewing the test if the test is published from the direct drop down "Publish" link.

To Reproduce:

1) Create 2 sites
2) 1st site: create a test with at least 1 question
3) 2nd site: import from 1st site (Site Info)
4) In dropdown, click publish and publish test
5) Become student in the 2nd site and notice the test doesn't show up
SamigoSAM-1398Default the "Release to" to Site if the imported assessment release to groupThis is similar to Here are how to reproduce the issue:

1. In site A, create an assessment and release it to groups.
2. Export that assessment.
3. In site B, import that assessment.
4. Go to the setting page of the imported assessment. You will see nothing is selected in the "Release To" section.

Desired behavior:
The "Release To" should be set to the site.
SamigoSAM-1555Anonymous setting still reveals some identifying infoI have a survey in Samigo which I set to anonymous, however when I go through and have a look at the answers in a response, I see at the bottom a link to email the person who submitted it, with their first name.
SamigoSAM-1779IE9: Student unable to record for audio questionUsing IE9, a student cannot record for an audio question.
Tested on both and

To reproduce:
As the instructor, create a test with an audio question
Publish the test

As the student, log in using IE9
Open the test and try to record for the audio question
SamigoSAM-1216HTTP Status 500 Error when downloading audio file from audio question in Tests & QuizzesClick here for more information.
SamigoSAM-1468Duplicate file name breaks donwload zipWe had a case where a student uploaded 2 files with the same name as part of an file upload question.

This causes the download zip to fail with an error:

011-11-10 15:37:56,013 ERROR TP-Processor236 - duplicate entry: Pretorius_Willem-petrus_prtwil005_IS2011B_PRTWIL005.accdb duplicate entry: Pretorius_Willem-petrus_prtwil005_IS2011B_PRTWIL005.accdb
at javax.servlet.http.HttpServlet.service(

1) the download all shouldn't assume the name us unique.
2) The catch needs to finer so that subsequent files get added to the zip
SamigoSAM-1641Float comparison errorsFindbugs identifies a number of places where floats are compared using ==

in the form:

data.getFinalScore() != originalFinalScore

Due to the way floats are represented in binary this could fail as no precision is specified.


use commons-math Precision.equals(Float 1, Float 2, Float eps)

The question is what degree of precision should we allow?
SamigoSAM-1841Calculated questions does not accept valid Formula, and doesn't report why, eitherI created this calculated question:

Two cars left from the same point at the same time, one traveling East at {x} mph and the other traveling South at {y} mph. In how many minutes will they be {z} miles apart? Round to the nearest minute.


For the abc formula, I used:

SQRT({z}^2/({x}^2+{y}^2)) * 60

The system rejects that, saying that it is missing a parenthesis. It isn't. When I adjusted it by removing the outermost pair of parens (just as a test even though I think that makes the calculation not work) the formula field was still pink, but there was no error explanation for why.
SamigoSAM-1905samigo / FCK editor question text always appears boldThe question text in samigo always appears in bold. If a instructor wants to place emphasis (by using bold) on a word or statement in the question it does not render properly on the student/preview assessment side. While creating the questions it appears that the text shows up properly. Using the headings of h4 or h5 also do not render properly. There is a notable difference when using h2 and h3.


1) Create an assessment
2) In the question text bold a choice word or small statement but not the entire question
3) Save the question - NOTE: it appears properly when creating the assessment.
4) Next preview the assessment / publish assessment and login as a student
5) The question is bold and the emphasis you placed in earlier is not noticeable
SamigoSAM-1234email command compromises anonymityWe set up a test to be graded anonymously, as part of a survey.

When grading, at the bottom of each test is a link "email ...." where .... is the name of the person submitting the test. This is a bad idea.
SamigoSAM-1393Timer starts even if the username and password is not correctThis is reported by IU:

1) Create a timed assessment using a username and password (under the high security in settings).
2) As a student attempt to take this assessment entering the incorrect username and password combination
3) Wait a few minutes and try step 2 again but this time use the correct username and password
4) Notice that the timer had already started prior to you accessing the assessment
SamigoSAM-1205SAMigo integration with Respondus LockDown BrowserSAMigo integration with locked browsers. Contributed by Respondus.
SamigoSAM-1440Samigo has some heavy queries when a user first enteres the tool, we need to make sure these queries limit by SITE_IDWe have identified the following Samigo queries when a user first clicks on the tool inside of a site. These queries are not limiting by SITE_ID and thus are pulling all published assessments, this is not scaling at all in our environment where we have thousdands of sites and tens of thousands of published assessments.

Here are the problem queries that we have identified:

select publishedf0_.ASSESSMENTID as col_0_0_, publishedf0_.FEEDBACKDELIVERY as col_1_0_, publishedf0_.FEEDBACKAUTHORING as col_2_0_, publishedf0_.EDITCOMPONENTS as col_3_0_, publishedf0_.SHOWQUESTIONTEXT as col_4_0_, publishedf0_.SHOWSTUDENTRESPONSE as col_5_0_, publishedf0_.SHOWCORRECTRESPONSE as col_6_0_, publishedf0_.SHOWSTUDENTSCORE as col_7_0_, publishedf0_.SHOWSTUDENTQUESTIONSCORE as col_8_0_, publishedf0_.SHOWQUESTIONLEVELFEEDBACK as col_9_0_, publishedf0_.SHOWSELECTIONLEVELFEEDBACK as col_10_0_, publishedf0_.SHOWGRADERCOMMENTS as col_11_0_, publishedf0_.SHOWSTATISTICS as col_12_0_ from SAM_PUBLISHEDFEEDBACK_T publishedf0_

select assessment0_.PUBLISHEDASSESSMENTID as col_0_0_, count(assessment0_.ASSESSMENTGRADINGID) as col_1_0_ from SAM_ASSESSMENTGRADING_T assessment0_ group by assessment0_.PUBLISHEDASSESSMENTID

select publisheds0_.ASSESSMENTID as col_0_0_ from SAM_PUBLISHEDSECTION_T publisheds0_, SAM_PUBLISHEDSECTIONMETADATA_T publisheds1_ where publisheds0_.SECTIONID=publisheds1_.SECTIONID and publisheds1_.LABEL='AUTHOR_TYPE' and publisheds1_.ENTRY='2' group by publisheds0_.ASSESSMENTID
SamigoSAM-1120Audio Files in Assignments get cut off when played in Firefox/QuicktimeThis is reported by Stanford (CW-2740):

There has been a longstanding issue with Firefox cutting off playback of audio recording files (.au). I just got a ticket from Ken Romeo, reporting that he had students upload mp3 files using the File Upload question type. These files also experience the same problem as the audio recording files, in that they play for a few seconds then get cut off when using the Firefox browser.
SamigoSAM-1259Bad concatenation procedureJean-François Levêque has found some issues related with concatenating strings to make a complete UI message:
samigo-app/src/webapp/jsf/author/publishAssessment.jsp has:
<h:outputText value="#{assessmentSettingsMessages.cancel_message_1}
#{assessmentSettingsMessages.cancel_message_3}" escape="false"/>
SamigoSAM-1835Student able to submit second assessment after due dateThe setting for late submissions accepted states that late submissions will only be allowed for students who do not have a prior submission:

Late submissions WILL be accepted after the due date. However, this applies only to students who have not submitted their work prior to the due date. They will be given one chance to do so and their submission will be tagged as late.

Currently, with this option checked and a due date, students can submit another submission after the due date even if they have a previous submission.

To reproduce:
Create an assessment with a due date, 2 submissions and Late allowed
Publish the assessment

As the student, take and submit the assessment before the due date
Before the due date, start the test a second time
Leave the test open until the due date passes
After the due date has passed, submit the assessment

Student is allowed to submit even though it is after the due date and one submission was already made before the due date.
SamigoSAM-925NPE occurs in DeliveryBean.timeExpiredClick here for more information.
SamigoSAM-1828Unexpected Error with Partial Credit with Multiple ChoiceClick here for more information.
SamigoSAM-1693NPE exporting to spreadsheetSeen in production:

caused by: java.lang.NullPointerException
at org.sakaiproject.tool.assessment.ui.bean.evaluation.ExportResponsesBean.getSpreadsheetData(
at org.sakaiproject.tool.assessment.ui.bean.evaluation.ExportResponsesBean.exportExcel(
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
SamigoSAM-787Incorrect internationalization in survey questions1) Select language to english.
2) In any assessment add a question of survey type. Select Answer: Disagree, Agree.
3) Change the language (for example spanish)
4) Edit the above assessment. You can see the answer with values: Disagree, Agree instead of En desacuerdo, de acuerdo witch is the same in spanish.
SamigoSAM-2004sam.assesment.remove logged with null contextWhen a working copy is deleted a null context is passed to the event service:

| 455106270 | 2012-11-04 09:20:26 | sam.assessment.remove | assessmentId=13953 | ~vula2a~dhorwitz | m | NULL |
SamigoSAM-1783Unable to record in IE9 or FFOn, I tried to record an audio question, both on IE9 and FF9. IE9 will NOT allow me to record, but no errors pop up.

On FF9, I did receive an error and am wondering if this may be part of the problem in SAM-1779.

I'm uploading a screenshot of the error which displays on nightly2, (which does not appear when recording using FF on 2.9 b07).

To reproduce:
Create a test with an audio question and publish it

As the student, begin the test, click on 'Click to record your answer...'
Click the 'Record' button in the pop-up
SearchSRCH-53Catalan translation for sakai 2.9 (search)Updates the catalan bundless
AdminX and AdminLite
Contrib: AdminX and AdminLiteADMX-11update the pom.xml files to make adminlite compile with recent 2.9+ sakai codeThis is to update the group id of several project, e.g. velocity, courier, etc inside the pom.xml.

Big Blue Button

Contrib: Big Blue ButtonBBB-88Email link to a meeting will always show status unavailableThis was tested on 1.0.7-rc2

I created a project site (BBB demo for Walsh), added Meetings, created a meeting, invited sean.

The BBB notification email is below. After I started the meeting, sean clicked on the link which is supposed to take him to the meeting. he logged into Sakai and went to the correct project site and meetings tool, but the meeting which was in progress for me was listed as unavailable to him. See screen cap "from email link".

If he clicked into the project site, navigated to meetings and clicked on the meeting, it showed as available. See screen cap "same session directly"

So it looks like email notification links don't work but you have to log into Sakai and navigate to the meeting.


Contrib: BlogWowBW-126Create a BlogWow 1.1.0 tied to Sakai 2.9-SNAPSHOTPoms need to be modified to build against Sakai 2.9
Contrib: BlogWowBW-131Blogwow tool fails to startup in sakai 2.9.x due to missing jarread the comments in EVALSYS-1170 to understand the issue. The spring jar is no longer in shared after 2.9, so you must include it in your war file
Contrib: DashboardDASH-230generate a build profile to make trunk dashboard code build-able with Sakai 2.9There is some compile problem with current dashboard trunk code and sakai 2.9.x code base. Need to add a build profile to support 2.9 build
Contrib: DashboardDASH-246change the Dashboard 1.0.x pom.xml files to use Sakai 2.9-SNAPSHOT versionThe Dashboard 1.0.x branch now refers to Sakai 2.10-SNAPSHOT. We agreed to have it point to Sakai 2.9-SNAPSHOT and create new tag after merging recent fixes. Hence Sakai 2.9 users can download the new Dashboard tag without pom.xml modifications.
Contrib: DashboardDASH-231dashboard build problem with Sakai trunk code after purepom changesDue to some recent Sakai trunk change related to purepoms, the Dashboard trunk can no longer build with Sakai 2.10 trunk.

Here is the explanation from Matthew Jones:

"Quick summary:
- If you have an indie, switch parent from purepoms to master. If you have some apis dependencies inherited through compile scope, these might be overridden by dependencyManagement in master so you may need to define more dependencies.

2) Purepoms were removed from 2.9 and trunk after 2.9.0-b03 a few months ago. If your contrib tool still uses a purepoms for 2.9 or 2.10 snapshot it will no longer be able to find these artifacts. ( Old artifacts for 2.9-SNAPSHOT and 2.10-SNAPSHOT were in These artifacts were up to 5 months old. We had changed to deploying all artifacts releases and snapshots to maven central/sonatype, so if your tool had this repository defined you need to update it.

Ideally your tool can use a fixed release version of 2.9 (like 2.9.0-b05). That would be ideally what your parent looks like:
You can use the version 2.9-SNAPSHOT which is in the repository, but 2.10-SNAPSHOT currently would require your users to download and build sakai-trunk-all to use. (As mentioned in Step #1)

It was also noticed that some projects had dependencies defined in their "api's" with no scope defined (so it got compile) and when the api was a dependency in something else (like the impl or the tool) those other dependencies would be pulled in as transisitive dependencies. However, since all api's are now defined in the master dependencyManagement as "provided", your tools dependencies may have to have these api's explicitly defined.


Say you're the dashboard project and you used to inherit from purepoms. Switching to master alone will cause some dependencies to not be found. This is because in the dashboard-api there is:

After switching to master, this scope becomes "provided" instead of "compile" as it isn't defined here, and it won't work when you include it in impl. So you'd need to define these as provided in impl.

Evaluation System

Contrib: Evaluation SystemEVALSYS-1170Evaluation tool fails to startup in sakai 2.9.x due to missing jarIn sakai 2.9.x, the spring-webmvc jar is no longer deployed to shared, and RSF depends on that jar being available. For 2.9 and later, evaluation-tool war needs to include the spring-webmvc jar.
Contrib: Evaluation SystemEVALSYS-1151Pom issues in 1.4 evaluationtag 1.4.0-B01The current evaluation 1.4.0-B01 tag has a couple of issues:

There is no profile for sakai 2.9.
The evaluation dependencies in the poms are for the 1.3 version of Evaluation.
Contrib: Evaluation SystemEVALSYS-1208Admin Search Feature displays nothingAdmin Search feature appears to be broke -- how to reproduce:
1) Select Administrate
2) Select Search
3) empty page is displayed

Nothing is displayed in logs as far as I can see

Sakai Kaltura Extension

Contrib: Sakai Kaltura ExtensionSKE-35Add support for HTML5 playback of mediaNeed to add support for the Kaltura HTML5 compatible player (which does not use flash). The flash player will be used by default when flash is supported but the kaltura player will be used otherwise.
Contrib: TextbookTXB-222textbook trunk is not compilable with Sakai 2.9 code baseI tried to compile tbook trunk with sakai 2.9.x, and got the following error:

[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] /Users/zqian/dev_29x/sakai/tbook/impl/src/test/org/sakaiproject/tbook/logic/test/stubs/[28,7] org.sakaiproject.tbook.logic.test.stubs.FakeUser is not abstract and does not override abstract method getModifiedDate() in org.sakaiproject.user.api.User
[ERROR] /Users/zqian/dev_29x/sakai/tbook/impl/src/test/org/sakaiproject/tbook/logic/test/stubs/[40,7] org.sakaiproject.tbook.logic.test.stubs.FakeSite is not abstract and does not override abstract method setSoftlyDeleted(boolean) in
[INFO] 2 errors
[INFO] -------------------------------------------------------------


RSFRSF-3Release RSF 0.7.6 to provide support for site languageSakaiRSF 0.7.5 has not supported site language in Sakai 2.9.
Currently, it is reported as a issue via SAK-22392 and LSNBLDR-94.

SakaiRSF 0.7.6 will resolve those issues by the fix of .
So, could you release it?


SakaiSAK-19964Gradebook drop highest and/or lowest to keep highest grade for studentAdd keep highest, drop highest/lowest feature to gradebook
SakaiSAK-20118Build a new portal for Sakai 2.9Generate a pdf from the Gradebook for printing
SakaiSAK-19813Build a new portal for Sakai 2.9Build a new portal for Sakai 2.9 while retaining the current portal. Make it possible to stay with the current portal with a mer property change. Take inspiration from the OAE design experience as well as other LMS products.

This is a high-level JIRA and the task will evolve over the next six months as design ideas are proposed, prototyped, and adjusted.
SakaiSAK-22236 Update default skinRutger's new skin for 2.9 is the inspiration for this new update.
SakaiSAK-8589Ability to upload a zip file containing documents and grades for a particular assignment - the reverse of the current Download All featureSee attachment on this page: SAK-8589 - Getting issue details... STATUS
SakaiSAK-800Upload, download and extract Zip archive files in Sakai Resources ToolIn situations where WavDAV cannot be used to manage resources, it would be useful if a number of files and folders could be uploaded and downloaded into/from the Resources tool using archive files (e.g., .zip, .gz, .sit). The zip archive would then be extracted automatically on the server, resulting in the addition of the files and folders that constituted the contents of the zip archive. If one wanted to download a collection of files and/or folders, then one could go through a picking process, select the desired items, choose the type of archive, and then download it.
SakaiSAK-22392Changing language in course site when refreshed in SiteSet site language to French France. Enter site Info tool (Information du site), click on 'page order' (ordre des pages) and then click the refresh button and the language changes to English for all items within this tool.
SakaiSAK-3186Add dynamic language support and add language (locale) choice to user preferencesCurrently Sakai can support only one language locale, statically configured at system startup. There is great demand (e.g. Europe, Canada) for the ability to dynamically display different languages from the same Sakai instance. I've attached a document describing the functionality and design.
SakaiSAK-21183QuickPublish option for sitesAllow the '! Unpublished Site' badge that is shown at the top of the tool menu to be a link so that when the instructor clicks on it, the course gets published. 

We've inserted this link with xsl-portal and I've attached a screenshot of what it looks like. 

At it's most basic, the js that makes this work is: 

function publishSite(siteId) { 
    var reqUrl = '/direct/batch?_refs=/direct/site/'+siteId+'/edit&_method=PUT'; 
    var resp = $.ajax({ 
      type: 'POST', 
      data: 'published=true', 
      url: reqUrl, 
      success: function() { location.reload(); } 
SakaiSAK-21201SAK-17880 Set CKEditor as default for 2.9 releaseFollowing TCC vote, the CKEditor has been chosen as the default rich text editor for the 2.9 release. This needs to be set as the default in the config module as well as the EditorRegistry in portal.
SakaiSAK-20713Provide 2.9 compatible set of example skins2.9 Neo portal is temporarily hardwired to a skin in portal for development. Provide a set of example skins analogous to the ones in the standard portal for the Neo Portal. Then the Neo portal can be modified to participate in skin selection.

The neo portal will add a prefix to the site skin of "neo-" - so the too.css URL when the neo portal is in effect will be


If you make a site skin "engineering" the path under neo will be


And if you go back to the old portal the URL will be:


This way, if you install 2.9 and set the portal back to the old templates, you do not have to move your skins at all. If you want to use neo, you need new skins with the "neo-" prefix for each skin.

There is also a new property (yay) to allow you to change the prefix that is added to the skin name to be something other than "neo-":


As an example, you might want to put all the neo skins in a subfolder - so you would change the prefix to be

SakaiSAK-20612Allow closing section info tool until a release dateOur instructors want to able to close section join until to a release date. In this way, student won't be able to join to a section until that date happens.
SakaiSAK-21564Clean up POMs for 2.9Upon discussion with various institutions and SCAs, the decision has been taken by the CLE team to flatten the POM hierarchy for the tools within the CLE release. Combined with work such as SAK-21389, SAK-21397, and KNL-861, this is expected to help rationalize the release process.

There is substantial rationale and there are various suggestions (to be detailed here and in Confluence), but the first step is to re-parent all tools in the release to master. This should have very little impact on the the tool POMs other than allowing significant duplication to be removed (repositories, dependencyManagement, and plugin configuration).

Other likely steps include:
1. Splitting materials to differentiate between the "corporate POM" (used to set base organization and configuration information) and the actual version/dependency management -- both are in master now, forcing configuration like source layout on projects wishing to simply defer version management.
2. Using POM imports to include dependencyManagement sections across projects without inheriting or forcing shared items into master.
3. Setting up "dependency aggregation" POMs for the most common/useful sets of dependencies. These can be added as a simple dependency that transitively includes others. The best example is an analogue to sakai-edu-tool, where a single dependency could provide compile-time support for all of the modules covered by purepoms.

-- more to come here --
SakaiSAK-21160SAK-21135 Sakai 2.9 Schedule Accessibility ReviewPerform an accessibility review of the Schedule tool as released in Sakai 2.9
SakaiSAK-22783SAK-22707 Unify applicationContext.xml files in gradebook 2.9Two different applicationContext.xml files are present in gradebook. They startup order is not defined so either may be chosen when Sakai starts up. For the 2.9 release they will be merged to be identical. For 2.10 one should be eliminated.
SakaiSAK-21136SAK-21135 Sakai 2.9 Home Tool Accessibility ReviewPerform an accessibility review of the Sakai 2.9 release's home tool.
SakaiSAK-21859add shortened url properties to 2.8 and 2.9 branchesadd shortened url properties to 2.8 and 2.9 branches. These are only present in trunk but the tool is available since 2.8 so the default properties in both 2.8 and 2.9 need to be updated.
SakaiSAK-213282.9 portal chat doesn't seem to keep users upI connected to a site from two browsers with different users, one the site owner and the other Access. New users show in "in this site" for about 30 sec and then disappear. Is this expected?

I also had Sakai Administrator show in my site for 30 sec. Unless someone else was logged in as admin, I don't think that's real.
SakaiSAK-20669Add catalan translation for 2.9Catalan translation for trunk
SakaiSAK-21138SAK-21135 Sakai 2.9 Assignments Accessibility ReviewPerform an accessibility review of the Assignments Tool
SakaiSAK-21137SAK-21135 Sakai 2.9 Announcements Tool Accessibility ReviewPerform an accessibility review of the announcements tool.
SakaiSAK-22667Synoptic Announcements ordering issuesBoth in 2.8 and 2.9 trunk.

Announcements in the Synoptic center are not being displayed in a chronological order. In 2.8 we see messages are being grouped by sites and in 2.9 the order seems random (message from 12.58 is above message from 12.59)
SakaiSAK-22444Edit tools no longer highlighting when adding tools (regression from 2.8)On 2.8 (and likely before) when tools were added with Edit Tools, a span highlight were added around tools that were added. The text even indicated that the tools added were highlighted. However in 2.9 and trunk there is no longer the span added no highlighting for newly added tools, they look the same as tools that exist in the site. So something was lost between 2.8 and 2.9 somewhere.

Tested on nightly and (doesn't work) as well as 2.8.x instance (works).
SakaiSAK-20544problem of returning to Site Info default view in new neo portalUpdate: The current plan is to disable this and mark as as "experimental" for both 2.9 and trunk.

The new neo portal introduced a "Add Tool" link at the bottom of tool navigation panel. Click on it, it would direct user to Edit Tools page.

Refresh the page to return to Site Info list view (default view).

Choose Edit Site Information, save change and finish.

The page refreshes, but show the Edit Tools view.
SakaiSAK-21224When adding a portfolio template, the numbers are missing from the stepsChecked 2.8.1 and 2.9 - neither version has the #s for the 'Steps' when adding a portfolio template.

To duplicate:
1) Click Portfolio Templates from the menu
2) Click Add

Only 'Step' displays

This version, 2.7.2 contains the 'Step # of #' when adding a portfolio template.
LocalSakaiName - RELEASE - Sakai 2.7.2 - Server localhost
SakaiSAK-21664Please add lesson builder name to tools_es.propertiesPlease add lesson builder to I'd appreciate doing it in both 2.8.x and 2.9.

I believe the correct name is "Lecci\u00F3nes".
SakaiSAK-22331Activate short urls for resources by defaultAs per

Short urls for resources will be enabled by default including the randomised URL shortener.
SakaiSAK-21648100% fr_FR translation for portalPlease merge this translation back into 2.9 and 2.8.

If the subversion merge fails, please replace the old file with the new one from trunk.
SakaiSAK-21251Modify configuration option to enable/disable neoportal chat to default to falseThe new chat functionality deployed with the Sakai 2.9 neoportal needs to be configurably enabled/disabled, with the default option disabled. The property (already defined) is:
SakaiSAK-21024Gradebook 1.0 All Grades Row Alignment Issue in Select BrowsersISSUE: When there is a long name in the gradebook (version 1.0), the name field will wrap to a second line, but the corresponding grade row for the student does not expand in kind in Internet Explorer (and some also report issues with Firefox 5.0 on PC). Therefore, the gradebook table is out of alignment as the professor scrolls down the list of names.

It looks like this issue had been addressed in the past (?) but is back or some other change may have overwritten the specific fix?

Sakai Environments:
Can reproduce this issue on our local Sakai 2.8.1 instance as well as the nightly 2.9 server (

Client Operating Systems:
Windows Vista
Windows 7 32-bit
Windows 7 64-bit (IE 8 32-bit, IE 8 64-bit, IE 9)

Client Browsers (with issues):
Internet Explorer 9 (32-bit on Windows 7 - compatibility view off): Yes -- seeing the problem
Internet Explorer 9 (32-bit on Windows 7 - compatibility view on): Yes -- seeing the problem
Internet Explorer 8 (64-bit on Windows 7 64-bit - compatibility view off): Yes -- seeing the problem
Internet Explorer 8 (64-bit on Windows 7 64-bit - compatibility view on): Yes -- seeing the problem
Firefox 5.0.x (Windows Vista): a reliable info systems faculty member reports the issue; we don't have other Vista systems to test
Firefox 5.0.x (Windows 7 32-bit): Mixed results; a reliable support staff member reports the display issue, our tests on other system so far cannot replicate

Client Browsers (gradebook displays fine):
Firefox 5.0.x (Windows 7 32-bit): Mixed results; a reliable support staff member reports the display issue, our tests on other system so far cannot replicate
Firefox 3.6.x (Windows 7 32-bit): no issue (the gradebook rows expand properly)
Safari 5.1 (Windows 7 32-bit): no issue (the gradebook rows expand properly)
Chrome Beta Channel (Windows 7 32-bit): no issue (gradebook rows expand properly)
Firefox 5.0.1 (Mac 10.6): no issue (gradebook rows expand properly)
Safari 5.1 (Mac 10.6): no issue (gradebook rows expand properly)

See screenshots for how the problem appears in the Gradebook in Internet Explorer 8.0 on Windows 7 64-bit. Same behavior happens in IE9, too.

Thank you for addressing this "All Grades" display issue.
SakaiSAK-20089Require Java 1.6This is a parent issue to track the work for requiring Java 1.6 in Sakai 2.9.

From the list:

2.8: recommend 1.6 - code compiles in 1.5
2.9: require 1.6 - no guarantee that code will compile/run in 1.5

If we want to drop 1.5 then we need to make sure that the
code compiles after adjusting Maven's compiler plugin
settings from 1.5 to 1.6. Last time I checked (early
December) the kernel failed to build due to an issue with
kernel util's due to "unmappable character
for encoding UTF-8 (53 cases)."

Yep lets get any required modifications committed into trunk, and enforce 1.6 as soon as possible so we can iron anything out early.

Let's make this a 2.9 blocker and work on this at least as soon as 2.8.0 is released.
SakaiSAK-21517Site Info group helper accepts empty site titleCreate a group in adhoc groups with the title " " (1 empty space)

Sakai 2.8 and before: group is saved
2.9 and later a stack trace is thrown from the kernel about an empty name

Solution:the group helper should trim the imput before checking if a value has been entered
SakaiSAK-21842Port CKEditor support to 2.7.xThere is some desire to run CKEditor with CLE 2.7.x. This functionality should not be committed to the maintenance branches, but could be used from feature branches. Ideally, those wanting this functionality would upgrade to 2.8 or 2.9, where it is already present, but this may not be possible for local reasons.
SakaiSAK-22179Release Sakai 2.8.2This will track everything for the 2.8.2 release.

Release process:

Release order:

The above release order is being reviewed and condensed onto the 2.8.2 release page above.
SakaiSAK-21369Create compatibility patch for IE10We decided on the email list that issues relating to IE9 should attempted to be fixed for Sakai 2.9. The best fix for this seems like it would be to set compatiblity mode to IE9 so that when IE10 comes out we're at least ready for that.
SakaiSAK-22709Possible NPE in GradebookServiceHibernateImplSeen when calling code in a custom entityProvider:

2012-10-02 14:52:20,614 INFO TP-Processor3 - entityExists(fe7927a0-ae7b-416a-adea-f6ceb5640e62)
at org.sakaiproject.component.gradebook.GradebookServiceHibernateImpl.fixingPointsEarned(
at org.sakaiproject.component.gradebook.GradebookServiceHibernateImpl.getTotalPointsEarnedInternalFixing(
at org.sakaiprojec

In edu-services 1.1.6 (2.8.2) though code analysis shows its still present in trunk and 2.9

if(gradeMap != null)
Double rightPercent = gradeMap.getValue(letterGrade);
BigDecimal rightPercentBD = new BigDecimal(rightPercent);

If gradeMap.getValue(letterGrade); returns null this will NPE
SakaiSAK-22288Move trunk Portal, Skin, Tutorial Tool into the 2-9-x branchAt the TCC meeting in Atlanta, we decided to move the current trunk of portal into the 2-9-x branch to get the new skin as well as all of the fixes to many JIRAs. Of course there is some likelihood of regression so this will require special vigilance in QA for the 2.9 tag that incorporates the new trunk of portal.

Things to watch:

- CSS tweaks need to be verified as to not having regressions

- Another accessibility pass would be nice - I don't think there are too many accessibility regressions

- Tools functioning in the PDA portal since the inlining algorithm has been adjusted

We need a dev test pass and then some focused QA once the branch is moved into 2-9-x.
SakaiSAK-21165please add a pattern to the PDA portal exception listPlease add the pattern /uvbview$ to the list of URLs that the PDA portal should pass through unchanged. This URL is created by the Ajax feature in RSF. As far as I can tell, all users of RSF's built-in Ajax support will match this pattern. Without this change, RSF's Ajax calls do not work when the PDA portal is in use. (More realistically, we have to ask all sites to add a property to

This is a problem for version 1.4 of Lesson Builder, but could come up in any tool using RSF. UVBProducer, which produces this URL, is referred to in Assignment 2, Evaluation, Gradebook, and Lesson Builder. However I haven't tested the applications other than Lesson Builder to see whether it's actually an issue and this pattern actually fixes them.

Since 2.8.1 is intended to be friendly to Lesson Builder, it would be useful to retrofit this to 2.8.1, as well as trunk and 2.9.
SakaiSAK-19760SAK-19083 Review the order of styles and scripts in the portal (portalstyles.css portal.css)There are a number of Web Page performance optimizations recommendations via Chromes Developer tools. One of the critical recommendations is to optimize the order of styles and scripts. This allows parallelization of downloads by the web browser.


If the optimization is just a question of re-ordering a Velocity template then it is well worth the effort. If not this Jira can be considered documentation for the Sakai 2.9 life cycle.

Doing some really rough maths.
50 ms saved per page x 3,000,000 users x 20 (logins) x 50 pages ~ 42,000 hours saved per year.

Generated by Chrome - Developer tools - Audit

The following external CSS files were included after an external JavaScript file in the document head. To ensure CSS files are downloaded in parallel, always include external CSS before external JavaScript.

SakaiSAK-20843Prep portal for off-cycle releasesIn order to perform off-cycle releases of OSP and other major CLE capabilities, a number of CLE projects that OSP is either directly or transitively dependent upon will also need to be prepped for off-cycle releases so that SNAPSHOT dependencies can be eliminated prior to performing an OSP release. Portal is one such project.

Both OSP (osp/xsltcharon, osp/portal) and Metaobj (tool & util -> portal-api) are dependent on the portal.  Leaving aside the issue of moving osp's portal stuff to the portal project (which has been suggested in the past), I would like to make the following changes to the portal trunk poms:

1. Change the <groupId> to org.sakaiproject.portal.  Portal coordinates will adhere to the pattern adopted for other indies, which is reflective of broader Maven naming practices including that practiced by Apache.  <artifactId> and <version> would not be changed.  It's also easier to debug/review binaries in the repo (either local or remote) when they all can be found in


then the current scattered arrangement of


3. Set up portal so that we can deploy binaries to the snapshot repo. Basically boilerplate additions to the base pom. Add <distributionManagement>, <repositories>, <pluginRepositories> and <reporting> declarations to base pom. Update the current Jenkins job to deploy snapshot updates.

4. Add an assembly which provides a Tomcat-overlay zip of LB. As I noted in LA we will not substitute an assembly for a full source check out of Sakai trunk but the assemblies have proven quite useful to msub deployers such as Steve Swinsburg. Plus, if we ever get the app store concept going a zip of portal binaries will prove quite useful. Again, this code, a pom file and deploy.xml is largely boilerplate. It takes about 10 minutes to write.

5. Set up portal to use the release plugin. Involves swapping out the master pom for the purepom like other indies. We have 2.6, 2.7, 2.8, 2.9 versions of purepoms. I expect that portal will benefit from use of the release plugin (which the purepoms provide) given the advent of the new neo portal.  The release plugin, as you know, provides the ability to generate off-cycle releases in a simple, nay trivial manner.

6. Tidy up the poms. For example, substitute standard Maven variables such as ${project.groupId} and ${project.version} where appropriate for portal's own "internal" dependencies.

7. Portal is bundling up a copy of the portlet-api-1.0.jar (available in /shared/lib) in the following *.wars. Include portlet-api in <dependencyManagement> and adjust the <scope> to "provided" in order to eliminate bundling up the jar in the *.war files.


8. Update portal dependency declarations in other projects: master, metaobj and OSP.

9. Implement any necessary build profiles. As discussed in LA one change we intend to make for 2.9+ is to perform API releases independently and ahead of tool releases. In the case of portal, sometime after code freeze we would release the portal apis.  In order to do this I envision replacing the api's current <parent> with a purepom-like "sakai api" pom that will be released first so that a portal api release can actually be performed (currently, you can't do a release of an api that has a snapshot dependency on its own project base pom). Ideally, once we hit code freeze, we release the kernel apis, then all the tool apis. We should then be able to better reflect version-wise the actual steady state of most project apis.  We'll need some additional build profiles to better segregate releasing apis and then everything else.

The lead portal comitter, Chuck Severance, supports this effort.
SakaiSAK-18654Forms : problem with date format when editing the date field with jsf date widget if your locale is fr_FR, don't test the format date for europen locale param.context : If your locale is fr_FR
when you want to use the date widget to add a new date in a OSP form , if you click on the date widget icon, the date format wich is returned is always mm/dd/yyyy even if you want an other format like dd/mm/yyyy.
I found that the calendar2.js is always called, regardless of the local parameter.

I think that the problem is in the file :
in version 2.6x, line 171: we find
if (format.getLocaleDateFormat() == DateWidgetFormat.DD_MM_YYYY())

after having modify with:
if (format.getLocaleDateFormat().equals(DateWidgetFormat.DD_MM_YYYY()))
the format detection is correct and the good : calendar1.js is called for europeens (fr_FR, es, nl etc..)
SakaiSAK-18952Web services for SamigoAdd web services to interact with Samigo.
SakaiSAK-19847problem in error workflow in adding rosters in Site infoClick here for more information.
SakaiSAK-19909ical files are invalid if an event description contains a newlineI exported an ical file from Sakai and ran it through:

I got the following error:

Error: Error was: Error at line 254: Illegal property [SARAH]
Cause: Caused by: Illegal property [SARAH]
Context for line 254:
251: UID:98ad7fcc-c63d-47f7-aeda-c68422302cd8
252: DESCRIPTION:Timetable for the induction is attached but may change. A har
253: d copy will be available in your induction packs on the 5th October. Sarah
255: ORGANIZER:CN=Sarah%20Norman defines what should appear in organizer field - it should be a URI
SakaiSAK-20674Parse OpenURL requests to add book to reading listEnhance the citation helper to allow it to parse citation addition requests in a similar way to the Google Schoolar integration that exists at the moment. - OpenURL specification.
Sir Louie project:
SakaiSAK-20801sendTemplateUseNotification has institution specific data in the email that is sent when a site is created from a templateThe sendTemplateUseNotification method in SiteAction is called when a site is created from a template, and sends an email to the tempalte owner. However the email contains information that is institution specific:

buf.append("Alliance Team\n");

It just so happens that we (ANU) contributed this feature in SAK-12868, however it has not been converted over to the email template service so this issue remains.

This line should be removed, but ideally this should be converted to use email template service like the rest of the emails in Site Manage.
SakaiSAK-20958config.extraPlugins seems to have stopped loadingThe ckeditor config.extraPlugins doesn´t appear to be loading plugins. I used the new feature, "wysiwyg.editor=ckeditor" to load the ckeditor, but as I try to load the wiris plugin, nothing is loaded. I´ve inspected the stack at that point and the plugin name is being provided correctly, but does not load the external js n such.


Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or

CKEDITOR.editorConfig = function( config )
// Add WIRIS to the plugin list
config.extraPlugins += (config.extraPlugins.length == 0 ? '' : ',') + 'ckeditor_wiris';

// Add WIRIS buttons to the "Full toolbar"
// Optionally, you can remove the following line and follow
config.toolbar_Full.push(['ckeditor_wiris_formulaEditor', 'ckeditor_wiris_CAS']);
SakaiSAK-20957Users deleted from the system throw errors in the logsIf you create a user, add them to a site then delete them from the system via the Admin Users tool, then go to the site you will get:

2011-08-02 13:54:33,838 WARN http-8081-Processor22 - SiteParticipantHelper.prepareParticipants: user not defined b52ec79d-940d-4124-9f21-29092796616c

The same thing for external users (i.e. from LDAP)
SakaiSAK-21110Remove cacheTTL code from JLDAP provider as it has no bearing in the JLDAP cacheSteps to replicate:

1) Set a very high cacheTTL in jldap-beans.xml
2) Start sakai
3) Go to memory tool
4) Look for JLDAP cache and notice TTL is still set to default 300
SakaiSAK-21407Allow import of group membership from CSV fileThis is a patch to add an Import from file option in the Group Membership page of Site Info to take CSV of group membership. If the group exists (match on title) the users are added. If the group does not exist, it is created and the users added. The users must first exist in the site they are being added to.

This work was completed on behalf of Ultraline Technologies (
SakaiSAK-21303Internal variable names are displayed.When no realms match the search condition, "$topMsgPos - $btmMsgPos of $allMsgNumber" is displayed.
See attached NoRealms.PNG.

Steps to reproduce:
1. Go to Admin workspace / Realms
2. Enter a search term (e.g. "abc") and press Enter.

This issue has occurred since the fix via SAK-18807.
SakaiSAK-21313Date/time is displayed using system locale.See attached PodDate.PNG.
In spite of having set site language to English, the date/time is displayed in Japanese.

It should be displayed using site language (or preference).
SakaiSAK-21403The group property to enable Site Info to see groups should be moved out of site-manageIn order for a group to show up in the Manage Groups part of Site Info, it must have the property:


This is defined in:
site-manage-util/util/src/java/org/sakaiproject/site/util/ public static final String GROUP_PROP_WSETUP_CREATED = "group_prop_wsetup_created";

Therefore, other tools that want to create groups with this property must either take a chance that the property won't change and hard code it themselves, or use the constant from the site manage utils, creating a hard dependency.

Ideally, this property would be moved to the kernel.
SakaiSAK-21430Allow for customisable tool iconsThis is a request to allow customisable tool icons. Currently, every tool of the same type gets the same icon. For example, if you have a number of web content tools, they all have the same icon. See screenshot.

I propose that when rendering the tool list, the portal checks for a tool property (tool-class). The value of this is then output into the markup for the tool, e.g.:

<span class="toolMenuIcon icon-sakai-iframe TOOL-CLASS-HERE">Web Content</span>

Corresponding CSS would need to be added to portal.css for the actual styling to occur.

This is the approach taken in uPortal.
SakaiSAK-21495Allow guest access on a site by site basisCurrently, you can control guest access on a system-wide basis with the setting nonOfficialAccount=true/false (introduced in SAK-13389 ).

However, sometimes you want to make exceptions on a course-by-course basis.

The attached patch will allow a site property ( AllowedNonOfficial ) to override the setting and allow guest access on a site-by-site basis.
SakaiSAK-21009Cannot set section time while use non-English locale.While setting time of a section in non-English locale, it will generate a RuntimeException. Its hint is "A bad date made it through validation! This should never happen!". But unfortunately, it happens.
In /sections/sections-app-util/src/java/org/sakaiproject/tool/section/jsf/ convertStringToTime(String str, boolean am), An suffix either "AM" or "PM" is added according to the param. And the result string will be parsed to date by user locale(new ResourceLoader().getLocale(), line 197). Since not all locale use AM/PM (zh_CN for example), it will cause a "never happen" exception.

The solution of this bug is just change the line 197
SimpleDateFormat sdf = new SimpleDateFormat(pattern, new ResourceLoader().getLocale());
to US locale which use AM/PM
SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.US);
SakaiSAK-21395Page Order tool allows adding of tools to a site that are not appropriate for the site typeThe Page Order helper within Site Manage allows you to add ANY tool to a site, including those designed only for My Workspace. It seems to bypass the configuration.

For example I can add the Account, Profile and user Preferences tool to a normal project site. In addition the list doesn't show the normal site tools that I am allowed to add (like Forums for example)

IMO the ability to add pages via Page Order is redundant as you can do the same using Site Info > Edit Tools.
SakaiSAK-21428Bad formatting of navbar in 'new template' viewIf you click 'New template' in Email Template Service you get a half rendered nav bar.

This is because of <div class="navIntraTool"></div> which should not be present for that particular page.
SakaiSAK-21500SAK-21352 OSP Wizards: Adding page to wizard causes unexpected error1. Log in to QA3-US
2. Create a project site with OSP Wizards tool
3. In Wizards, create a new wizard (either sequential or hierarchical), follow basic wizard creation routine
4. On "Step 3: Add Pages," add a page to your wizard
5. Give the new wizard page a title
6. Click "Save Changes"

Sakai will display an unexpected error. When you refresh the Wizards tool, the wizard will be successfully created, but the page will not have been added. Wizard page adding is working properly on Rutgers's implementation of 2.8.1.

Importing a sequential wizard that has pages does not cause the error. Adding more pages to the imported wizard also causes the error.
SakaiSAK-21929SAK-19842 'Secure Connection Failed' error when clicking "what's this" under Resources -> Copyright AlertUnder Resources, clicking on "what's this" beside Copyright Alert gives the following error:

Secure Connection Failed
An error occurred during a connection to
SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)

URL of pop-up:

I tried editing the URL and getting rid of the second '/' after 8086, and pasting it in a new window (can't edit the pop-up), but still get the same error.
SakaiSAK-21582Simplified Chinese translation for Announcement 2.8.1Based on 2.8.1
Translate all keys according to default properties.
Remove unused keys according to default properties.
Improve translation.
SakaiSAK-21595SAK-21594 Get common to build site "site:site" mvn targetmvn release are failing because there are two empty tests in common.

These empty tests cause failure in Maven sites


I am deleting the commented-out tests
SakaiSAK-21910i18n date/time enhancement and swedish language bundle - patchesUmbrella issue for all internationalization patches coming from UMU/SU in Sweden.
SakaiSAK-22073RIS files starting with Byte Order Mark (BOM) fail to import the first citation.A text file which starts with a Byte Order Mark (BOM) doesn't import correctly, the first citation in the list fails to import. As mentioned in the Wikipedia article Notepad on Windows will add a BOM to UTF-8 files.

Attached is the same list twice, once with a UTF-8 BOM (EF BB BF) and one without. You can see the BOM in a hexdump of the file:

$ hexdump -n 16 Paleo6a-bom.txt
0000000 ef bb bf 54 59 20 20 2d 20 4a 4f 55 52 0d 0a 41
SakaiSAK-22282Proposed patch to support group submissions.Ability to turn on/off Group Submission feature ( must be set in

This patch makes changes allowing Site Groups to act as submitters of an Assignment instead of an individual. Any individual in the group may make submissions/changes and all members of the group are emailed notifications on submissions. All behaviors on individual submissions can be applied to Group Submissions such as Grading, Resubmissions, Grade Release, Downloads, Uploads, etc. One grade is designated for the entire Group and all individuals receive this grade in the Gradebook (A future patch is expected to include a mechanism to alter an Individual's grade from the Group's grade).

Ability to turn on/off Visible Date feature ( must be set in

This patch also includes an optional visible date feature. If visible date set, student can see assignment but can not submit/save yet. This feature is driven by a need for us to show students upcoming tasks but not allow them to act on them until the open date.
SakaiSAK-22439Updated mongolian translations for some toolsMigrated from SAK-22097.

Bayanaa added a comment - 30-Jul-2012 17:13
I've fixed and attached translation bundle files for the following:

I kindly request your assistance in putting them into the trunk version. Thank you.
SakaiSAK-22476Some projects reference caret Maven repositories and if they are down they slow the buildSome projects are still referencing the caret maven repos. They are currently down and its taking me ages to build Sakai with a clean repo. They are referencing RSF which has been migrated to the Sakai repo anyway so they are redundant and unnecessary.

All references to them should be removed.


[INFO] ------------------------------------------------------------------------
[INFO] Building sakai-gradebook-app-ui
[INFO] task-segment: [clean, install, sakai:deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory /Users/erkel/dev/sakai/src/2.8.x/gradebook/app/ui/target
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[WARNING] Unable to get resource '' from repository CARET-Maven2 ( Error transferring file: Operation timed out
[WARNING] Unable to get resource '' from repository caret-dev ( Error transferring file: Operation timed out
995b downloaded (standard-war-POM-3.pom)
SakaiSAK-20443The transformation between xserver fields and sakai fields does not bear in mind the code ' 020 ' that corresponds to ' ISBN 'On having recovered a book from a server xserver, this sends to us the ISBN in the code 020 , but on having examined the register of the citation there appears the field empty 'ISBN'.
Examining the file xserver2sakaibrary.xsl we see that 022 identifies the code both with ISSN and with ISBN, when it corresponds to this one 020.
The soluction has been:
<!-- GET ISSN/ISBN -->
select="datafield[(@tag='022' or @tag='020') and @ind1=' ' and @ind2=' ']/subfield[@code='a']">
<xsl:value-of select="text()" />
SakaiSAK-20765Catalan translation of OSP:Matrix needs to be upgradedCatalan translation of OSP:Matrix needs to be upgraded. There are minor mistakes in the translation.
SakaiSAK-20766Catalan and Spanish translation of Roster need to be upgradedCatalan and Spanish translation of Roster need to be upgraded.
SakaiSAK-20908Upgrade Java version to JDK 7.xRelase of JDK 7.0 is right atound the corner with a a lot of anticipated feature including JVM support for other languages. I have tried to complied 2.8.x FRAMEWORK against release candidate and it was SUCCESSFUL with unit tests.
Full profile for sakai 2.8.x failed. I see one error here which may be just package location movement. I am anticipating no more than a couple for more errors in compilation. deployment may be another deal.
Here is the relevant build log.
[INFO] -------------------------------------------------------------
[ERROR] /home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[49,31] error: package com.sun.image.codec.jpeg does not exist
[ERROR] /home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[50,31] error: package com.sun.image.codec.jpeg does not exist
[ERROR] /home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[143,6] error: cannot find symbol
[ERROR] class ProfileUtils
/home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[143,33] error: cannot find symbol
[INFO] 4 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

/home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[49,31] error: package com.sun.image.codec.jpeg does not exist
/home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[50,31] error: package com.sun.image.codec.jpeg does not exist
/home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[143,6] error: cannot find symbol
class ProfileUtils
/home/mustansar/source/sakai-2.8.x/profile2/util/src/java/org/sakaiproject/profile2/util/[143,33] error: cannot find symbol
SakaiSAK-20961Common project release fails due to errors when rendering Maven reportsThe release plugin fails on common (trunk, 1.0, 1.1) when generating Javadocs with the following error. This is due as Matthew points out to the presence of two commented out test classes.

[INFO] Loading source files for package org.sakaiproject.api.common.type...
[INFO] Loading source files for package
[INFO] Constructing Javadoc information...
[INFO] 1 error
[INFO] 2 warnings
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Error during page generation
[INFO] Embedded error: Error rendering Maven report:
[INFO] Exit code: 1 - javadoc: warning - No source files for package org.sakaiproject.api.common.type
[INFO] javadoc: warning - No source files for package
[INFO] javadoc: error - No public or protected classes found to document.
[INFO] Command line was: /usr/lib/jvm/java-6-sun- -J-Xmx1024m -J-Xms168m "-J-Xms168m -J-Xmx1024m -J-XX:PermSize=128m -J-XX:NewSize=64m" @options @packages
[INFO] Refer to the generated Javadoc files in '/home/arwhyte/svn/common/branches/common-1.0.x/target/checkout/target/site/testapidocs' dir.
SakaiSAK-21015Announcements - please restore the listing of announcements to show newest to oldestISSUES:
In previous versions of Sakai (even earlier versions of 2.8), the Announcements tool would always list the most recent announcement first (sorted descending order by date). Now, it appears that this default behavior has shifted to showing oldest to newest instead (sorting ascending order by date).

I am writing to ask that the previous behavior -- sorting in descending order -- be returned to Sakai 2.8.x and 2.9.x. This is desired behavior which helps site managers and participants stay aware of the most recent information first. This is generally accepted as best practice for organizing announcement information, especially in classes. At our campus, faculty have complained about this new sorting and I expect that faculty at other campuses would have the same response.

In an earlier build of Sakai 2.8 (rc3 on as of Aug 12, 2011 at 12:30 PM US Pacific) still has the previous sorting enabled. I am not sure where the bug or change was introduced, but hope that this information helps the community fix this display problem.

Thank you so much for looking into this issue.
SakaiSAK-21168SAK-21124 Identify the config by changing the SCS to support tracking of config itemsFind all the config values by updating the SCS to allow tracking
Also update the SCS to allow change listeners and live config changes
SakaiSAK-21284DAV "MOVE" operation is implemented as copy/removeThe doMove() operation in implements a move as a copy followed by a remove. This causes all files so "moved" to be recreated in the storage volume before the old copies are deleted. And so in every case, the application server must read the full content of each file and write it back out again. In a shared storage situation, particularly a multiple-volume one, this creates several risks. And when multiple MOVE operations are issued in sequence (eg a user using a DAV client to move 10 folders to another location), several threads are kicked off which can result in complete saturation of the server's I/O system and/or NFS connection.

ContentHostingService provides a "rename" method which may or may not be appropriate for the needs of the DAV server, and in addition that method is also implemented in this manner (copy then remove-- see KNL-817), however, this implementation presents a big risk when dealing with multiple multi-gigabyte files.
SakaiSAK-21353chat took down our systemchat took down our system this evening. On some of the front ends, we found ClusterEventTracking at 100% and not much else happening. We also had continuing GCs, which I assume are related, though I can't prove it. Note that I'm just guessing that the following patch will solve the problem. It's an unambiguously good idea, but I find it hard to believe that this alone caused all the problems. As far as I can see, one ChatDelivery is created for each message, and I don't think we have that high a rate of message deliveries for this alone to kill us, but I've found that fixing the problems I know about makes it easier to find the ones I don't know about...

The problem was in org.sakaiproject.courier.impl.BasicCourierService.deliver( This code inserts items to be delivered (ChatDelivery objects) into a list for each destination. It checks to see if a given message is already in the list, using contains. Contains uses equal. One thinks of equal as low-overhead, but in this case it it not.

ChatDelivery objects have the message to be delivered. It is either the ID of a message or the actual object. Equals on ChatDelivery objects checks whether the underlying message ID's are equal. Unfortunately it does this using getMessage().getId(). This causes the message to be loaded if what you currently have is just the ID number. Since all we want is the ID number in the first place, this is unnecessary. The problem is that this code is called from inside the event handling systems's event delivery code. That code is single threaded, and has to be fast. It shouldn't be doing DB queries, particularly via Hibernate.

The solution is obvious. Add a method getMessageId which returns the ID if we have it, and does getId() if what we have is the object. So no DB queries.
SakaiSAK-21377Feed causes NPE.NullPointerException is caused when the feed icon is clicked.
See attached NPE.PNG.

It is caused because the rome library was upgraded to 1.0 via SAK-20125.
rome-1.0.jar needs to be placed into the class-path (e.g., CATALINA_HOME/shared/lib) as reported to .
SakaiSAK-21421CLONE - Bug in JSF i18nThe options to select the amount of items shown always appear in English, all the tag releases I've tried have this bug. This happens because the page renderer file ("") calls a bundle file that does not exist ("org.sakaiproject.jsf.bundle.pager"). It exists in the trunk version though, but there are two groups of i18n files there. There are two options to solve the problem, to add the "bundle" folder to the tag versions or to modify the PageRenderer file and make it point to the other files ("org.sakaiproject.jsf.Configuration"). Either way, one of the bundles should be removed, for simplicity and correction's sake.

This affects some pages in Samigo, Assignments and some more tools probably.
--- CLONE is above ---

The paging widget in Section Info shows only English.
See attached SectionInfo.PNG.
It has occurred since r93466 via SAK-20294.
SakaiSAK-21507Accessibility: The three skip navigation links do not work in Safari or Chrome(1) In Safari and Chrome the focus will never stop on the skip navigation links.
(2) Even when the skip navigation links are activated using the access key assigned to them, the display scrolls to the link's target but the focus does not.

And yes, I configured Safari to "Press Tab to highlight each item on a webpage" to do my testing. In both Safari and Chrome, the other links (tools list, etc.) do get focus.
SakaiSAK-21502Accessibility: Skip Navigation links aren't visible to allow access to sighted keyboard only usersThe three skipNav links (Jump to content, Jump to tools list, and Jump to worksite list (located at the top of the portal body)) do not become visible when they receive keyboard focus.

The skipNav links work great for screen-reader users. However they aren't very usable to another important class of keyboard only users -- those who can see and don't use screen-readers. This means that they can't tell what the links are for and are left to wonder why tabbing into the window doesn't seem to do anything.

As a compromise between keeping the visual design free of the skip navigation links, and making them accessible to keyboard only users, CSS can be configured to hide the skip navigation links until they receive focus. An example of this technique can be found on the ATAC's Web site: (visit the page and then press the tab key until the "Skip Main Navigation" link text appears). Once a keyboard only user starts tabbing through the page, the skip navigation link will receive focus and CSS can make it become visible. An example of how to code CSS to do this in Sakai would be to replace the empty #skipNav rule in portal.css with:

#skipNav a.skip:focus, #skipNav a.skip:active {
width: auto;
outline: black dotted thin;
position: static !important;
margin-left: 10px;
font-size: 1.5em;
SakaiSAK-21553Unable to invite guest reviewer by email for matrix cellWhen trying to invite a guest reviewer by adding the user's email, I just receive an error message stating: 'The user was not found'

To reproduce:
As the coordinator, create a matrix allowing users to choose their own reviewers

As the participant, do some work in the matrix cell, adding a reflection, adding a file, etc
Click Request Feedback
On the Request Feedback page, enter the email address of someone not associated with the site or server under the 'Invite Reviewers by User ID or invite guests by Email Address' section
Click Add

Error message displays
SakaiSAK-21754disable presence in !error siteI recommend disabling presence in !error in both the default configuration and upgrade scripts.

insert into SAKAI_SITE_PROPERTY values ('!error', 'display-users-present', 'false');

It's not a good idea to show users the names of other users, except in their own site. While probably not technically a FERPA violation, because other users can't tell much about them, some universities allow students to hide themselves completely for cases like stalking. So it's really a bad idea to show the names of other users who are online.
SakaiSAK-21846Typo when copying a URL in ResourcesWhen selecting a URL for copying, the following alert is presented, complete with typo:

Remeber to click Ctrl+C. This link only selects the URL.
SakaiSAK-21857Gradebook Entity Provider missing from 2.8.xThe gradebook entity provider is not initializing on 2.8.x instances of Sakai. It is appearing properly in 2.8.1.

This is being caused by the bean definition for the entity provider being missing from gradebook/app/sakai-tool/src/webapp/WEB-INF/applicationContext.xml. This definition has been missing in all 2.8 versions, however it was working in the past because during build-time the applicationContext.xml at gradebook/app/ui/src/webapp/WEB-INF was actually being used instead. This can be confirmed by building a 2.8.1 and 2.8.x gradebook separately and then inspecting the applicationContext.xml files in the src/ and target/ locations for gradebook/app/sakai-tool and gradebook/app/ui.
SakaiSAK-22021Accessibility: The ARIA Landmarks presented by the Neoportal are not all uniqueThe ARIA landmarks as presented by the Neoportal are very useful. However, multiple "navigation" landmarks are present and are not distinguished. Landmarks should be meaningfully and uniquely labeled so the user can tell them apart and can tell which navigation landmark they want to move to. For example of what a screen-reader user will see currently, see the attached image unLabeledLandmarks.png.

The ARIA landmarks can be easily labelled by adding an aria-label attribute to each element that has the role="navigation" attribute.

For example:
<h1 class="skip" id="sitetabs" role="navigation" aria-label="Worksites begin here">Worksites begin here</h1>
SakaiSAK-22118Add method to get assignment list from CategoryDefinitionThe gradebookservice provies two methods for getting the categories,

List<Category> gradebookService.getCategories


List<CategoryDefinition> gradebookService.getCategoryDefinitions

However the Javadocs for the getCategories method says:
This method cannot be used outside of the gradebook because it returns the org.sakaiproject.tool.gradebook.Category object. If you require info on the categories from a consumer outside the gradebook, use getCategoryDefinitions(String)

The issue here is that using getCategoryDefinitions does not provide a corresponding getAssignmentList method like the Category does. And you can't use the Category method outside of the gradebook since it isn't shared.
SakaiSAK-22111Move all of the 'custom' plugins for CKEditor to an external plugins directoryIt looks like we can create an external plugins directory according to this guide:

And then do something to add all of these external directories like it describes. This would make it so it's still easy to upgrade CKEditor and that the plugins are separate.

// get path of directory ckeditor
var basePath = CKEDITOR.basePath;
basePath = basePath.substr(0, basePath.indexOf("ckeditor/"));
(function() {
CKEDITOR.plugins.addExternal('helloworld',basePath+'myplugins/helloworld/', 'plugin.js');
SakaiSAK-22138Assignments - URL Submission AttachmentsAssignments - URL Submission Attachments
When a student attaches a URL for an assignment submission, the attached URL works in Sakai's interface.
However, the confirmation email notification sent to the student for the submission breaks the URL's link by hyperlinking two more characters: "(1" is appended to the URL which breaks the link.
See screen captures (assignment_submission_url.jpg & assignment_confirmation_url_email.jpg).
SakaiSAK-22168Clean up Web ServicesThis will hold a few changes to web services in the name of cleanup.
SakaiSAK-22199Improve the PDA Portal in its detection of Situations to *not* inline the tool contentCurrently, the PDA portal loks at the request URI and applies a regular expression to the URL and if the Regex matches - do not do inlining. There is a property that allows sites to adjust the regex without patching or recompiling:


You can also do a tool-by tool bypass


This turns out not to be sufficient. We also need a regex that will allow inline-bypass based on the existance of something in the query string, or even the requested or returned content type. SO this JIRA adds two new properties with suitable defaults:


Both of these can be scoped down to a tool by adding a Sakai tool id to the property name.

You will know that these need adjustment when you are testing a tool in the PDA portal and start to see broken images, missing CSS, missing Javascript, or failing AJAX requests that are using local URLs that get turned into


I will check this code in and leave the JIRA open so folks can do a bit of testing.
SakaiSAK-20428Options form of incorrect type can be saved on a presentation, which cannot be corrected by userWhen a user uses multiple tabs or windows within the same session, it is possible to save the wrong type of form as the options form for a presentation. This will typically make the portfolio non-functional due to violating an expectation of the template that the form will be of a given schema. This also cannot be corrected by the user, since there is an implicit options form per presentation, and it cannot be detached.

Steps to reproduce are:

1. Create a portfolio against a template with an options form type selected.
2. Complete the options (Required Settings).
3. Complete a content form in the portfolio.
4. Return to the Summary page (TAB 1).
5. In another window or tab (same browser/session), navigate to the Add/Edit Content page for that portfolio (TAB 2).
6. Begin editing the options form (TAB 1).
7. Begin editing the content form (TAB 2).
8. Click Save on the options form (TAB 1).


The form that should belong to the presentation is saved and attached as the options form. If the form for the item is of a different type than the options form, the portfolio will be unrecoverable. Each time the user attempts to edit the options form, the other form will be edited, and cannot be detached. The user then has to create a new portfolio and reselect all artifacts.


Check the type of the form attempting to be saved as the options form for a presentation.

Expected Result after fix:

An error report should occur and the portfolio should remain functional. If the stack trace is visible, there will be a message about simultaneous editing.


This isn't a perfect solution in that it doesn't resolve all of the errors that can arise from editing forms in multiple tabs. However, it does avoid the situation where the user cannot continue to work on a given portfolio.
SakaiSAK-20521Upgrade to Quartz 1.6.6; leverage quartz in <dependencyManagement> in master pom; remove <version> declarations in tools to avoid version driftThere are a few projects (osp, syllabus, warehouse, samigo) that declare a dependency on Quartz 1.5.2 while all other projects have updated to Quartz 1.6.6. Update these dependencies (including <groupId> to org.opensymphony.quartz) and leverage quartz's inclusion in the master pom's <dependencyManagement> removing the version in relevant projects to avoid version drift.
SakaiSAK-20565Portal now has a dependency on Profile 2 & Presence serviceThe PCServiceEntityProvider in the new portal has a runtime dependency on profile2 - this is a specific tool implementation and schools should be able to run Sakai without Profie2 in their build. It also breaks the Cafe build

The presence one is more ambiguace - I would think we may want to premote the service to kernel for 2.0
SakaiSAK-20598Adjust SAKAI_PERSON_T hibernate mapping for type="text" and larger sizeFrom recent discussions, the SAKAI_PERSON_T table is not created on MySQL5InnoDBDialect.
Hibernate is not setting the column types as text, even though:
<property name="notes" column="NOTES" type="string" length="4000" />

It was proposed that the type be changed to text and length increased to 75000. This will force a mediumtext on MySQL and clob on Oracle. From the list:

On 19/05/2011, at 12:11 PM, John Bush wrote:
increasing the length while using type of string breaks oracle, increasing length while using type of text works universally. current settings break mysql when using the innodb5 dialect. im suggesting type=text length=75000 or more, which requires oracle start using clobs but works for mysql all dialects, db2 , and oracle

Need some investigation into the feasibility of using clobs directly. And also a conversion for both MySQL and Oracle.
SakaiSAK-20715Slowness/performance issues in Matrices toolWe are experiencing severe performance issues using the Matrices tool, primarily when clicking on Edit properties, but also when a user just tries to click on the matrix link to open it. Data has been collected from 3 different computers, using 2 different matrices from 2 different sites. I am attaching images of the two matrices, an exported zip file from the matrix causing us the most significant problems and a spreadsheet outlining the tests and times it took for certain matrix functionality.
The design of the matrix including the number of rows and columns, number of users, and forms is also provided.
SakaiSAK-22376From value checked for null but not empytThe check on the template from value checks for null values but not empty ones.
SakaiSAK-22484Sakai 2.9.x randomly sends users to Mobile ViewHi,

just a few minutes ago we observed this bug.

In the log just

2012-08-14 13:26:30,743 WARN ajp-bio-8019-exec-14 org.sakaiproject.util.ResourceLoader - bundle 'sitenav' missing key: 'sit_toggle_nav_exp' from: org.sakaiproject.util.ResourceLoader.get(

appears and I don't believe that the missing key message is related to this bug.

What I did was to be inactive in Sakai for about 55 minutes. I dismissed the logout warning and the next clicks on any link within Sakai caused the mobile view to be displayed (even the "Options" buttons within tools).



-----Ursprüngliche Nachricht-----
Von: [] Im Auftrag von Omer A Piperdi
Gesendet: Montag, 13. August 2012 23:37
Betreff: [Building Sakai] Sakai 2.9.x randomly sends users to Mobile View

We upgraded our Sakai to 2.9.x last week.. Things seem normal.. We are seeing odd behavior, when I user in inactive for a while and click any link, it switched to 'Mobile View' in the user browser..

Have anyone seen this before?

SakaiSAK-22567Accessibility: There are multiple accessibility issues with required fields on the new user page of the Users ToolIssue 1:

the meaning of the asterisk / required field indicator is not explained before the form that uses it.


Include text before the form explaining the the required field indicator. (e.g., All required fields are marked with an asterisk (*) )

Issue 2:

The required form field indicator is not part of the form control's label.


Move the asterisk inside the label.

Change this:
<label for="eid">User Id</label>
<input type="text" id="eid" name="eid">

<label for="eid"><span>*</span> User Id</label>
<input type="text" id="eid" name="eid">
SakaiSAK-19001Remove Mercury Portal from Sakai 2.8Remove the mercury portal from the build for 2.8.
SakaiSAK-19149The long description is listed as required but is not when editing.In the Glossary tool, to An asterisk indicates the long description field that is required but no check is made on that field.

The problem exists only when editing but works correctly when creating.

This problem exists because the FCKEditor code in place a <br />.
Even if the long description field is blank, verification based on the length of character finds a few and ignore the white. Here as an attachment a patch that solves this problem.
SakaiSAK-19162Visual indicator on tool icon when site is minimized needs to be stronger.When in minimized mode for a site and moving between tools. The tool icon on the left hand side is not strongly highlighted. Perhaps a small border will help with navigation. This is a nice to have/must have, as it helps peoples internal model of where they are in the application.
SakaiSAK-19267Rename properties in SAK-12489 (Captcha for new user accounts)Because eventually we might want to add captcha support to other tools, the property names in this SAK should be prefixed with "user.". Then they can be toggled independently of other captcha's

Change to:

user. recaptcha.enabled=false
SakaiSAK-19301Show Last updated timestamp in Site InfoThe University of Virginia adds the "Last Updated" timestamp to the bottom of the participant list in Site Info (just under the "Update Participants" button).

This patch is contributed for consideration.
SakaiSAK-19354Long title for a presentation throws errors including JDBC ExceptionsClick here for more information.
SakaiSAK-19476Update Webdav instructions for 2.8The Aula virtual environment is used by 9000 spanish students. The dev team spent a considerable time updating instructions in Spanish to be totally reliable for their population which includes Linux and other environments. I will ask for their webDav instructions to be placed here and then perhaps Rutgers can review and upate for 2.8.
SakaiSAK-19518Hierarchical wizard: Problem adding multiple categories, subcategoriesUnable to add another top-level category in hierarchical wizard

Clicked Wizards -> Add -> Hierarchical Wizard
Completed first two steps
Step 3 of 3: Click 'Add Category', fill out title and click Save
Add a page or two under category 1

Beside Wizard name, click on 'Add Category' link again, fill out title and click Save
Step 3 of 3 page loads again and category 2 does not display

One subcategory can be added to a category, but trying to add more than one does not work
SakaiSAK-19559Accessibility: "Jump to Worksite List" Skip Navigation Link Present on Login PageThe portal includes three "Skip Navigation" links (Jump to Content, Jump to Tools List, and Jump to Worksite list). These links are very useful and should be maintained. However, no worksite list is present until a user has logged in. The "Jump to Worksite list" skip navigation link should be suppressed until a user has logged in.
SakaiSAK-18011Page title does not support special charactersWhen creating a page with title léon, the title is converted to l&eacute;on where as the description, keywords etc are not.
SakaiSAK-19831Text input for alias e-mail address in mail archive allows text greater than 99 characters.The text input for the e-mail address is allowed to be greater than the checked for limit of 99 characters. Please limit this via the GUI as well.
SakaiSAK-19866Auto-groups - ability to assign users randomlyAbility to randomly assign students in a site to a group automatically
based on either specified number of groups per site, or specified number
of students per group. This would greatly facilitate creating small
groups (i.e. peer review or collaborative student groups) in large
SakaiSAK-20236Can trigger java.lang.StackOverflowError via crafted e-mail address inputClick here for more information.
SakaiSAK-18838Conditional Release doesn't appear to be working for any conditions that are based on Gradebook settingsAfter putting in Chuck's patch for CR-4 I was able to test the specific conditions.

The only ones that work are grade is greater than, grade is less than, grade is blank, and grade is non-blank.

The others do not work.

Items with the following conditions always seem to be displayed to students:
due date has not passed
is not included in the course grade
is not released to students

Items with the following conditions never seem to be displayed to students:
due date has passed
is included in the course grade
is released to students

(I thought it odd that all three of the 'nots' always show ...)
SakaiSAK-17572Add basicLTI propert settings to *.sakai.propertiesAdd the following default properties. Do not define a secret.

# Enable the Producer
# Default=false

# BasicLTI Producer-enabled tools

# BasicLTI Producer secret

# Indicates whether or not we allow web-service logins.
# Default=false so folks are forced to add this in their local properties file.

# BasicLTI Producer setting
SakaiSAK-18655mvn -Ppack-demo install fails for Windows Vista on the 2.7.0 source codeRunning mvn -Ppack-demo install fails with the error
Could this be todo with the path transversal / and \

for C:\Users\Alan\Desktop\sakai-2.7.0\pack-demo/target/pack-demo

INFO] Building Sakai Pack Demo
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing C:\Users\Alan\Desktop\sakai-2.7.0\pack-demo\pom.xml to C:\Users\Alan\.m2\repository\org\sakaiproject\pack-demo\2.7.0\pack-demo-2.7.0.pom
[INFO] [antrun:run {execution: pack-demo-clean}]
[INFO] Executing tasks
[delete] Deleting directory C:\Users\Alan\Desktop\sakai-2.7.0\pack-demo\target\unpack
[unzip] Expanding: C:\Users\Alan\.m2\repository\tomcat\tomcat\tomcat\5.5.28\ into C:\Users\Alan\Desktop\sakai-2.7.0\pack-demo\target\unpack
[delete] Deleting directory C:\Users\Alan\Desktop\sakai-2.7.0\pack-demo\target\unpack\apache-tomcat-5.5.28\webapps
[mkdir] Created dir: C:\Users\Alan\Desktop\sakai-2.7.0\pack-demo\target\unpack\apache-tomcat-5.5.28\webapps\ROOT
[echo] Executing cd ../;mvn clean
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: Execute failed: CreateProcess: mvn -Dmaven.tomcat.home=C:\Users\Alan\Desktop\sakai-2.7.0\pack-demo/target/pack clean error=2
SakaiSAK-18742Selecting two column layout for a page throws an Exception with a bug report for the end user - 2.6.x DEMOClick here for more information.
SakaiSAK-18870Add method to AnnouncementService API to get merged announcementsWith the current AnnouncementService API you can get the messages for a given channel. However, this does not include any merged announcements, ie from other sites. In addition, getting the announcements for a user's channel returns nothing.

The logic to merge the lists is inside AnnouncementAction.getMessages. This should be split out into an API method.
SakaiSAK-18910Matrices / rendering bugThe problem is that simple and nested lists (both unordered and ordered) in the cell guidance fields are not being indented at all, even when a list is nested within a list. The lists display properly in the FCK editor and in the Edit Cell view but not when the cell is rendered to the end user. I have attached a document with screen shots and some sample FCK source to reproduce the problem.
SakaiSAK-18924invited reviewers who are not a member of the site cannot see or open the attachment.If a participant adds a form to a matrix cell and the form contains an attachment, invited reviewers who are not a member of the site cannot see or open the attachment. Reviewers should be able to see everything a participant adds to a cell.

To reproduce:

1. Create a new matrix.
2. In Matrix properties, set the default reflection form to "Reflection - Standard". Then set the default feedback form to "Feedback - Standard" and enable the setting: "Allow participant to send feedback invitations to additional reviewers"
3. Publish the matrix.
4. Log in as a participant.
5. Open a cell and add a reflection form. Type some text in the FCK editor and add an attachment to the form.
6. Save the reflection.
7. Click Request Feedback and request feedback an oncourse user that is not in the site.
8. Log out
9. Log into the email of the the invited Reviewer.
10. Locate the feedback invitation and click the link. You should be prompted to log in. Be sure to use the login and password for the invited reviewer.
11. You should be taken directly to the cell with the reflection form. Open the form. The attachment link is not visible.
SakaiSAK-16568Copied content links point to original site when 'Import from Site' option is usedThe new option in the Rich Text Editor, Sakai Entity Link, is not working properly when imported through sites. It points to the original site and any students that do not have permission to that site will be given an error. The links always refer back to the originating site.
SakaiSAK-21059Upgrade Assignment 1 Integration with TurnItIn 2.9.2Add the new options from TII 2.9.2 in the Assignment 1 UI. Also, make it so an institution can choose which settings are available via
SakaiSAK-21675Help tool contents (html) should be overridden easierThe help tool contents (help documents) are stored in jar files in shared/lib. If someone wants to modify the contents of these they have to either repackage the jars or rebuild the tools help files. It would be nice if the help tool would check for modifications to individual files from a local path something like:

ServerConfigurationService.getSakaiHomePath() + "/help/"+help.location

Ideally a new registration could also be provided here would could override all of it, but this would satisfy a lot of customization that we have that are just minor text changes without actually adding/removing help documents.
SakaiSAK-21922SAK-21908 In wiki tool, non-latin (Japanese/Chinese) characters are not supported while export site members in PDF file.To show the bug:
1. Create a Wiki page contains non-latin(Chinese, in my case) content. You can just copy some Chinese characters from
2. Enter "info" page of the Wiki page. In "Views and Feeds", click "PDF". The exported PDF file render Chinese characters incorrectly.
Screen shots can be found in attachment.

In folder rwiki/rwiki-impl/impl
1. Modify
Add an entry: fop.pdf.default.font=AR PL UMing CN
"AR PL UMing CN" is a Chinese font. In Linux, it can be installed via "ttf-arphic-uming'
Admin can set this to any font he/she like, only if the font is installed in the OS.

2. Modify pom.xml
Update Apache FOP version from 0.9.3 to 1.0

3. Modify src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/fop.cfg.xml
Add some code to let FOP auto detect System fonts.

4. Modify src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/xhtml2fo.xslt
Set fo:root font to DEFAULT_FONT

5. Modify src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/
Update the FOP related code to couple with FOP 1.0.

6. Modify src/test/uk/ac/cam/caret/sakai/rwiki/component/service/impl/test/
Remove a test case which would not pass compile check due to changes of FOP API

I modify the code based on Sakai 2.8.1. The source and "diff" are in the attachment(without
Also, you can see the effect after fix the bug as attachment
SakaiSAK-22379wrong email sender/receiver for the official site creation notification emailBefore SAK-20801, when the official instructor of a course creates a course, an email is sent from the instructor to the system support account.

However, now the same email is sent from the support account to the instructor instead, which result the loss of bookkeep emails in the system support queue.
SakaiSAK-21739Enforce uniqueness on template key + localeUniqueness is not being enforced on template key + locale. If only one of each template should be present in the db, we should enforce uniqueness in the db.
SakaiSAK-21389Calendar & Assignment have circular dependenciesThe CalendarAction and AssignmentAction classes have circular API dependencies, which prevents an automated, indie build process. The CalendarAction class needs the assignments to grab assignment attachments. Could the Calendar have the Assignment attachment reference at the time the Calendar entry is created? Or maybe there's a different approach that would separate these two.
SakaiSAK-21683Remove duplicate descending indexes for mysqlEmail Archive and Announcement contain ascending and descending versions of the same index. However, according to mysql

An index_col_name specification can end with ASC or DESC. These keywords are permitted for future extensions for specifying ascending or descending index value storage. Currently, they are parsed but ignored; index values are always stored in ascending order.

The DESC indexes are therefore duplicates that serve no purpose in mysql and should be removed.







SakaiSAK-15832site unavailable message should mention how to join a site (if the site is itself joinable)if a non site participant goes to a joinable site before joining, there should be instructions on what to do.
SakaiSAK-10393Worksites need to support locale preferencesWorksites (especially course-sites) need to support a language/locale preference that trumps the language/locale of the user and of the system. Specific application for this include language-based courses.

Suggested implementation:
Set new SAKAI_SITE_PROPERTY flag: = [locale-identifier]

The LOCK_LOCALE property could be set in the Worksite Setup tool using a checkbox. If set, the locked locale would be equal to the user's current language/locale preference.
SakaiSAK-22592Accessibility: Page Reorder Tool in Customize Tabs Has Visual Indication of Keyboard focus IssueOnce a site has been moved from the "Favorite Sites" column to the "Active Sites" column, it can't be moved back to the "Favorite Sites" column using only the keyboard when it is in the top position of the "Active Sites" column. The keyboard interaction bugs effectively make it unusable for keyboard only users on the "Customize Tabs" page of the "My Workspace: Preferences" tool.

Here is a brief (1 minute) video of the issue:

I'm guessing the problem is because of the locked "My Workspace" entry in the "Favorite Sites" column is locked into position preventing the normal insertion of a site in first position of the "Active Sites" column's attempt to move into the "Favorite Sites" column.


The issue is 99% solved. However, there is no visual indication of focus when using the keyboard to navigate between sites in IE 9. In Firefox a dark black outline signifies the active site.

Recommended remediation:

provide visual indication of focus for active site in IE, similar to Firefox.
SakaiSAK-22748SAK-22747 Accessibility: Tabbing of of the "X" close icon in the more sites drawer closes the drawerThe more sites drawer in the neoPortal worksites menu closes when a user attempts to use a keyboard to move focus off of the "X" close drawer icon.

Why it's an issue:
The keyboard only user and screen-reader user should be able to navigate to and explore all of the controls in the more sites drawer. One common technique used by screen-reader users to learn about the available controls is by tabbing through them. The screen-reader user needs to be able to cycle through all of the options in a modal dialog simply by tabbing through them. Controls should never be activated simply by tabbing onto the control or by tabbing off of the control.

The only keyboard interaction that should activate the close icon to close the drawer is when the enter key is pressed while the close icon has focused. This will happen by default, as it is the default browser operation to activate the onclick handler on links and buttons when the enter key is pressed on them.

The following piece of code should be removed:

jQuery('#otherSitesMenu a').last().keydown(function (e) {
if(e.keyCode == 9 && !e.shiftKey) {
SakaiSAK-17891Upgrade to Tomcat 6We should spend some time investigating the deployment of Sakai on Tomcat 6, possibly for 2.8 or 2.9.



Stuck threads use excessive CPUClick here for more information.
SakaiSAK-18760Upgrade to Tomcat 7Since release of JPA2 and Servlets 3.0. More so because of Servlet 3.0 there are major changes anticipated in existing web frameworks as perhaps new frameworks are on the way. The most compelling feature seems to beAsynchronous processing support in Servlet 3.0. Since as of now there is no success of moving to tomcat 6 at least it is pre QA.
Sakai team could perhaps move to Tomcat 7 directly . It may take a short while for many web frameworks to catch up to tomcat 7 and there may be more child Jiras associated with this update/feature but it will significantly reduces technical debt of sakai.
SakaiSAK-18337container login with two buttons only works for the main portal pageWe're looking at support for CAS. But we have some users who aren't in CAS. I turned it on with two login buttons. It works OK for the main portal page. But if you go directly to a URL, you are sent to CAS. That won't work for people with local accounts.

The attached file has a prototype patch. I doubt you want to use it as is, but it will give you an idea of what needs to be done:

1) Login should go directly to CAS for the main portal, otherwise to xlogin.

2) Xlogin needs the two buttons, unless it's called from the main portal.

I do the two buttons as links. xlogin still has the local login form, but it starts out hidden. The local login button unhides the form using Javascript.This is almost certainly not the way you want to do it for real.

Of course this means that you don't get transparent SSO into URLs, which may defeat some of the reason to use CAS. My sense is that CAS may need a way to put an extra button on it that calls back to the application. Or possibly login should check for the cookie indicating a CAS ticket, and go directly to CAS if it finds one. (Of course that could cause problems for our privileged users. They may have a CAS ticket from another application, but want to login to Sakai as an admin.)

It seems to me that if we're serious about CAS it needs more thought.
SakaiSAK-21204My Workspace -> Preferences -> Notifications have missing keysOn the Notifications page, (My Workspace -> Preferences -> Notifications), Announcements and the Email Archive both have a "missing key"

Announcements: [missing key (mre): annc-noti-prefs prefs_description]
Email Archive: [missing key (mre): mailarchive-noti-prefs prefs_description]
SakaiSAK-22551need a way to bypass PDA hacking for RSF applicationwith Lessons 1.4 trunk, set agent string to IOS. Add comments to a site. Comments won't display.

We need to do an ajax call to Comments.html. It used to do /sakai/sakai-lessonbuildertool-tool/faces/Comments with an argument to tell my producer what site it is in. However with the newest RSF, RSF itself needs to know the site. The only way I've been able to do that is to use /portal/tool/NNNN/Comments. That works OK except that if the browser is IOS, the portal mangles the result. I tried using faces/Comments with various extra parameters to specify the tool ID, but couldn't find anything that works.

the situation is complicated because I'd like this to work with 2.8 without requiring sites to patch the core code.
SakaiSAK-22739Email template insert violate unique key and hence stops tomcat restartClick here for more information.


University of MichiganUMICH-614update MyCourses trunk pom files for latest Sakai artifact versionsMyCourses trunk cannot build with Sakai 2.9(.x). Several dependencies inside the pom.xml need update. coursemanagement-api is one example.
University of MichiganUMICH-590Site Types for creating new sites should not include Portfolios and should include GradToolsStudent sitesThe site-manage/site-manage-tool/tool/src/webapp/tools/sakai.siteinfo.xml should be modified to customize the default UM site types as follows:

<configuration name="siteTypes" value="course,project,GradToolsStudent" />
<configuration name="privateSiteTypes" value="GradToolsStudent" />

This UM custom changed was missed in the 2.7.2A upgrade and needs to be re-instated.

Until this regression is fixed, users are incorrectly given the option to create portfolio sites and are not given the option to create GradTools sites.

Note that for the 2.9 release, we can put modified tool registrations in ${sakai.home}/tools - thanks to KNL-342
  • No labels