Annotation of loncom/interface/lonhtmlcommon.pm, revision 1.7

1.2       www         1: # The LearningOnline Network with CAPA
                      2: # a pile of common html routines
                      3: #
1.7     ! stredwic    4: # $Id: lonhtmlcommon.pm,v 1.6 2002/08/01 20:49:06 stredwic Exp $
1.2       www         5: #
                      6: # Copyright Michigan State University Board of Trustees
                      7: #
                      8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
                      9: #
                     10: # LON-CAPA is free software; you can redistribute it and/or modify
                     11: # it under the terms of the GNU General Public License as published by
                     12: # the Free Software Foundation; either version 2 of the License, or
                     13: # (at your option) any later version.
                     14: #
                     15: # LON-CAPA is distributed in the hope that it will be useful,
                     16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
                     17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     18: # GNU General Public License for more details.
                     19: #
                     20: # You should have received a copy of the GNU General Public License
                     21: # along with LON-CAPA; if not, write to the Free Software
                     22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                     23: #
                     24: # /home/httpd/html/adm/gpl.txt
                     25: #
                     26: # http://www.lon-capa.org/
                     27: #
                     28: 
1.1       stredwic   29: package Apache::lonhtmlcommon;
                     30: 
                     31: use strict;
                     32: 
1.6       stredwic   33: sub AscendOrderOptions {
                     34:     my ($order, $page, $formName)=@_;
                     35: 
                     36:     my $OpSel1 = '';
                     37:     my $OpSel2 = '';
                     38: 
                     39:     if($order eq 'Ascending') {
                     40:         $OpSel1 = ' selected';
                     41:     } else {
                     42:         $OpSel2 = ' selected';
                     43:     }
                     44: 
                     45:     my $Str = '';
                     46:     $Str .= '<select name="'.(($page)?$page:'').'Ascend"';
                     47:     if($formName) {
                     48:         $Str .= ' onchange="document.'.$formName.'.submit()"';
                     49:     }
                     50:     $Str .= '>'."\n";
                     51:     $Str .= '<option'.$OpSel1.'>Ascending</option>'."\n".
                     52: 	    '<option'.$OpSel2.'>Descending</option>'."\n";
                     53:     $Str .= '</select>'."\n";
                     54: 
                     55:     return $Str;
                     56: }
                     57: 
1.1       stredwic   58: sub MapOptions {
1.6       stredwic   59:     my ($data, $page, $formName)=@_;
1.1       stredwic   60:     my $Str = '';
                     61:     $Str .= '<select name="';
1.6       stredwic   62:     $Str .= (($page)?$page:'').'Maps"';
                     63:     if($formName) {
                     64:         $Str .= ' onchange="document.'.$formName.'.submit()"';
                     65:     }
                     66:     $Str .= '>'."\n";
1.1       stredwic   67: 
                     68:     my $selected = 0;
                     69:     foreach my $sequence (split(':',$data->{'orderedSequences'})) {
                     70: 	$Str .= '<option';
1.7     ! stredwic   71:         if($data->{$page.'Maps'} eq $data->{$sequence.':title'}) {
1.1       stredwic   72:             $Str .= ' selected';
                     73:             $selected = 1;
                     74:         }
                     75: 	$Str .= '>'.$data->{$sequence.':title'}.'</option>'."\n";	     
                     76:     }
                     77:     $Str .= '<option';
                     78:     if(!$selected) {
                     79:         $Str .= ' selected';
                     80:     }
                     81:     $Str .= '>All Maps</option>'."\n";
                     82: 
                     83:     $Str .= '</select>'."\n";
                     84: 
                     85:     return $Str;
                     86: }
                     87: 
                     88: sub StudentOptions {
1.4       stredwic   89:     my ($cache, $students, $selectedName, $page, $formName)=@_;
1.1       stredwic   90: 
                     91:     my $Str = '';
1.4       stredwic   92:     $Str .= '<select name="'.(($page)?$page:'').'Student"';
                     93:     if($formName) {
                     94:         $Str .= ' onchange="document.'.$formName.'.submit()"';
                     95:     }
                     96:     $Str .= '>'."\n";
1.1       stredwic   97: 
                     98:     my $selected=0;
                     99: 
                    100:     foreach (@$students) {
                    101: 	$Str .= '<option';
                    102: 	if($selectedName eq $_) {
                    103:             $Str .= ' selected';
                    104:             $selected = 1;
                    105:         }
                    106:         $Str .= '>';
                    107:         $Str .= $cache->{$_.':fullname'};
                    108:         $Str .= '</option>'."\n";	     
                    109:     }
                    110: 
                    111:     $Str .= '<option';
1.3       stredwic  112:     if($selectedName eq 'No Student Selected') {
                    113:         $Str .= ' selected';
                    114:         $selected = 1;
                    115:     }
                    116:     $Str .= '>No Student Selected</option>'."\n";
                    117: 
                    118:     $Str .= '<option';
1.1       stredwic  119:     if(!$selected) {
                    120:         $Str .= ' selected';
                    121:     }
1.3       stredwic  122:     $Str .= '>All Students</option>'."\n";
1.1       stredwic  123: 
                    124:     $Str .= '</select>'."\n";
                    125: 
                    126:     return $Str;
                    127: }
                    128: 
                    129: sub StatusOptions {
                    130:     my ($status, $formName)=@_;
                    131: 
                    132:     my $OpSel1 = '';
                    133:     my $OpSel2 = '';
                    134:     my $OpSel3 = '';
                    135: 
                    136:     if($status eq 'Any')         { $OpSel3 = ' selected'; }
                    137:     elsif($status eq 'Expired' ) { $OpSel2 = ' selected'; }
                    138:     else                         { $OpSel1 = ' selected'; }
                    139: 
                    140:     my $Str = '';
                    141:     $Str .= '<select name="Status"';
                    142:     if(defined($formName) && $formName ne '') {
                    143:         $Str .= ' onchange="document.'.$formName.'.submit()"';
                    144:     }
                    145:     $Str .= '>'."\n";
                    146:     $Str .= '<option'.$OpSel1.'>Active</option>'."\n";
                    147:     $Str .= '<option'.$OpSel2.'>Expired</option>'."\n";
                    148:     $Str .= '<option'.$OpSel3.'>Any</option>'."\n";
                    149:     $Str .= '</select>'."\n";
                    150: }
                    151: 
1.5       stredwic  152: sub MultipleSectionSelect {
                    153:     my ($sections,$selectedSections)=@_;
                    154: 
                    155:     my $Str = '';
1.7     ! stredwic  156:     $Str .= '<select name="Section" multiple="true" size="4">'."\n";
1.5       stredwic  157: 
                    158:     foreach (@$sections) {
                    159:         $Str .= '<option';
                    160:         foreach my $selected (@$selectedSections) {
                    161:             if($_ eq $selected) {
                    162:                 $Str .= ' selected=""';
                    163:             }
                    164:         }
                    165:         $Str .= '>'.$_.'</option>'."\n";
                    166:     }
                    167:     $Str .= '</select>'."\n";
                    168: 
                    169:     return $Str;
                    170: }
                    171: 
1.1       stredwic  172: sub Title {
                    173:     my ($pageName)=@_;
                    174: 
                    175:     my $Str = '';
                    176: 
                    177:     $Str .= '<html><head><title>'.$pageName.'</title></head>'."\n";
                    178:     $Str .= '<body bgcolor="#FFFFFF">'."\n";
                    179:     $Str .= '<script>window.focus(); window.width=500;window.height=500;';
                    180:     $Str .= '</script>'."\n";
                    181:     $Str .= '<table width="100%"><tr><td valign="top">';
                    182:     $Str .= '<h1> Course: ';
                    183:     $Str .= $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
                    184:     $Str .= '</h1></td><td align="right">'."\n";
                    185:     $Str .= '<img align="right" src=/adm/lonIcons/lonlogos.gif>';
                    186:     $Str .= '</td></tr></table>'."\n";
                    187: 
                    188:     return $Str;
                    189: }
                    190: 
                    191: =pod
                    192: 
                    193: =item &CreateTableHeadings()
                    194: 
                    195: This function generates the column headings for the chart.
                    196: 
                    197: =over 4
                    198: 
1.4       stredwic  199: Inputs: $CacheData, $keyID, $headings, $spacePadding
1.1       stredwic  200: 
                    201: $CacheData: pointer to a hash tied to the cached data database
                    202: 
1.4       stredwic  203: $keyID: a pointer to an array containing the names of the data 
1.1       stredwic  204: held in a column and is used as part of a key into $CacheData
                    205: 
                    206: $headings: The names of the headings for the student information
                    207: 
                    208: $spacePadding: The spaces to go between columns
                    209: 
                    210: Output: $Str
                    211: 
                    212: $Str: A formatted string of the table column headings.
                    213: 
                    214: =back
                    215: 
                    216: =cut
                    217: 
1.4       stredwic  218: sub CreateHeadings {
                    219:     my ($data,$keyID,$headings,$displayString,$format)=@_;
1.1       stredwic  220:     my $Str='';
1.4       stredwic  221:     my $formatting = '';
1.1       stredwic  222: 
                    223:     for(my $index=0; $index<(scalar @$headings); $index++) {
1.4       stredwic  224:  	my $currentHeading=$headings->[$index];
                    225:         if($format eq 'preformatted') {
                    226:             my @dataLength=split(//,$currentHeading);
                    227:             my $length=scalar @dataLength;
                    228:             $formatting = (' 'x
                    229:                       ($data->{$keyID->[$index].':columnWidth'}-$length));
                    230:         }
                    231:         my $linkdata=$keyID->[$index];
                    232: 
1.1       stredwic  233:         my $tempString = $displayString;
                    234:         $tempString =~ s/LINKDATA/$linkdata/;
1.4       stredwic  235:         $tempString =~ s/DISPLAYDATA/$currentHeading/;
                    236:         $tempString =~ s/FORMATTING/$formatting/;
                    237: 
1.1       stredwic  238:         $Str .= $tempString;
                    239:     }
                    240: 
                    241:     return $Str;
                    242: }
                    243: 
                    244: =pod
                    245: 
                    246: =item &FormatStudentInformation()
                    247: 
                    248: This function produces a formatted string of the student's information:
                    249: username, domain, section, full name, and PID.
                    250: 
                    251: =over 4
                    252: 
1.4       stredwic  253: Input: $cache, $name, $keyID, $spacePadding
1.1       stredwic  254: 
                    255: $cache: This is a pointer to a hash that is tied to the cached data
                    256: 
                    257: $name:  The name and domain of the current student in name:domain format
                    258: 
1.4       stredwic  259: $keyID: A pointer to an array holding the names used to
1.1       stredwic  260: 
                    261: remove data from the hash.  They represent the name of the data to be removed.
                    262: 
                    263: $spacePadding: Extra spaces that represent the space between columns
                    264: 
                    265: Output: $Str
                    266: 
                    267: $Str: Formatted string.
                    268: 
                    269: =back
                    270: 
                    271: =cut
                    272: 
                    273: sub FormatStudentInformation {
1.4       stredwic  274:     my ($data,$name,$keyID,$displayString,$format)=@_;
1.1       stredwic  275:     my $Str='';
1.4       stredwic  276:     my $currentColumn;
                    277: 
                    278:     for(my $index=0; $index<(scalar @$keyID); $index++) {
                    279:         $currentColumn=$data->{$name.':'.$keyID->[$index]};
1.1       stredwic  280: 
1.4       stredwic  281:         if($format eq 'preformatted') {
                    282:             my @dataLength=split(//,$currentColumn);
                    283:             my $length=scalar @dataLength;
                    284:             $currentColumn.= (' 'x
                    285:                      ($data->{$keyID->[$index].':columnWidth'}-$length));
1.1       stredwic  286:         }
                    287: 
1.4       stredwic  288:         my $tempString = $displayString;
                    289:         $tempString =~ s/DISPLAYDATA/$currentColumn/;
                    290: 
                    291:         $Str .= $tempString;
1.1       stredwic  292:     }
                    293: 
                    294:     return $Str;
1.7     ! stredwic  295: }
        !           296: 
        !           297: # Create progress
        !           298: sub Create_PrgWin {
        !           299:     my ($r, $title, $heading)=@_;
        !           300:     $r->print('<script>'.
        !           301:     "popwin=open(\'\',\'popwin\',\'width=400,height=100\');".
        !           302:     "popwin.document.writeln(\'<html><body bgcolor=\"#88DDFF\">".
        !           303:               "<title>$title</title>".
        !           304:               "<h4>$heading</h4>".
        !           305:               "<form name=popremain>".
        !           306:               "<input type=text size=35 name=remaining value=Starting></form>".
        !           307:               "</body></html>\');".
        !           308:     "popwin.document.close();".
        !           309:     "</script>");
        !           310: 
        !           311:     $r->rflush();
        !           312: }
        !           313: 
        !           314: # update progress
        !           315: sub Update_PrgWin {
        !           316:     my ($displayString,$r)=@_;
        !           317:     $r->print('<script>popwin.document.popremain.remaining.value="'.
        !           318:               $displayString.'";</script>');
        !           319:     $r->rflush();
        !           320: }
        !           321: 
        !           322: # close Progress Line
        !           323: sub Close_PrgWin {
        !           324:     my ($r)=@_;
        !           325:     $r->print('<script>popwin.close()</script>'."\n");
        !           326:     $r->rflush(); 
1.1       stredwic  327: }
                    328: 
                    329: 1;
                    330: __END__

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>