--- loncom/interface/loncommon.pm 2004/11/13 21:06:27 1.231 +++ loncom/interface/loncommon.pm 2004/11/23 07:29:24 1.234 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.231 2004/11/13 21:06:27 albertel Exp $ +# $Id: loncommon.pm,v 1.234 2004/11/23 07:29:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -375,12 +375,11 @@ sub selectstudent_link { } sub coursebrowser_javascript { - my ($domainfilter,$roleelement)=@_; + my ($domainfilter)=@_; return (< - var extra_element = "$roleelement" var stdeditbrowser; - function opencrsbrowser(formname,uname,udom,desc) { + function opencrsbrowser(formname,uname,udom,desc,extra_element) { var url = '/adm/pickcourse?'; var filter; if (filter != null) { @@ -397,8 +396,11 @@ sub coursebrowser_javascript { url += 'form=' + formname + '&cnumelement='+uname+ '&cdomelement='+udom+ '&cnameelement='+desc; - if (extra_element != '') { - url += '&roleelement=$roleelement'; + if (extra_element !=null && extra_element != '' && formname == 'rolechoice') { + url += '&roleelement='+extra_element; + if (domainfilter == null || domainfilter == '') { + url += '&domainfilter='+extra_element; + } } var title = 'Course_Browser'; var options = 'scrollbars=1,resizable=1,menubar=0'; @@ -411,9 +413,9 @@ ENDSTDBRW } sub selectcourse_link { - my ($form,$unameele,$udomele,$desc)=@_; + my ($form,$unameele,$udomele,$desc,$extra_element)=@_; return "".&mt('Select Course').""; + '","'.$udomele.'","'.$desc.'","'.$extra_element.'");'."'>".&mt('Select Course').""; } =pod @@ -2614,7 +2616,6 @@ ENDROLE if ($thisdisfn!~m|/$|) { $forcereg=1; } } - &Apache::lonnet::logthis("hrrm"); return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', $forcereg). ''.$roleinfo.'
'.$titleinfo.'
'; @@ -2684,6 +2685,76 @@ sub get_users_function { ############################################### +=pod + +=item get_sections + +Determines all the sections for a course including +sections with students and sections containing other roles. +Incoming parameters: domain, course number, reference to +section hash (keys to be section/group IDs), reference to +array containing roles for which sections should be gathered +(optional). If the fourth argument is undefined, sections +are gathered for any role. + +Returns number of sections. + +=cut + +############################################### +sub get_sections { + my ($cdom,$cnum,$sectioncount,$possible_roles) = @_; + my $cid = $cdom.'_'.$cnum; + my $numsections = 0; + if ($cdom && $cnum) { + if (!defined($possible_roles) || (grep/^st$/,@$possible_roles)) { + my ($classlist) = &Apache::loncoursedata::get_classlist($cid,$cdom,$cnum); + my $sec_index = &Apache::loncoursedata::CL_SECTION(); + my $status_index = &Apache::loncoursedata::CL_STATUS(); + while (my ($student,$data) = each %$classlist) { + my ($section,$status) = ($data->[$sec_index], + $data->[$status_index]); + unless ($section eq '' || $section =~ /^\s*$/) { + if (!defined($$sectioncount{$section})) { + $$sectioncount{$section} = 1; + $numsections ++; + } else { + $$sectioncount{$section} ++; + } + } + } + } + my %courseroles = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); + foreach my $user (sort keys %courseroles) { + if ($user =~ /^(\w{2})/) { + my $role = $1; + if (!defined($possible_roles) || (grep/^$role$/,@$possible_roles)) { + if ($role eq 'cr') { + if ($user =~ m-^$role/[^/]*/[^/]*/[^/]*:[^:]*:[^:]*:(\w+)-) { + if (!defined($$sectioncount{$1})) { + $$sectioncount{$1} = 1; + $numsections ++; + } else { + $$sectioncount{$1} ++; + } + } + } + if ($user =~ /^$role:[^:]*:[^:]*:(\w+)/) { + if (!defined($$sectioncount{$1})) { + $$sectioncount{$1} = 1; + $numsections ++; + } else { + $$sectioncount{$1} ++; + } + } + } + } + } + } + return $numsections; +} + + sub get_posted_cgi { my $r=shift;