Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Introduction

From the README:

The Rutgers WebCT converter moves WebCT courses into Sakai. It tries to automate the process as much as possible. It makes a number of assumptions about the WebCT and Sakai environments. I'm afraid that it may not be very easy to use at other institutions. However the Samigo and Melete converters can be used on their own, and should work anywhere, with just changes to configuration information.

They are in subdirectories webct2samigo and webct2melete. There are README files in the subdirectories explaining how to use the programs.

This JSP does three things:

  • moves a complete copy of the WebCT files (My-Files) into resources, with the same folder structure. HTML files are checked and URLs adjusted where needed
  • moves the question bank for tests and quizzes into Samigo as a pool and a demo test that uses all the questions. (If there are more than 100 questions, it generates multiple demo tests. We've had problems displaying tests with 1000 questions in them.) I do not move individual tests, just the whole bank. I look carefully to see if the tests refer to images or other resources, and move them into Sakai's Resources, into a special folder named "protected". At Rutgers, students can retrieve items from there, but can't get a listing of it. The Sakai development team has chosen not to accept that patch. It's pretty much essential, since otherwise students will be able to browse the images before taking the test.

Note that in general images used in tests will appear in two places: in protected, from the Samigo import code, and in their normal location in Resources, because we move all files. If they aren't used anywhere else, you'll probably want to remove the copy outside of protected.

  • converts content into a form that can be used by Melete. I haven't managed to get Melete to load this from the JSP. So you'll have to download a ZIP file and then import it into Melete. This code depends upon a modification to Melete to put certain types of resources. This should be in the next release of Melete.

Contacts

  • Charles Hedrick (hedrick at rutgers.edu)

Current State and Status

Documentation and Source Code

Code

svn export https://source.sakaiproject.org/contrib/rutgers/webctconversion

Input

Output

Dependencies

WebCT:

  •  

Sakai:

  • Modules (aka Melete)

Installation Instructions

From the README:

The Rutgers WebCT converter goes into webapps/ROOT. I'm giving you all the files. They can just be put in the same locations.

The driver program is webct.jsp, which (obviously) is a JSP. In order for JSPs to work as part of Sakai, you must replace the filter and filter mapping in ROOT/WEB-INF/web.xml with

<filter>
        <filter-name>sakai.request</filter-name>
        <filter-class>org.sakaiproject.util.RequestFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>sakai.request</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

That causes all access to go through Sakai's request filter, which establishes a Sakai session.

webct.jsp runs two separate converter programs, in the subdirectories webct2samigo and webct2melete. These process output for Samigo and Melete, respectively. It was easier to debug with these as separate processes. Also, it's not clear how many institutions can use webct.jsp. But I think many will be able to use webct2samigo and webct2melete, either separately by hand, or creating their own scripts.

Note that webct2melete depends upon some fixes to Melete. They haven't been released yet, but should be part of Melete 2.3m2 It may work without them, but certain types of data won't load properly.

This code assumes that you have mounted your WebCT server via NFS. That avoids the need to retrieve the exported files. I can just leave them in a directory on the WebCT server. Also, the programs sometimes need to access files on WebCT that are not included in the export archive.

If you can't mount your WebCT system, you could make a copy of .../webct/users and .../webct/webct/courses and put the copies on the sakai system where you are running the converter. However you'll also have to arrange to get the results of the Webct converter over to your sakai system. webct.jsp ssh's the command to webct, but assumes it can access the results over NFS. There are notes at the beginning of webct.jsp that describe what you'd do if you can't mount the server. You'd have to follow the ssh command by an scp command to retrive the results. Either do scp -r to bring the whole directory, or produce a ZIP file, bring it over and unpack it.

Note that the jsp and the two Java files have parameters at the beginning that you will have to adjust. Things like the hostname of the webct server, and specific locations of things. They are carefully commented.

Unfortunately the jsp has one big feature that probably isn't portable. It needs to find a list of all WebCT courses for a given user. I'm sure there's a way to get it from WebCT, but I can't find it. So I use what I know about the way Rutgers names WebCT courses. We name them ending in _NETID. I've added // RUTGERS at all places in the code that depend upon this. If you don't have a
similar convention, I'm not sure what to say.

Both of the Java programs look at the current directory to figure out the name of WebCT course. This is almost certainly a bad idea. I should pass that as an argument. At any rate, we assume the current directory is one produced by WebCT's IMS export function. Names look like Fal2006_01512104_jwr_COURSE_0617653 . The _COURSE_nnnnn is tacked on by export, so Fal2006_01512104_jwr is the course name. Feel free to fix the code to accept the course name as an argument. It's right at the start of "main" in both java files. You could replace the first about 10 lines of code with something that sets "coursename" to one of the arguments.

Execution Instructions

Examples

Input:
Output:

Troubleshooting Tips

*

Open Issues and Enhancement Requests

  •  
  • No labels