Archive

Archive for March, 2011

Relaxation of SCORM Criteria in SharePoint Learning Kit 1.6

March 23rd, 2011 Richard 2 comments

I’ve just completed a couple of changes to SLK which although reported as bugs, were actually just rigidly enforcing the SCORM standard.

The first one was that you couldn’t have a question where the question text is greater than 250 characters long. The question text gets stored in cmi.interactions.n.description so that when reviewing the results the context of the answer can be seen. However in the SCORM standard this value is limited to 250 characters. I must admit that the error message, while quite descriptive if you know the SCORM standard, wasn’t very user friendly.

The second one was that you couldn’t submit quizzes with a large number of questions. The reason here is that the questions and answers get stored in the cmi.suspend_data which in SCORM 2004 2nd Edition is limited to 4000 characters. This was actually masked by a bug where if the length of the data was greater than this, the error was ignored and the same page just displayed again.

Strictly speaking both of these problems are actually errors in the SCORM packages themselves as they are passing values which do not conform to the standards. There’s even threads in the Articulate forums about it.

Normally, I’d be dead set against violating standards, however in these particular cases they are getting in the way of usability. So in these 2 specific cases I decided to relax the requirements and allow more data to be stored. Later versions of the SCORM standard do this for suspend_data anyway.

So in SLK 1.6, these restrictions have been relaxed.

Categories: SLK Tags: , ,

Course Manager for SharePoint Learning Kit is now Deprecated

March 22nd, 2011 Richard No comments

The Course Manager for SharePoint has always been a complete mess. It was produced before I was project coordinator and was funded by Microsoft and produced by a third party software house to add course functionality to the SharePoint Learning Kit. Unfortunately it never reached production quality, in fact it was a long way off.

To make it production quality would probably involve rewriting almost all the code and it’s likely it would be quicker to start from scratch. Of course if the UI and functionality were any good, then it would be worthwhile sorting the back end out. Unfortunately it’s one of the most unintuitive UIs that I have come across and the functionality is sorely lacking. Andrew Woodward did a good review of it when it came out on his blog. Even Microsoft was disappointed with the result. And if you read that previous link none of those changes or documentation appeared.

There’s also no commonality between the Course Manager code and the core SLK code. The developers have used their own framework which is completely different so no knowledge of SLK helps with maintaining the Course Manager code. Hence it would take a significant investment of time to get to grips with the code, let alone fix the myriad of bugs. I feel that it is in the best interest of the project to dedicate time to enhancing the core SharePoint Learning Kit rather than this add-on. I believe that while it remains within the project it is a hindrance as it clutters up the source tree and wastes people’s time trying to get it working.

To this end I have now deprecated Course Manager. The source code has been removed from the source control tree, but is still available from http://slk.codeplex.com/releases/view/62991. I’m more than happy if someone want to take it and run with it and produce a good product. It would probably be better off as another project in CodePlex in that case, until it’s of good enough quality to merge into SLK rather than being an add-on.

Categories: SLK Tags: ,

Error "Admin SVC must be running in order to create deployment timer job"

March 11th, 2011 Richard 1 comment

When running Update-SPSolution you can sometimes get the error:

Admin SVC must be running in order to create deployment timer job

upgradeError

There’s a very simple solution to this. Ensure that the SharePoint 2010 Administration service is started.

adminService

Once you have started that the command will run correctly.

Categories: SharePoint Tags: ,

Removing the "Use a Meeting Workspace" Option from All Existing and New SharePoint Calendars in a Site Collection

March 4th, 2011 Richard 5 comments

Having removed the "Use a Meeting Workspace" option from individual calendars in my previous post, I wondered if there was a way to remove them from all existing and new calendars within a site collection.

I found a way to do it by modifying the calendar schema in the hive folder. However, although this works, it technically leaves SharePoint in an unsupported state, so I didn’t want to go down that route.

Then I had a thought that all the items in a calendar list are of the Event content type, so if you can modify that, to make the Workspace option hidden, then it would be removed from all calendars.

Unfortunately when you look at the Event Content Type in the Site Content Types gallery, the Workspace column is greyed out so you can’t edit it.

eventContentType

However, it proved to be remarkably easy to script using PowerShell:

# Script to remove Use a Meeting Workspace from all calendars
$siteUrl = "http://myserver/sites/mysite"
[system.reflection.assembly]::LoadWithPartialName("Microsoft.Sharepoint") > $null
$site = New-Object Microsoft.SharePoint.SPSite($siteUrl)

$contentTypeId = [Microsoft.SharePoint.SPBuiltInContentTypeId]::Event
$eventContentType = $site.RootWeb.ContentTypes[$contentTypeId]

$fieldId = [Microsoft.SharePoint.SPBuiltInFieldId]::WorkspaceLink
$field = $eventContentType.FieldLinks[$fieldId]

$field.Hidden = $true
$eventContentType.Update($true);

# Dispose the site object
if ($site) {$site.Dispose()}

The only slightly tricky bit was needing to use the FieldLinks property instead of Fields.

The $eventContentType.Update($true); line ensures that it updates all existing calendars in the site collection, otherwise it will just be for new ones.

I’ve actually increased the script by 2 lines to fit it in my blog by adding in the $fieldId and $contentTypeId. Originally it was even more compact.

Again, this takes effect immediately throughout the entire site collection with no need for an iisreset or an application pool recycle.

Using PowerShell to Remove the "Use a Meeting Workspace" Option from SharePoint Calendars

March 4th, 2011 Richard 7 comments

I’ve just deployed a custom meeting site to a customer to handle multiple meetings within one site. Hence the option to “Use a Meeting Workspace” when creating a new or updating a calendar item is unnecessary, so they asked me to remove it to prevent anyone using it by mistake.

When creating a calendar item (or updating) this is the dialog you get, with the Use a Meeting Workspace highlighted.

meetingWorkspace

From SharePoint Blues I discovered that if you set the calendar list field to hidden then this option would no longer display. Taking this concept, I created a PowerShell script to set this to hidden on a one off basis.

The script is:

# Script to remove Use a Meeting Workspace from a specific calendar

function RemoveWorkspaceLink ([String]$siteUrl, [String]$calendarName)
{
[system.reflection.assembly]::LoadWithPartialName(“Microsoft.Sharepoint”) > $null
$site = New-Object Microsoft.SharePoint.SPSite($siteUrl)
if ($site -eq $null)
{
return
}

$web = $site.OpenWeb()
$list = $web.Lists[$calendarName]
if ($list -eq $null)
{
“Invalid list name ” + $calendarName
}
else
{
$field = $list.Fields[[Microsoft.SharePoint.SPBuiltInFieldId]::WorkspaceLink]
$field.Hidden = $true
$field.Update()
“Updated ” + $calendarName + ” on ” + $siteUrl
}

# Dispose of the SharePoint objects
if ($web) {$web.Dispose()}
if ($site) {$site.Dispose()}
}

RemoveWorkspaceLink “http://myserver/sites/site1″ “Calendar1″
RemoveWorkspaceLink “http://myserver/sites/site2″ “Calendar2″

I’ve written this as a function so that you can update multiple calendars at the time. If you saved this as a .ps1 file and then run it, the 2 calendars referenced at the bottom would be updated. Alternatively you could . source the file and use the function interactively, or just hard code the $siteUrl and $calendarName variables each time you run it.

The option is removed immediately you have run the script with no iisreset or application pool recycle required.

So with the script is run this is what you see with the Meeting Workspace option removed:

meetingWorkspaceAfter

This works well for hiding it on individual calendar lists, but doesn’t affect any other existing calendars or ones created afterwards.

I’ve since found a way to update all calendars in a site collection.

Mathematics Managed Metadata for SharePoint 2010

March 1st, 2011 Richard No comments

I was recently creating some departmental sites for a school in SharePoint 2010 and wanted some metadata to attach to documents. I couldn’t find any ready made ones, so had to create my own.

I found a Mathematics taxonomy in the Journal of Online Mathematics and its Applications which is based on the Math NSDL Taxonomy Committee Report, April 2, 2002, with draft changes proposed for Section 9 by CAUSE, May 16, 2004. Further changes to Section 9 were approved by the Math Gateway Partners Group, April 29, 2005.

mathsTaxonomy

It looks fairly comprehensive to me, but obviously wasn’t in a suitable format for importing into SharePoint 2010, and was certainly too large to type in. So using vim and some macros I fairly quickly converted it into the correct csv input format for SharePoint 2010. It’s quite a detailed taxonomy and at a school level you will probably want to delete some of the terms, but it’s a good start.

Then I added a Managed Metadata column to the document libraries for the department, linked to the Mathematics term set. I made this required and allowing multiple selections, but defaulted it to the top level. This means that they can add more explicit tagging to help with searching and findability, but it doesn’t prevent the users adding documents if they don’t have the skills or inclination to tag properly.

You can download my finished csv file from here. I also created one for the level of content, covering Key Stages, years and qualifications and added another optional column for this. Finally I created another one for ICT, but this one is really basic as I couldn’t find a decent taxonomy for it and wasn’t really sure what’s covered at a school level.

Update: With thank to @stevegillott I now have a vastly better ICT set of metadata which I’ve updated here as well. It’s based on the UK National Curriculum.

Categories: SharePoint Tags: