--- loncom/interface/loncommon.pm 2004/10/06 18:54:32 1.216 +++ loncom/interface/loncommon.pm 2004/11/02 20:48:02 1.226 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.216 2004/10/06 18:54:32 albertel Exp $ +# $Id: loncommon.pm,v 1.226 2004/11/02 20:48:02 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -59,7 +59,6 @@ use Apache::lonnet(); use GDBM_File; use POSIX qw(strftime mktime); use Apache::Constants qw(:common :http :methods); -use Apache::lonmsg(); use Apache::lonmenu(); use Apache::lonlocal; use HTML::Entities; @@ -254,6 +253,7 @@ sub browser_and_searcher_javascript { if (!defined($mode)) { $mode='edit'; } my $resurl=&lastresurl(); return <<END; +// <!-- BEGIN LON-CAPA Internal var editbrowser = null; function openbrowser(formname,elementname,only,omit,titleelement) { var url = '$resurl/?'; @@ -265,16 +265,22 @@ sub browser_and_searcher_javascript { url += 'form=' + formname + '&'; if (only != null) { url += 'only=' + only + '&'; - } + } else { + url += 'only=&'; + } if (omit != null) { url += 'omit=' + omit + '&'; - } + } else { + url += 'omit=&'; + } if (titleelement != null) { url += 'titleelement=' + titleelement + '&'; - } + } else { + url += 'titleelement=&'; + } url += 'element=' + elementname + ''; var title = 'Browser'; - var options = 'scrollbars=1,resizable=1,menubar=0'; + var options = 'scrollbars=1,resizable=1,menubar=1,location=1'; options += ',width=700,height=600'; editbrowser = open(url,title,options,'1'); editbrowser.focus(); @@ -290,7 +296,9 @@ sub browser_and_searcher_javascript { url += 'form=' + formname + '&'; if (titleelement != null) { url += 'titleelement=' + titleelement + '&'; - } + } else { + url += 'titleelement=&'; + } url += 'element=' + elementname + ''; var title = 'Search'; var options = 'scrollbars=1,resizable=1,menubar=0'; @@ -298,6 +306,7 @@ sub browser_and_searcher_javascript { editsearcher = open(url,title,options,'1'); editsearcher.focus(); } +// END LON-CAPA Internal --> END } @@ -483,7 +492,7 @@ sub linked_select_forms { my $first = "document.$formname.$firstselectname"; # output the javascript to do the changing my $result = ''; - $result.="<script>\n"; + $result.="<script type=\"text/javascript\">\n"; $result.="var select2data = new Object();\n"; $" = '","'; my $debug = ''; @@ -613,7 +622,7 @@ sub help_open_topic { my $title = &mt('Online Help'); my $helpicon=&lonhttpdurl("/adm/help/gif/smallHelp.gif"); $template .= <<"ENDTEMPLATE"; - <a href="$link" title="$title"><image src="$helpicon" border="0" alt="(Help: $topic)" /></a> + <a href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help: $topic)" /></a> ENDTEMPLATE if ($text ne '') { $template.='</td></tr></table>' }; return $template; @@ -673,7 +682,8 @@ sub help_open_menu { } my $helpicon=&lonhttpdurl("/adm/lonIcons/helpgateway.gif"); $template .= <<"ENDTEMPLATE"; - <script> + <script type="text/javascript"> +//<!-- BEGIN LON-CAPA Internal function helpMenu(caller) { if (caller == 'open') { newWindow = window.open("","helpmenu","HEIGHT=$height,WIDTH=$width,resize=yes,scrollbars=yes" ) @@ -689,8 +699,9 @@ function helpMenu(caller) { caller.focus() } } +// END LON-CAPA Internal --> </script> - <a href="$link" title="$title"><image src="$helpicon" border="0" alt="(Help Menu)" /></a> + <a href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help Menu)" /></a> ENDTEMPLATE if ($component_help) { if (!$text) { @@ -747,7 +758,7 @@ sub help_open_bug { my $title = &mt('Report a Bug'); my $bugicon=&lonhttpdurl("/adm/lonMisc/smallBug.gif"); $template .= <<"ENDTEMPLATE"; - <a href="$link" title="$title"><image src="$bugicon" border="0" alt="(Bug: $topic)" /></a> + <a href="$link" title="$title"><img src="$bugicon" border="0" alt="(Bug: $topic)" /></a> ENDTEMPLATE if ($text ne '') { $template.='</td></tr></table>' }; return $template; @@ -792,7 +803,7 @@ sub help_open_faq { my $title = &mt('View the FAQ'); my $faqicon=&lonhttpdurl("/adm/lonMisc/smallFAQ.gif"); $template .= <<"ENDTEMPLATE"; - <a href="$link" title="$title"><image src="$faqicon" border="0" alt="(FAQ: $topic)" /></a> + <a href="$link" title="$title"><img src="$faqicon" border="0" alt="(FAQ: $topic)" /></a> ENDTEMPLATE if ($text ne '') { $template.='</td></tr></table>' }; return $template; @@ -1729,21 +1740,26 @@ sub get_related_words { =over 4 -=item * plainname($uname,$udom) +=item * plainname($uname,$udom,$first) Takes a users logon name and returns it as a string in -"first middle last generation" form +"first middle last generation" form +if $first is set to 'lastname' then it returns it as +'lastname generation, firstname middlename' if their is a lastname =cut ############################################################### sub plainname { - my ($uname,$udom)=@_; + my ($uname,$udom,$first)=@_; my %names=&Apache::lonnet::get('environment', ['firstname','middlename','lastname','generation'], $udom,$uname); - my $name=$names{'firstname'}.' '.$names{'middlename'}.' '. - $names{'lastname'}.' '.$names{'generation'}; + my $name=&Apache::lonnet::format_name($names{'firstname'}, + $names{'middlename'}, + $names{'lastname'}, + $names{'generation'},$first); + $name=~s/^\s+//; $name=~s/\s+$//; $name=~s/\s+/ /g; if ($name !~ /\S/) { $name=$uname.'@'.$udom; } @@ -2506,7 +2522,7 @@ other decorations will be returned. =cut sub bodytag { - my ($title,$function,$addentries,$bodyonly,$domain,$forcereg)=@_; + my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle)=@_; $title=&mt($title); $function = &get_users_function() if (!$function); my $img=&designparm($function.'.img',$domain); @@ -2552,6 +2568,7 @@ END return $bodytag; } elsif ($ENV{'browser.interface'} eq 'textual') { # Accessibility + return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', $forcereg). '<h1>LON-CAPA: '.$title.'</h1>'; @@ -2573,15 +2590,23 @@ END </p> </td> ENDROLE + my $titleinfo = '<font face="Arial, Helvetica, sans-serif" size="+3" color="'. + $font.'"><b>'.$title.'</b></font>'; + if ($customtitle) { + $titleinfo = $customtitle; + } return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', $forcereg). - '<table bgcolor="'.$pgbg.'" width="100%" border="0" cellspacing="3" cellpadding="3"><tr><td rowspan="3" bgcolor="'.$tabbg.'"><font face="Arial, Helvetica, sans-serif" size="+3" color="'.$font.'"><b>'.$title. -'</b></font></td>'.$roleinfo.'</tr></table>'; + '<table bgcolor="'.$pgbg.'" width="100%" border="0" cellspacing="3" cellpadding="3"><tr><td rowspan="3" bgcolor="'.$tabbg.'">'.$titleinfo.'</td>'.$roleinfo.'</tr></table>'; } # # Top frame rendering, Remote is up # + my $titleinfo = ' <font size="5" face="Arial, Helvetica, sans-serif"><b>'.$title.'</b></font>'; + if ($customtitle) { + $titleinfo = $customtitle; + } return(<<ENDBODY); $bodytag <table width="100%" cellspacing="0" border="0" cellpadding="0"> @@ -2591,7 +2616,7 @@ $upperleft</td> </tr> <tr> <td rowspan="3" bgcolor="$tabbg"> - <font size="5" face="Arial, Helvetica, sans-serif"><b>$title</b></font> +$titleinfo <td bgcolor="$tabbg" align="right"> <font size="2" face="Arial, Helvetica, sans-serif"> $ENV{'environment.firstname'} @@ -3271,7 +3296,18 @@ sub DrawBarGraph { if (! @Values || ref($Values[0]) ne 'ARRAY') { return ''; } + # + my @Labels; + if (defined($labels)) { + @Labels = @$labels; + } else { + for (my $i=0;$i<@{$Values[0]};$i++) { + push (@Labels,$i+1); + } + } + # my $NumBars = scalar(@{$Values[0]}); + if ($NumBars < scalar(@Labels)) { $NumBars = scalar(@Labels); } my %ValuesHash; my $NumSets=1; foreach my $array (@Values) { @@ -3281,7 +3317,15 @@ sub DrawBarGraph { } # my ($height,$width,$xskip,$bar_width) = (200,120,1,15); - if ($NumBars < 10) { + if ($NumBars < 3) { + $width = 120+$NumBars*32; + $xskip = 1; + $bar_width = 30; + } elsif ($NumBars < 5) { + $width = 120+$NumBars*20; + $xskip = 1; + $bar_width = 20; + } elsif ($NumBars < 10) { $width = 120+$NumBars*15; $xskip = 1; $bar_width = 15; @@ -3299,15 +3343,6 @@ sub DrawBarGraph { $bar_width = 4; } # - my @Labels; - if (defined($labels)) { - @Labels = @$labels; - } else { - for (my $i=0;$i<@{$Values[0]};$i++) { - push (@Labels,$i+1); - } - } - # $Max = 1 if ($Max < 1); if ( int($Max) < $Max ) { $Max++; @@ -3564,8 +3599,8 @@ Inputs: sub chartlink { my ($linktext, $sname, $sdomain) = @_; my $link = '<a href="/adm/statistics?reportSelected=student_assessment'. - '&SelectedStudent='.&Apache::lonnet::escape($sname.':'.$sdomain). - '&chartoutputmode='.HTML::Entities::encode('html, with all links'). + '&SelectedStudent='.&Apache::lonnet::escape($sname.':'.$sdomain). + '&chartoutputmode='.HTML::Entities::encode('html, with all links'). '">'.$linktext.'</a>'; } @@ -3716,6 +3751,31 @@ sub connection_aborted { return $c->aborted(); } +# Escapes strings that may have embedded 's that will be put into +# strings as 'strings'. +sub escape_single { + my ($input) = @_; + $input =~ s/\\/\\\\/g; # Escape the \'s..(must be first)> + $input =~ s/\'/\\\'/g; # Esacpe the 's.... + return $input; +} + +# Same as escape_single, but escape's "'s This +# can be used for "strings" +sub escape_double { + my ($input) = @_; + $input =~ s/\\/\\\\/g; # Escape the /'s..(must be first)> + $input =~ s/\"/\\\"/g; # Esacpe the "s.... + return $input; +} + +# Escapes the last element of a full URL. +sub escape_url { + my ($url) = @_; + my @urlslices = split(/\//, $url); + my $lastitem = &Apache::lonnet::escape(pop(@urlslices)); + return join('/',@urlslices).'/'.$lastitem; +} =pod =back