--- loncom/interface/lonhtmlcommon.pm 2002/07/22 21:21:32 1.2 +++ loncom/interface/lonhtmlcommon.pm 2002/08/30 15:35:08 1.9 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common html routines # -# $Id: lonhtmlcommon.pm,v 1.2 2002/07/22 21:21:32 www Exp $ +# $Id: lonhtmlcommon.pm,v 1.9 2002/08/30 15:35:08 stredwic Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,16 +30,45 @@ package Apache::lonhtmlcommon; use strict; +sub AscendOrderOptions { + my ($order, $page, $formName)=@_; + + my $OpSel1 = ''; + my $OpSel2 = ''; + + if($order eq 'Ascending') { + $OpSel1 = ' selected'; + } else { + $OpSel2 = ' selected'; + } + + my $Str = ''; + $Str .= '<select name="'.(($page)?$page:'').'Ascend"'; + if($formName) { + $Str .= ' onchange="document.'.$formName.'.submit()"'; + } + $Str .= '>'."\n"; + $Str .= '<option'.$OpSel1.'>Ascending</option>'."\n". + '<option'.$OpSel2.'>Descending</option>'."\n"; + $Str .= '</select>'."\n"; + + return $Str; +} + sub MapOptions { - my ($data, $page)=@_; + my ($data, $page, $formName)=@_; my $Str = ''; $Str .= '<select name="'; - $Str .= (($page)?$page:'').'Map">'."\n"; + $Str .= (($page)?$page:'').'Maps"'; + if($formName) { + $Str .= ' onchange="document.'.$formName.'.submit()"'; + } + $Str .= '>'."\n"; my $selected = 0; foreach my $sequence (split(':',$data->{'orderedSequences'})) { $Str .= '<option'; - if($data->{$page.'Map'} eq $data->{$sequence.':title'}) { + if($data->{$page.'Maps'} eq $data->{$sequence.':title'}) { $Str .= ' selected'; $selected = 1; } @@ -56,19 +85,87 @@ sub MapOptions { return $Str; } -sub StudentOptions { - my ($cache, $students, $selectedName, $page)=@_; +sub ProblemOptions { + my ($data, $page, $map, $formName)=@_; + my $Str = ''; + $Str .= '<select name="'; + $Str .= (($page)?$page:'').'ProblemSelect"'; + if($formName) { + $Str .= ' onchange="document.'.$formName.'.submit()"'; + } + $Str .= '>'."\n"; + + my $selected = 0; + foreach my $sequence (split(':',$data->{'orderedSequences'})) { + if($data->{$sequence.':title'} eq $map || $map eq 'All Maps') { + foreach my $problem (split(':', $data->{$sequence.':problems'})) { + $Str .= '<option'; + if($data->{$page.'ProblemSelect'} eq + $data->{$problem.':title'}) { + $Str .= ' selected'; + $selected = 1; + } + $Str .= '>'.$data->{$problem.':title'}.'</option>'."\n"; + } + } + } + $Str .= '<option'; + if(!$selected) { + $Str .= ' selected'; + } + $Str .= '>All Problems</option>'."\n"; + $Str .= '</select>'."\n"; + + return $Str; +} + +sub PartOptions { + my ($data, $page, $parts, $formName)=@_; my $Str = ''; - $Str = '<select name="'.(($page)?$page:'').'Student">'."\n"; - my $selected=0; + if(!defined($parts)) { + return ''; + } + + $Str .= '<select name="'; + $Str .= (($page)?$page:'').'PartSelect"'; + if($formName) { + $Str .= ' onchange="document.'.$formName.'.submit()"'; + } + $Str .= '>'."\n"; + + my $selected = 0; + foreach my $part (@$parts) { + $Str .= '<option'; + if($data->{$page.'PartSelect'} eq $part) { + $Str .= ' selected'; + $selected = 1; + } + $Str .= '>'.$part.'</option>'."\n"; + } $Str .= '<option'; - if($selectedName eq 'All Students') { + if(!$selected) { $Str .= ' selected'; - $selected = 1; } - $Str .= '>All Students</option>'."\n"; + $Str .= '>All Parts</option>'."\n"; + + $Str .= '</select>'."\n"; + + return $Str; +} + +sub StudentOptions { + my ($cache, $students, $selectedName, $page, $formName)=@_; + + my $Str = ''; + $Str .= '<select name="'.(($page)?$page:'').'Student"'; + if($formName) { + $Str .= ' onchange="document.'.$formName.'.submit()"'; + } + $Str .= '>'."\n"; + + my $selected=0; foreach (@$students) { $Str .= '<option'; @@ -82,11 +179,18 @@ sub StudentOptions { } $Str .= '<option'; - if(!$selected) { + if($selectedName eq 'No Student Selected') { $Str .= ' selected'; + $selected = 1; } $Str .= '>No Student Selected</option>'."\n"; + $Str .= '<option'; + if(!$selected) { + $Str .= ' selected'; + } + $Str .= '>All Students</option>'."\n"; + $Str .= '</select>'."\n"; return $Str; @@ -115,60 +219,35 @@ sub StatusOptions { $Str .= '</select>'."\n"; } -sub Title { - my ($pageName)=@_; +sub MultipleSectionSelect { + my ($sections,$selectedSections)=@_; my $Str = ''; + $Str .= '<select name="Section" multiple="true" size="4">'."\n"; - $Str .= '<html><head><title>'.$pageName.'</title></head>'."\n"; - $Str .= '<body bgcolor="#FFFFFF">'."\n"; - $Str .= '<script>window.focus(); window.width=500;window.height=500;'; - $Str .= '</script>'."\n"; - $Str .= '<table width="100%"><tr><td valign="top">'; - $Str .= '<h1> Course: '; - $Str .= $ENV{'course.'.$ENV{'request.course.id'}.'.description'}; - $Str .= '</h1></td><td align="right">'."\n"; - $Str .= '<img align="right" src=/adm/lonIcons/lonlogos.gif>'; - $Str .= '</td></tr></table>'."\n"; -# $Str .= '<h3>Current Time: '.localtime(time).'</h3><br><br><br>'."\n"; + foreach (@$sections) { + $Str .= '<option'; + foreach my $selected (@$selectedSections) { + if($_ eq $selected) { + $Str .= ' selected=""'; + } + } + $Str .= '>'.$_.'</option>'."\n"; + } + $Str .= '</select>'."\n"; return $Str; } -sub CreateStatisticsMainMenu { - my ($status, $reports)=@_; +sub Title { + my ($pageName)=@_; my $Str = ''; - $Str .= '<table border="0"><tbody><tr>'."\n"; - $Str .= '<td></td><td></td>'."\n"; - $Str .= '<td align="center"><b>Analysis Reports:</b></td>'."\n"; - $Str .= '<td align="center"><b>Student Status:</b></td></tr>'."\n"; - $Str .= '<tr>'."\n"; - $Str .= '<td align="center"><input type="submit" name="Refresh" '; - $Str .= 'value="Refresh" /></td>'."\n"; - $Str .= '<td align="center"><input type="submit" name="DownloadAll" '; - $Str .= 'value="Update All Student Data" /></td>'."\n"; - $Str .= '<td align="center">'; - $Str .= '<select name="reportSelected" onchange="document.'; - $Str .= 'Statistics.submit()">'."\n"; - - foreach (sort(keys(%$reports))) { - next if($_ eq 'reportSelected'); - $Str .= '<option name="'.$_.'"'; - if($reports->{'reportSelected'} eq $reports->{$_}) { - $Str .= ' selected=""'; - } - $Str .= '>'.$reports->{$_}.'</option>'."\n"; - } - $Str .= '</select></td>'."\n"; - - $Str .= '<td align="center">'; - $Str .= &StatusOptions($status, 'Statistics'); - $Str .= '</td>'."\n"; - - $Str .= '</tr></tbody></table>'."\n"; - $Str .= '<hr>'."\n"; + $Str .= '<html><head><title>'.$pageName.'</title></head>'."\n"; + $Str .= &Apache::loncommon::bodytag($pageName)."\n"; + $Str .= '<script>window.focus(); window.width=500;window.height=500;'; + $Str .= '</script>'."\n"; return $Str; } @@ -181,11 +260,11 @@ This function generates the column headi =over 4 -Inputs: $CacheData, $studentInformation, $headings, $spacePadding +Inputs: $CacheData, $keyID, $headings, $spacePadding $CacheData: pointer to a hash tied to the cached data database -$studentInformation: a pointer to an array containing the names of the data +$keyID: a pointer to an array containing the names of the data held in a column and is used as part of a key into $CacheData $headings: The names of the headings for the student information @@ -200,19 +279,26 @@ $Str: A formatted string of the table co =cut -sub CreateStudentInformationHeadings { - my ($data,$studentInformation,$headings,$displayString)=@_; +sub CreateHeadings { + my ($data,$keyID,$headings,$displayString,$format)=@_; my $Str=''; + my $formatting = ''; for(my $index=0; $index<(scalar @$headings); $index++) { -# if(!&ShouldShowColumn($data, 'ChartHeading'.$index)) { -# next; -# } - my $data=$headings->[$index]; - my $linkdata=$studentInformation->[$index]; + my $currentHeading=$headings->[$index]; + if($format eq 'preformatted') { + my @dataLength=split(//,$currentHeading); + my $length=scalar @dataLength; + $formatting = (' 'x + ($data->{$keyID->[$index].':columnWidth'}-$length)); + } + my $linkdata=$keyID->[$index]; + my $tempString = $displayString; $tempString =~ s/LINKDATA/$linkdata/; - $tempString =~ s/DISPLAYDATA/$data/; + $tempString =~ s/DISPLAYDATA/$currentHeading/; + $tempString =~ s/FORMATTING/$formatting/; + $Str .= $tempString; } @@ -228,13 +314,13 @@ username, domain, section, full name, an =over 4 -Input: $cache, $name, $studentInformation, $spacePadding +Input: $cache, $name, $keyID, $spacePadding $cache: This is a pointer to a hash that is tied to the cached data $name: The name and domain of the current student in name:domain format -$studentInformation: A pointer to an array holding the names used to +$keyID: A pointer to an array holding the names used to remove data from the hash. They represent the name of the data to be removed. @@ -249,26 +335,60 @@ $Str: Formatted string. =cut sub FormatStudentInformation { - my ($cache,$name,$studentInformation,$spacePadding)=@_; + my ($data,$name,$keyID,$displayString,$format)=@_; my $Str=''; - my $data; + my $currentColumn; - for(my $index=0; $index<(scalar @$studentInformation); $index++) { - if(!&ShouldShowColumn($cache, 'ChartHeading'.$index)) { - next; + for(my $index=0; $index<(scalar @$keyID); $index++) { + $currentColumn=$data->{$name.':'.$keyID->[$index]}; + + if($format eq 'preformatted') { + my @dataLength=split(//,$currentColumn); + my $length=scalar @dataLength; + $currentColumn.= (' 'x + ($data->{$keyID->[$index].':columnWidth'}-$length)); } - $data=$cache->{$name.':'.$studentInformation->[$index]}; - $Str .= $data; - my @dataLength=split(//,$data); - my $length=scalar @dataLength; - $Str .= (' 'x($cache->{$studentInformation->[$index].'Length'}- - $length)); - $Str .= $spacePadding; + my $tempString = $displayString; + $tempString =~ s/DISPLAYDATA/$currentColumn/; + + $Str .= $tempString; } return $Str; } +# Create progress +sub Create_PrgWin { + my ($r, $title, $heading)=@_; + $r->print('<script>'. + "popwin=open(\'\',\'popwin\',\'width=400,height=100\');". + "popwin.document.writeln(\'<html><body bgcolor=\"#88DDFF\">". + "<title>$title</title>". + "<h4>$heading</h4>". + "<form name=popremain>". + "<input type=text size=35 name=remaining value=Starting></form>". + "</body></html>\');". + "popwin.document.close();". + "</script>"); + + $r->rflush(); +} + +# update progress +sub Update_PrgWin { + my ($displayString,$r)=@_; + $r->print('<script>popwin.document.popremain.remaining.value="'. + $displayString.'";</script>'); + $r->rflush(); +} + +# close Progress Line +sub Close_PrgWin { + my ($r)=@_; + $r->print('<script>popwin.close()</script>'."\n"); + $r->rflush(); +} + 1; __END__