Moodle Assignment

From WeBWorK
(Difference between revisions)
Jump to: navigation, search
(Installation)
(Installation)
Line 95: Line 95:
 
</Perl>
 
</Perl>
 
</pre>
 
</pre>
 +
 +
Finally you must modify one  line at the top of the file:
 +
 +
<code>webwork2/lib/WebworkSOAP/WSDL.pm</code>
 +
 +
to include the full domain name of the host  of the WeBWorK installation.
 +
 +
<code> use constant RPC_URL => 'http://host.name.edu/webwork2_rpc';</code>
 +
 +
(note the agreement with the stanzas in the <code>webwork.apache-config</code> file.
 +
 +
and modify one line at the top of the file:
 +
 +
<code>webwork2/lib/WebworkSOAP.pm</code> to contain your secret code:
 +
 +
<code>WebworkSOAP.pm:$WebworkSOAP::SeedCE{soap_authen_key} = "YourSecretCodeHere";</code>
 +
 +
Reboot the webwork server. 
 +
 +
== Adding a WeBWorK Problem Set to a course ==
 +
 +
* Choose a Moodle course and select "turn editing on".
 +
 +
* Add a block called WeBWorK Link (see Moodle instructions for creating blocks if needed)
  
 
== Credits ==
 
== Credits ==

Revision as of 15:42, 25 May 2008

wwassignment is a Moodle module which defines a new activity that links to a WeBWorK problem set in any WeBWorK installation 2.4 or later. The assignment allows single sign-on (moodle users who select the WeBWorK assignment are automatically logged into WeBWorK) and the grades from the homework assignment are automatically transferred back to the Moodle gradebook. This is ready for use now as an early beta version, but not all of the moodle features (such as backup and restored are implemented) and there are several limitations.

There have been several versions of wwassignment working with different versions of Moodle and WeBWorK. The current versions are wwassignment4 which will work with moodle1.9.x and wwassignment3 which will work with moodle 1.8.x. All versions of wwassignment can be downloaded from the CVS at [1]

wwassignment3 and wwassignment4 are client/server webservice applications. Moodle acts as the client and any webwork installation 2.4 or later can be configured to act as a server.

Contents

Requirements

wwassignment3

WeBWorK 2.4.3 or later. Moodle 1.8.x

MySQL 5.x or later (it might also work with MySQL 4.x but it has not been tested.)

wwassignment 4

WeBWorK 2.4.5 or later

Moodle 1.9.x

MySQL 5.x or later (it might also work with MySQL 4.x but it has not been tested.)

Installation

Check out the wwmoodle module from the WeBWorKCVS repository:

cvs -d :pserver:anoncvs@cvs.webwork.rochester.edu:/webwork/cvs/system co wwmoodle


This will create a wwmoodle directory in the current directory containing subdirectories wwassignment, wwassignment2, wwassignment3 and wwassignment4. For wwassignment3 (respectively wwassignment4) run the command

cd wwassignment4/bin/setup

perl setup.pl

and follow instructions to create the directory wwassignment in moodle's mod</directory>.

Open Moodle and select "Notification" (you will need administrative privileges on Moodle to do this). After the database updates have run return to the main page and select Modules->Activities->WeBWorK Problem Set to configure Moodle:

wwassignment_webworkurl: url of webwork course: http://host.name.edu/webwork2</span>

wwassignment_iframewidth: 95%

wwassignment_iframeheight: 500px

wwassignment_rpc_wsdl: url of wsdl file http://host.name.edu/webwork2_wsdl

wwassignment_rpc_key: YourSecretCodeHere</span> This must match the code defined in the WeBWorK installation (see below).

In the WeBWorK installation (with url: http://host.name.edu/webwork2 ) you must make these modifications.

In the file webwork2/conf/webwork.apache-config uncomment the lines for the SOAP installation in the final stanzas (or add them if they are missing all together).

$ENV{WEBWORK_ROOT} = $webwork_dir;

$PerlConfig .= <<EOF;


########## SOAP installation ##########
# 

# uncomment these three stanzas to use WeBWorK with Moodle

# PerlModule WebworkSOAP

# #WEBWORK SOAP CONFIGURATION
# <Location /webwork2_rpc>
#         PerlHandler Apache::SOAP
#         SetHandler perl-script
#         PerlSetVar dispatch_to "WebworkSOAP"
#         PerlSetVar options "compress_threshold => 10000"
#         Order Allow,Deny
#         Allow from All
# </Location>

# #WEBWORK SOAP WSDL HANDLER :: TO BE REPLACED WITH A FILE FOR PRODUCTION SERVERS
# <Location /webwork2_wsdl>
#         PerlSetVar dispatch_to "WebworkSOAP::WSDL"
#         PerlSetVar options "compress_threshold => 10000"
#         PerlHandler WebworkSOAP::WSDL
#         SetHandler perl-script
#         Order Allow,Deny
#         Allow from All
# </Location>

# end of WeBWorK -- Moodle stanzas

EOF

</Perl>

Finally you must modify one line at the top of the file:

webwork2/lib/WebworkSOAP/WSDL.pm

to include the full domain name of the host of the WeBWorK installation.

use constant RPC_URL => 'http://host.name.edu/webwork2_rpc';

(note the agreement with the stanzas in the webwork.apache-config file.

and modify one line at the top of the file:

webwork2/lib/WebworkSOAP.pm to contain your secret code:

WebworkSOAP.pm:$WebworkSOAP::SeedCE{soap_authen_key} = "YourSecretCodeHere";

Reboot the webwork server.

Adding a WeBWorK Problem Set to a course

  • Choose a Moodle course and select "turn editing on".
  • Add a block called WeBWorK Link (see Moodle instructions for creating blocks if needed)

Credits

The original wwmoodle package was developed by Peter Snoblin at the Truman State University in Missouri to work with WeBWorK 1 (which used CGI technology). http://www2.truman.edu/~pas577/wwmoodle/ It was further developed promoted within the Moodle community by Prof. Zbigniew Fiedorowicz of Ohio State University

The WeBWorK parts were integrated into the official source for WeBWorK2 by Main.SamHathaway. The Moodle parts (wwmoodle and wwmoodleset) were refactored into the original wwassignment module by Main.MichaelGage. wwassignment3 was written by Main.MattLeventy and modified by Main.MichaelGage to create wwassignment4


Historical

Requirements (wwassignment and wwassignment2)

These are no longer maintained and are not recommended unless you absolutely must use an early version of moodle. WeBWorK 2.3.x. or later.

Moodle 1.5.x, 1.6.x, or 1.7.x. We tested with version 2005060231 a.k.a. 1.5.3+, and later with some varieties of 1.7.

MySQL 4.1 or later.

The PHP::Serialization Perl module. Available from CPAN.

WeBWorK and Moodle must use the same MySQL server. The account that Moodle uses to log into its database must have SELECT access on the WeBWorK database and the account the WeBWorK uses to log into its database must have SELECT access on the Moodle database.

Moodle must also be able to read the WeBWorK courses directory. This can be a local directory, or it could be some kind of network mount, i.e. NFS. Moodle does not need to write to this directory.

Moodle and WeBWorK need have the same hostname. This is because the client's browser will only send the Moodle cookie to WeBWorK if the hostname matches. (The two applications can be set up on different ports though, so if you absolutely need them on different servers you could set up some kind of router-based port-forwarding. This is also useful if you need to run Moodle on Apache1 and WeBWorK on Apache2.)

(We plan to eliminate the same-server requirements in a future version.)

Installation

First, make sure that Moodle is set up to store session data in the database. Log in to Moodle as an administrator and select the "Configuration" option. Scroll down to the "Operating System" section and set the "dbsession" option to "Yes".

Check out the wwmoodle module from the WeBWorKCVS repository:

cvs -d :pserver:anoncvs@cvs.webwork.rochester.edu:/webwork/cvs/system co -D 2006-07-01 wwmoodle

(Only the versions of wwassignment written by Gage prior to July 1 of 2006 correspond to the description here. Later versions written by Leventi and wwassignment2 progress toward the creation of wwassignment3. )

This will create a wwmoodle directory in the current directory. Move the wwassignment subdirectory to your Moodle mod directory.

cd wwmoodle
mv wwassignment /path/to/moodle/mod
cd /path/to/moodle

Create symlinks to the language files in the proper locations.

cd /path/to/moodle/lang/en
ln -s ../../mod/wwassignment/lang.php wwassignment.php
cd help
ln -s ../../../mod/wwassignment/help wwassignment

If you're using the utf8 encoding, move the files into the en_utf8 directory instead of the en directory. (Or do both.)

The advantage of symlinking is that a cvs up from the wwassignment directory will be able to update the language files. Some people have reported problems when symlinking. If this is your experience, just move the files instead:

cd /path/to/moodle/lang/en
mv ../../mod/wwassignment/lang.php wwassignment.php
cd help
mv ../../../mod/wwassignment/help wwassignment

Log in to Moodle as an administrator and select the "Admin..." option. At this point, Moodle will set up the wwassignment module.

Then, select the "Configuration" option and then the "Modules" option. Click the "Settings" link next to "WeBWorK Problem Set" to configure the module.

Option Description
wwassignment_webworkcourses This is the path to the WeBWorK courses directory. It should be set to the same value as the $webwork_courses_dir variable in global.conf, except that in this case it needs to end with a slash.
wwassignment_webworkurl The URL where WeBWorK is accessible. By default, this is /webwork2. If WeBWorK is on a different port, you'll need the full URL. This should be the same value as $webwork_url in global.conf. It does not need a trailing slash.
wwassignment_iframewidth Width of frame in which WeBWorK problem sets are embedded.
wwassignment_iframeheight Height of frame in which WeBWorK problem sets are embedded.

There are a few settings that need to be made in global.conf as well:

Option Description
$moodle_dsn The DSN for the moodle database. Default: "dbi:mysql:moodle". Corresponds to dbtype, dbhost, and dbname in Moodle's config.php.
$moodle_table_prefix The prefix to prepend to Moodle table names. Default: "mdl". Corresponds to prefix in Moodle's config.php.
$moodle_username The username to use when connecting to the Moodle database. Default: same as WeBWorK database username. Corresponds to dbuser in Moodle's config.php.
$moodle_password The password to use when connecting to the Moodle database. Default: same as WeBWorK database password. Corresponds to dbpass in Moodle's config.php.

Usage

Once you've set this up, you should notice a new WeBWorK Problem Set activity in the list of activities you can add to your course. The form for creating WeBWorK problem sets includes two interesting links.

The first is Create the WeBWorK course. This links you to the WeBWorK Course Administration page, with the name of the course pre-filled and the sql_moodle database layout preselected. This link shows up whether or not the course has already been created, so you may get an error is the course already exists.

The second is Administer the WeBWorK portion of this course. This links you to the WeBWorK Instructor Tools page, where you can configure problem sets. You can also view, but not edit, the User List.

WeBWorK theme for Moodle

The moodle WeBWorK theme is a modified version of the default math theme. It detects when WeBWorK is called from within a Moodle frame, and removes superfluous interface elements. It also expands the Moodle frame so that it doesn't have to scroll.

Set the theme by changing the value of $defaultTheme in global.conf (for all courses) or a specific course's course.conf (for just that course). This value can also be set for a particular course using the Course Configuration page.

Moodle authentication rules

Moodle administrators are allowed to log into any WeBWorK sql_moodle course. They are assigned permission level 10.

Moodle teachers are allowed to log into only their corresponding WeBWorK sql_moodle course. They also get permission level 10.

Moodle students are allowed to log into only their corresponding WeBWorK sql_moodle course. They get permission level =0=.

Moodle groups are mapped to WeBWorK recitations, unless the group begins with SEC_, in which case, it is mapped to a WeBWorK section (with the SEC_ prefix is removed).

sql_moodle admin course

The WeBWorK course administration system can be configured to authenticate against a Moodle course.

First, create a Moodle course with the short name admin. This course doesn't need to have any participants or any content.

If you haven't created your WeBWorK admin course yet, select the sql_moodle database layout when you do.

If you've already created your WeBWorK admin course, edit its course.conf file to change the $dbLayoutName to sql_moodle.

You will be able to log into the admin course using the credentials of any Moodle administrator. If you would like to grant access to non-administrators, make them teachers in the Moodle admin course.

Limitations

Course naming

The name of the WeBWorK course that is associated with a given Moodle course is fixed. The system takes the short name of the Moodle course and removes any non-alphanumeric characters. This value is then stored. If you have two Moodle courses with identical short names (modulo non-alphanumeric characters), they will be associated with the same WeBWorK course. The behavior in this case is not defined.

We intend to make the name of the linked WeBWorK course configurable, and prevent two Moodle courses from being associated with the same WeBWorK course.

Set assignment

In Moodle, activities are always assigned to all participants in a course. However, you still have to assign WeBWorK homework sets to students using the WeBWorK instructor tools -- this is not done automatically.

follow us