--- loncom/interface/lonuserutils.pm 2007/11/15 21:24:51 1.5 +++ loncom/interface/lonuserutils.pm 2007/12/05 16:49:55 1.8 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.5 2007/11/15 21:24:51 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.8 2007/12/05 16:49:55 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -35,7 +35,8 @@ use Apache::lonnet; use Apache::loncommon(); use Apache::lonhtmlcommon; use Apache::lonlocal; -use LONCAPA(); +use Apache::longroup; +use LONCAPA qw(:DEFAULT :match); ############################################################### ############################################################### @@ -159,7 +160,7 @@ sub propagate_id_change { sub update_classlist { my ($cdom,$cnum,$udom,$uname,$user) = @_; - my ($uid,$fullname,$classlistentry); + my ($uid,$classlistentry); my $fullname = &Apache::lonnet::format_name($user->{'firstname'},$user->{'middlename'}, $user->{'lastname'},$user->{'generation'}, @@ -1325,7 +1326,7 @@ sub print_userlist { my $cnum = $coursehash{'num'}; my $cdesc = $coursehash{'description'}; my (@roles,@sections,%access,%users,%userdata, - %users,%statushash); + %statushash); if ($env{'form.showrole'} eq 'Any') { @roles = &course_roles($context); unshift(@roles,'cr'); @@ -1489,11 +1490,11 @@ sub courses_selector { my %idnums = (); my %idlist_titles = (); my $caller = 'global'; - my $totcodes = 0; my $format_reply; my $jscript = ''; - my $totcodes = + my $totcodes = 0; + $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes, $cdom,$totcodes); if ($totcodes > 0) { @@ -2873,12 +2874,34 @@ sub expire_user_list { $r->print('
'.&mt('Re-enrollment will re-activate data.')) if ($count);
}
-sub section_check_js {
- my $groupslist;
- my %curr_groups = &Apache::longroup::coursegroups();
- if (%curr_groups) {
- $groupslist = join('","',sort(keys(%curr_groups)));
+sub classlist_drop {
+ my ($scope,$uname,$udom,$now,$action) = @_;
+ my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)});
+ my $cid=$cdom.'_'.$cnum;
+ my $user = $uname.':'.$udom;
+ if ($action eq 'drop') {
+ if (!&active_student_roles($cnum,$cdom,$uname,$udom)) {
+ my $result =
+ &Apache::lonnet::cput('classlist',
+ { $user => $now },
+ $env{'course.'.$cid.'.domain'},
+ $env{'course.'.$cid.'.num'});
+ return &mt('Drop from classlist: [_1]',
+ ''.$result.'').'
';
+ }
}
+}
+
+sub active_student_roles {
+ my ($cnum,$cdom,$uname,$udom) = @_;
+ my %roles =
+ &Apache::lonnet::get_my_roles($uname,$udom,'userroles',
+ ['future','active'],['st']);
+ return exists($roles{"$cnum:$cdom:st"});
+}
+
+sub section_check_js {
+ my $groupslist= &get_groupslist();
return <<"END";
function validate(caller) {
var groups = new Array("$groupslist");
@@ -2928,5 +2951,144 @@ sub set_login {
return $response;
}
+sub course_sections {
+ my ($sections_count,$role) = @_;
+ my $output = '';
+ my @sections = (sort {$a <=> $b} keys %{$sections_count});
+ if (scalar(@sections) == 1) {
+ $output = '