--- loncom/enrollment/localenroll.pm 2013/03/01 04:49:04 1.44 +++ loncom/enrollment/localenroll.pm 2014/05/06 20:42:32 1.48 @@ -1,6 +1,6 @@ # functions to glue school database system into Lon-CAPA for # automated enrollment -# $Id: localenroll.pm,v 1.44 2013/03/01 04:49:04 raeburn Exp $ +# $Id: localenroll.pm,v 1.48 2014/05/06 20:42:32 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -362,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) 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; } @@ -437,6 +441,58 @@ 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 => [], + }]; + $outgoing->{'createdactions'} = { + environment => {}, + }; + # environment can contain key=>value for + # items to set in the course environment. + # These would be items which are NOT included + # in the items set via options in the course + # request form. Currently self-enrollment + # settings are the only ones allowed, i.e., + # internal.selfenroll_types internal.selfenroll_registered + # internal.selfenroll_section internal.selfenroll_start_access + # internal.selfenroll_end_access internal.selfenroll_limit + # internal.selfenroll_cap internal.selfenroll_approval + # internal.selfenroll_notifylist + } elsif ($action eq 'queued') { + $outgoing->{'queuedmsg'} = [{ + mt => '', + args => [], + }]; + $outgoing->{'queuedweb'} = ''; + } + return 'ok' +} + =pod =item create_password()