--- loncom/enrollment/localenroll.pm 2013/03/01 04:49:04 1.44 +++ loncom/enrollment/localenroll.pm 2014/06/25 23:55:31 1.49 @@ -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.49 2014/06/25 23:55:31 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() @@ -838,6 +894,21 @@ sub get_userinfo { =item inst_usertypes() + Starting with LON-CAPA 2.11.0 use of this subroutine + is deprecated. The domain configuration web GUI + accessible to Domain Coordinators will be used to + manage institutional types. If you have previously + customized this routine, then values set there will + be used when displaying the "Institutional user types" + section in the domain config screen for: + "Default authentication/language/timezone/portal/types". + + Once you have visited that screen and saved the settings, + configuration thereafter will be via the web GUI of + values stored in the domain's configuration.db file on + the primary library server in the domain, and values in + inst_usertypes() will no longer be consulted. + Incoming data: three arguments (a) $dom - domain (b) $usertypes - reference to hash which will contain