--- loncom/interface/loncommon.pm 2005/10/04 18:27:32 1.276 +++ loncom/interface/loncommon.pm 2005/11/10 00:37:39 1.286 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.276 2005/10/04 18:27:32 albertel Exp $ +# $Id: loncommon.pm,v 1.286 2005/11/10 00:37:39 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1155,21 +1155,43 @@ sub domain_select { } } +#------------------------------------------- + +=pod + +=item * multiple_select_form($name,$value,$size,%hash) + +Returns a string containing a element + $value - sclara or array ref of values that should already be selected + $size - number of rows long the select element is + $hash - the elements should be 'option' => 'shown text' + (shown text should already have been &mt()) + $order - (optional) array ref of the order to show the elments in + +=cut + +#------------------------------------------- sub multiple_select_form { - my ($name,$value,$size,%hash)=@_; + my ($name,$value,$size,$hash,$order)=@_; my %selected = map { $_ => 1 } ref($value)?@{$value}:($value); my $output=''; if (! defined($size)) { $size = 4; - if (scalar(keys(%hash))<4) { - $size = scalar(keys(%hash)); + if (scalar(keys(%$hash))<4) { + $size = scalar(keys(%$hash)); } } $output.="\n\n"; return $output; @@ -1565,10 +1587,11 @@ sub authform_nochange{ kerb_def_dom => 'MSU.EDU', @_, ); - my $result = &mt('[_1] Do not change login data', + my $result = ''; return $result; } @@ -1600,14 +1623,15 @@ sub authform_kerberos{ my $jscall = "javascript:changed_radio('krb',$in{'formname'});"; my $result .= &mt ('[_1] Kerberos authenticated with domain [_2] '. - '[_3] Version 4 [_4] Version 5', - '', - '', - '', - ''); + ''); return $result; } @@ -1632,9 +1656,9 @@ sub authform_internal{ my $jscall = "javascript:changed_radio('int',$args{'formname'});"; my $result.=&mt ('[_1] Internally authenticated (with initial password [_2])', - '', - ''); return $result; } @@ -1659,9 +1683,9 @@ sub authform_local{ my $jscall = "javascript:changed_radio('loc',$in{'formname'});"; my $result.=&mt('[_1] Local Authentication with argument [_2]', - '', - ''); return $result; } @@ -1675,9 +1699,9 @@ sub authform_filesystem{ my $jscall = "javascript:changed_radio('fsys',$in{'formname'});"; my $result.= &mt ('[_1] Filesystem Authenticated (with initial password [_2])', - '', - ''); return $result; } @@ -2509,7 +2533,7 @@ sub pgrdlink { Inputs: $text $uname $udom $symb $target Returns: A link to parmset.pm such as to see the PPRM view of a -student andn resource +student and a specific resource =cut @@ -2750,6 +2774,10 @@ sub bodytag { @@ -2858,7 +2886,7 @@ ENDROLE # return(< + @@ -3061,13 +3089,12 @@ Retrieves usernames:domains for users in with specific role(s), and access status. Incoming parameters: -1. course_id -2. course domain -3. course number -4. access status: users must have - either active, +1. course domain +2. course number +3. access status: users must have - either active, previous, future, or all. -5. reference to array of permissible roles -6. reference to results object (hash of hashes). +4. reference to array of permissible roles +5. reference to results object (hash of hashes). Keys of top level hash are roles. Keys of inner hashes are username:domain, with values set to access type. @@ -3077,41 +3104,41 @@ values set to access type. ############################################### sub get_course_users { - my ($course_id,$cdom,$cnum,$types,$roles,$users) = @_; + my ($cdom,$cnum,$types,$roles,$users) = @_; if (grep/^st$/,@{$roles}) { - my $statusidx = &Apache::loncoursedata::CL_STATUS; - my $startidx = &Apache::loncoursedata::CL_START; - my $endidx = &Apache::loncoursedata::CL_END; + my $statusidx = &Apache::loncoursedata::CL_STATUS(); + my $startidx = &Apache::loncoursedata::CL_START(); + my $endidx = &Apache::loncoursedata::CL_END(); my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist($cdom,$cnum); - foreach my $student (keys (%{$classlist})) { + my $now = time; + foreach my $student (keys(%{$classlist})) { if (defined($$types{'active'})) { if ($$classlist{$student}[$statusidx] eq 'Active') { push(@{$$users{st}{$student}},'active'); } } if (defined($$types{'previous'})) { - if ($$classlist{$student}[$endidx] <= time) { + if ($$classlist{$student}[$endidx] <= $now) { push(@{$$users{st}{$student}},'previous'); } } if (defined($$types{'future'})) { - if (($$classlist{$student}[$startidx] > 0) && ($$classlist{$student}[$endidx] > time) || ($$classlist{$student}[$endidx] == 0) || ($$classlist{$student}[$endidx] eq '')) { + if (($$classlist{$student}[$startidx] > $now) && ($$classlist{$student}[$endidx] > $now) || ($$classlist{$student}[$endidx] == 0) || ($$classlist{$student}[$endidx] eq '')) { push(@{$$users{st}{$student}},'future'); } } } } if ((@{$roles} > 0) && (@{$roles} ne "st")) { - my ($cdom,$cnum) = split/_/,$course_id; my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum); foreach my $person (@coursepersonnel) { my ($role,$user) = ($person =~ /^([^:]*):([^:]+:[^:]+)/); $user =~ s/:$//; - if (($role) && (grep/^$role$/,@{$roles})) { - my ($uname,$udom) = split/:/,$user; + if (($role) && (grep(/^$role$/,@{$roles}))) { + my ($uname,$udom) = split(/:/,$user); if ($uname ne '' && $udom ne '') { my $status = &check_user_status($udom,$uname,$cdom,$cnum,$role); - foreach my $type (keys %{$types}) { + foreach my $type (keys(%{$types})) { if ($status eq $type) { $$users{$role}{$user} = $type; } @@ -3119,6 +3146,15 @@ sub get_course_users { } } } + if (grep/^ow$/,@{$roles}) { + if ((defined($cdom)) && (defined($cnum))) { + my %csettings = &Apache::lonnet::get('environment',['internal.courseowner'],$cdom,$cnum); + if ( defined($csettings{'internal.courseowner'}) ) { + my $owner = $csettings{'internal.courseowner'}; + $$users{'ow'}{$owner.':'.$cdom} = 'any'; + } + } + } } return; } @@ -3708,7 +3744,7 @@ the routine &Apache::lonnet::transfer_pr my $uniq=0; sub get_cgi_id { $uniq=($uniq+1)%100000; - return (time.'_'.$uniq); + return (time.'_'.$$.'_'.$uniq); } ############################################################
$upperleft $messages