--- loncom/interface/loncommon.pm 2004/11/30 19:08:18 1.235 +++ loncom/interface/loncommon.pm 2004/12/02 21:30:16 1.240 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.235 2004/11/30 19:08:18 raeburn Exp $ +# $Id: loncommon.pm,v 1.240 2004/12/02 21:30:16 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2285,7 +2285,7 @@ sub get_student_view { if (defined($moreenv)) { %form=(%form,%{$moreenv}); } - if ($target eq 'tex') {$form{'grade_target'} = 'tex';} + if (defined($target)) { $form{'grade_target'} = $target; } $feedurl=&Apache::lonnet::clutter($feedurl); my $userview=&Apache::lonnet::ssi_body($feedurl,%form); $userview=~s/\]*\>//gi; @@ -2606,8 +2606,8 @@ ENDROLE ($ENV{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|); my $formaction='/priv/'.$uname.'/'.$thisdisfn; $formaction=~s/\/+/\//g; - unless ($customtitle) { - my $parentpath = $thisdisfn; + unless ($customtitle) { #this is for resources; directories have customtitle, and crumbs and select recent are created in lonpubdir.pm + my $parentpath = ''; if ($thisdisfn =~ m-(.+/)[^/]*$-) { $parentpath = $1; } @@ -2719,52 +2719,37 @@ Returns number of sections. ############################################### sub get_sections { my ($cdom,$cnum,$sectioncount,$possible_roles) = @_; + if (!($cdom && $cnum)) { return 0; } 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} ++; - } - } - } - } - } + + 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 '-1' || $section =~ /^\s*$/) { + if (!defined($$sectioncount{$section})) { $numsections++; } + $$sectioncount{$section}++; + } + } + } + my %courseroles = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); + foreach my $user (sort(keys(%courseroles))) { + if ($user !~ /^(\w{2})/) { next; } + my ($role) = ($user =~ /^(\w{2})/); + if ($possible_roles && !(grep(/^$role$/,@$possible_roles))) { next; } + my $section; + if ($role eq 'cr' && + $user =~ m-^$role/[^/]*/[^/]*/[^/]*:[^:]*:[^:]*:(\w+)-) { + $section=$1; + } + if ($user =~ /^$role:[^:]*:[^:]*:(\w+)/) { $section=$1; } + if (!defined($section) || $section eq '-1') { next; } + if (!defined($$sectioncount{$section})) { $numsections++; } + $$sectioncount{$section}++; } return $numsections; } @@ -3376,6 +3361,9 @@ they are plotted. If undefined, default =item @Values: An array of array references. Each array reference holds data to be plotted in a stacked bar chart. +=item If the final element of @Values is a hash reference the key/value +pairs will be added to the graph definition. + =back Returns: @@ -3887,7 +3875,7 @@ sub escape_double { # Escapes the last element of a full URL. sub escape_url { my ($url) = @_; - my @urlslices = split(/\//, $url); + my @urlslices = split(/\//, $url,-1); my $lastitem = &Apache::lonnet::escape(pop(@urlslices)); return join('/',@urlslices).'/'.$lastitem; }