--- loncom/enrollment/localenroll.pm 2009/09/13 03:14:12 1.39
+++ loncom/enrollment/localenroll.pm 2014/04/30 17:17:25 1.47
@@ -1,6 +1,6 @@
# functions to glue school database system into Lon-CAPA for
# automated enrollment
-# $Id: localenroll.pm,v 1.39 2009/09/13 03:14:12 raeburn Exp $
+# $Id: localenroll.pm,v 1.47 2014/04/30 17:17:25 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -123,6 +123,8 @@ sub run() {
D
A12345678
+
+
with the following at the top of the file
@@ -147,6 +149,17 @@ sub run() {
If dates are to included in the XML file, they should be in the format
YYYY:MM:DD:HH:MM:SS (: separators required).
+ The tag need only be used if the credits earned by the students will
+ be different from the default for the course. The course default is set when the
+ course is created and can be modifed by a Domain Coordinator via "View or
+ modify a course or community" on the DC's Main Menu screen.
+
+ A value for should be the institutional status used for students,
+ and should be one of the types defined in inst_usertypes(). If no status
+ types are defined for the domain this tag can be omitted. If Autoupdate.pl
+ is enabled in your domain, updates to the institutional status set here
+ will be updated by Autoupdate.pl, should changes occur.
+
If there were 10 students in fs03nop590001, 5 students in fs03nop59o601,
8 students in fs03nop590602, and 2 students in fs03ost580002,
then $$reply{'43551dedcd43febmsul1'} = 25
@@ -233,7 +246,7 @@ sub get_sections {
The course section or crosslisted course will only be added to the list of
affiliates if 'ok' is returned.
- new_course takes three arguments -
+ new_course takes three required arguments -
(a) the institutional courseID (in the MSU case this is a concatenation of
semester code, department code, course number, and section number
e.g., fs03nop590001).
@@ -242,10 +255,14 @@ sub get_sections {
username:domain
(c) the LON-CAPA domain that contains the course
+ new_course also takes a fourth (optional) argument -
+ (d) the course co-owners, as a comma-separated list of username:domain for
+ any co-owners.
+
=cut
sub new_course {
- my ($course_id,$owner,$dom) = @_;
+ my ($course_id,$owner,$dom,$coowners) = @_;
my $outcome = 'ok';
return $outcome;
}
@@ -297,8 +314,14 @@ validate_instcode takes three arguments
(c) an optional institutional username for the course owner.
An array is returned containing (a) the result of the check for a valid
-instcode, and (b) an (optional) course description.
+instcode, (b) an (optional) course description, and (c) the default credits
+earned by students when completing this course. If no institutional credits
+value is available, the default credits for the course can be set via the
+course request form, or via XML in a batch file, of via the web form used
+by the Domain Coordinator to create new courses one at a time.
+
A valid instcode is confirmed by returning 'valid'.
+
If no course description is available, '' should be set as
the value of the second item in the returned array.
@@ -308,7 +331,8 @@ sub validate_instcode {
my ($dom,$instcode,$owner) = @_;
my $outcome = '';
my $description = '';
- return ($outcome,$description);
+ my $credits = '';
+ return ($outcome,$description,$credits);
}
=pod
@@ -338,27 +362,31 @@ validate_crsreq takes six arguments -
(d) a comma-separated list of institutional affiliations of
the course owner.
(e) the institutional code (in the MSU case this is a concatenation of
- semester code, department code, and course number, e.g., fs03nop590.
+ semester code, department code, and course number, e.g., fs03nop590).
(f) a comma-separated list of institutional sections included in
the course request (only applicable to official courses).
+ (g) an optional reference to a hash of custom form data.
+ The custom form data will come from crsreq_updates().
A valid courserequest is confirmed by returning 'process'.
-The following can be returned: process, rejected, pending, approval or error (with error condition - no :), followed by a : and then an optional message.
+The following can be returned: process, rejected, pending, approval or
+error (with error condition - no :), followed by a : and then an optional message.
(a) process - the requestor is the recorded instructor - create the course
-(b) reject - the requestor should never be requesting this course, reject the
+(b) rejected - the requestor should never be requesting this course, reject the
request permanently
(c) pending - the requestor is not the recorded instructor, but could
become so after administrative action at the institution. Put the
- request in a queue and check localenroll:validate_instcode()
- periodically until the status changes to "valid".
+ request in a queue and, if an official course, check
+ localenroll:validate_instcode() periodically until the status changes to
+ "valid".
(d) approval - the request will be held pending review by a Domain Coordinator.
(e) error (followed by the error condition).
=cut
sub validate_crsreq {
- my ($dom,$owner,$crstype,$inststatuslist,$instcode,$instseclist) = @_;
+ my ($dom,$owner,$crstype,$inststatuslist,$instcode,$instseclist,$custominfo) = @_;
my $outcome = 'approval';
return $outcome;
}
@@ -374,7 +402,7 @@ lonnet -> lond -> localenroll.pm) The do
a table where columns are course type (official, unofficial or community)
and rows are institutional affiliations (e.g., Faculty, Staff, Student etc.).
-crsreq_checks() takes three arguments: $dom, $reqtyes, $validations.
+crsreq_checks() takes three arguments: $dom, $reqtypes, $validations.
$dom - the domain for which validation options are needed.
$reqtypes - ref to an ARRAY of course types (i.e., official, unofficial and community.
$validations - ref to a hash of a hash which will determine whether "validate"
@@ -413,6 +441,44 @@ sub crsreq_checks {
return 'ok';
}
+sub crsreq_updates {
+ my ($cdom,$cnum,$crstype,$action,$ownername,$ownerdomain,$fullname,$title,
+ $code,$accessstart,$accessend,$incoming,$outgoing) = @_;
+ unless (ref($outgoing) eq 'HASH') {
+ return 'fail';
+ }
+ my %extrainfo;
+ if (ref($incoming) eq 'HASH') {
+ %extrainfo = %{$incoming};
+ }
+ if ($action eq 'review') {
+ $outgoing->{'reviewweb'} = '';
+ } elsif ($action eq 'prevalidate') {
+ $outgoing->{'formitems'} = {}; # key=>value, where key is form element name
+ # and value is multiple, if there
+ # are multiple form elements with
+ # the same name.
+ } elsif ($action eq 'process') {
+ $outgoing->{'formitems'} = {}; # key=>value, where key is form element name
+ # and value is multiple, if there
+ # are multiple form elements with
+ # the same name.
+ } elsif ($action eq 'created') {
+ $outgoing->{'createdweb'} = '';
+ $outgoing->{'createdmsg'} = [{
+ mt => '',
+ args => [],
+ }];
+ } elsif ($action eq 'queued') {
+ $outgoing->{'queuedmsg'} = [{
+ mt => '',
+ args => [],
+ }];
+ $outgoing->{'queuedweb'} = '';
+ }
+ return 'ok'
+}
+
=pod
=item create_password()
@@ -521,14 +587,18 @@ sub instcode_format () {
Gather acceptable values for institutional categories to use in course creation request form for official courses.
- requires four arguments:
+ requires five arguments:
+
domain ($dom)
reference to array of titles ($codetitles)
reference to hash of abbreviations used in categories ($cat_titles).
- reference to hash of arrays specifying sort order used in category titles ($cat_order).
+ reference to hash of arrays specifying sort order used in
+ category titles ($cat_order).
+ reference to array which will contain order of component parts used
+ in institutional code ($code_order).
e.g.,
- @{$codetitles} = ("Year","Semester","Department","Number");
+ @{$codetitles} = ('Year','Semester',"Department','Number');
%{$$cat_titles{'Semester'}} = (
fs => 'Fall',
@@ -536,23 +606,22 @@ Gather acceptable values for institution
us => 'Summer');
@{$$cat_order{'Semester'}} = ('ss','us','fs');
+ @{$code_order} = ('Semester','Year','Department','Number');
returns 1 parameter: 'ok' if no processing errors.
=cut
sub possible_instcodes {
- my ($dom,$codetitles,$cat_titles,$cat_order) = @_;
+ my ($dom,$codetitles,$cat_titles,$cat_order,$code_order) = @_;
@{$codetitles} = ();
%{$$cat_titles{'Semester'}} = ();
@{$$cat_order{'Semester'}} = ('ss','us','fs');
- ($$cat_titles{'Department'},$$cat_order{'Department'}) = &get_all_depts($dom);
- ($$cat_titles{'Year'},$$cat_order{'Year'}) = &get_possible_years($dom);
+ @{$code_order} = ();
return 'ok';
}
-
=pod
=item institutional_photos()
@@ -728,6 +797,9 @@ sub instcode_defaults {
keys will be unique IDs (student or faculty/staff ID)
values will be either: scalar (username) or an array
if a single ID matches multiple usernames.
+ (d) $lc_users - reference to hash containing LON-CAPA usernames in
+ in domain $dom, as keys. Needed if institutional
+ data source only allows query by username.
returns 1 parameter - 'ok' if no processing error, or other value
if an error occurred.
side effects - populates the $instusers and $instids refs to hashes.
@@ -738,7 +810,7 @@ sub instcode_defaults {
=cut
sub allusers_info {
- my ($dom,$instusers,$instids) = @_;
+ my ($dom,$instusers,$instids,$lc_users) = @_;
my $outcome = 'ok';
return $outcome;
}