--- loncom/interface/loncommon.pm 2004/04/30 23:04:53 1.190 +++ loncom/interface/loncommon.pm 2004/09/24 22:08:02 1.205.2.2 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.190 2004/04/30 23:04:53 albertel Exp $ +# $Id: loncommon.pm,v 1.205.2.2 2004/09/24 22:08:02 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -74,6 +74,7 @@ my $readit; my %language; my %supported_language; my %cprtag; +my %scprtag; my %fe; my %fd; my %category_extensions; @@ -131,6 +132,20 @@ BEGIN { close($fh); } } +# ------------------------------------------------------------------ source copyrights + { + my $sourcecopyrightfile = $Apache::lonnet::perlvar{'lonIncludes'}. + '/source_copyright.tab'; + if ( open (my $fh,"<$sourcecopyrightfile") ) { + while (<$fh>) { + next if /^\#/; + chomp; + my ($key,$val)=(split(/\s+/,$_,2)); + $scprtag{$key}=$val; + } + close($fh); + } + } # -------------------------------------------------------------- domain designs @@ -235,6 +250,8 @@ of the element the selection from the se =cut sub browser_and_searcher_javascript { + my ($mode)=@_; + if (!defined($mode)) { $mode='edit'; } my $resurl=&lastresurl(); return <<END; var editbrowser = null; @@ -244,7 +261,7 @@ sub browser_and_searcher_javascript { url += 'launch=1&'; } url += 'catalogmode=interactive&'; - url += 'mode=edit&'; + url += 'mode=$mode&'; url += 'form=' + formname + '&'; if (only != null) { url += 'only=' + only + '&'; @@ -269,7 +286,7 @@ sub browser_and_searcher_javascript { url += 'launch=1&'; } url += 'catalogmode=interactive&'; - url += 'mode=edit&'; + url += 'mode=$mode&'; url += 'form=' + formname + '&'; if (titleelement != null) { url += 'titleelement=' + titleelement + '&'; @@ -622,6 +639,74 @@ sub helpLatexCheatsheet { .'</td></tr></table>'; } +sub help_open_menu { + my ($color,$topic,$component_help,$function,$faq,$bug,$stayOnPage,$width,$height,$text) = @_; + $text = "" if (not defined $text); + $stayOnPage = 0 if (not defined $stayOnPage); + if ($ENV{'browser.interface'} eq 'textual' || + $ENV{'environment.remote'} eq 'off' ) { + $stayOnPage=1; + } + $width = 620 if (not defined $width); + $height = 600 if (not defined $height); + my $link=''; + my $title = &mt('Get help'); + my $origurl = $ENV{'REQUEST_URI'}; + my $timestamp = time; + foreach (\$color,\$function,\$topic,\$component_help,\$faq,\$bug,\$origurl) { + $$_ = &Apache::lonnet::escape($$_); + } + + if (!$stayOnPage) { + $link = "javascript:helpMenu('open')"; + } else { + $link = "javascript:helpMenu('display')"; + } + my $banner_link = "/adm/helpmenu?page=banner&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; + my $details_link = "/adm/helpmenu?page=body&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp"; + my $template; + if ($text ne "") { + $template .= + "<table bgcolor='#337733' cellspacing='1' cellpadding='1' border='0'><tr>". + "<td bgcolor='#448844'><a href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; + } + $template .= <<"ENDTEMPLATE"; + <script> +function helpMenu(caller) { + if (caller == 'open') { + newWindow = window.open("","helpmenu","HEIGHT=$height,WIDTH=$width,resize=yes,scrollbars=yes" ) + caller = newWindow.document + } else { + caller = this.document + } + caller.write("<html><head><title>LON-CAPA Help Menu</title><meta http-equiv='pragma' content='no-cache'></head>") + caller.write("<frameset rows='105,*' border='0'><frame name='bannerframe' src='$banner_link'><frame name='bodyframe' src='$details_link'></frameset>") + caller.write("</html>") + caller.close() + if (caller == newWindow.document) { + caller.focus() + } +} + </script> + <a href="$link" title="$title"><image src="/adm/lonIcons/helpgateway.gif" border="0" alt="(Help Menu)" /></a> +ENDTEMPLATE + if ($component_help) { + if (!$text) { + $template=&help_open_topic($component_help,undef,$stayOnPage, + $width,$height).' '.$template; + } else { + my $help_text; + $help_text=&Apache::lonnet::unescape($topic); + $template='<table><tr><td>'. + &help_open_topic($component_help,$help_text,$stayOnPage, + $width,$height).'</td><td>'.$template. + '</td></tr></table>'; + } + } + if ($text ne '') { $template.='</td></tr></table>' }; + return $template; +} + sub help_open_bug { my ($topic, $text, $stayOnPage, $width, $height) = @_; unless ($ENV{'user.adv'}) { return ''; } @@ -907,21 +992,27 @@ sub domain_select { } &get_domains; if ($multiple) { $domains{''}=&mt('Any domain'); - return &multiple_select_form($name,$value,%domains); + return &multiple_select_form($name,$value,4,%domains); } else { return &select_form($name,$value,%domains); } } sub multiple_select_form { - my ($name,$value,%hash)=@_; + my ($name,$value,$size,%hash)=@_; my %selected = map { $_ => 1 } ref($value)?@{$value}:($value); my $output=''; - my $size =(scalar keys %hash<4?scalar keys %hash:4); + if (! defined($size)) { + $size = 4; + if (scalar(keys(%hash))<4) { + $size = scalar(keys(%hash)); + } + } $output.="\n<select name='$name' size='$size' multiple='1'>"; - foreach (sort keys %hash) { - $output.="<option name='$_'". - ($selected{$_}?' selected="1"' :'').">$hash{$_}</option>\n"; + foreach (sort(keys(%hash))) { + $output.='<option value="'.$_.'" '; + $output.='selected ' if ($selected{$_}); + $output.='>'.$hash{$_}."</option>\n"; } $output.="</select>\n"; return $output; @@ -1709,9 +1800,11 @@ sub screenname { # ------------------------------------------------------------- Message Wrapper sub messagewrapper { - my ($link,$un,$do)=@_; + my ($link,$username,$domain)=@_; return -"<a href='/adm/email?compose=individual&recname=$un&recdom=$do'>$link</a>"; + '<a href="/adm/email?compose=individual&'. + 'recname='.$username.'&recdom='.$domain.'" '. + 'title="'.&mt('Send message').'">'.$link.'</a>'; } # --------------------------------------------------------------- Notes Wrapper @@ -1724,8 +1817,8 @@ sub noteswrapper { sub aboutmewrapper { my ($link,$username,$domain,$target)=@_; - return "<a href='/adm/$domain/$username/aboutme'". - ($target?" target='$target'":'').">$link</a>"; + return '<a href="/adm/'.$domain.'/'.$username.'/aboutme"'. + ($target?' target="$target"':'').' title="'.&mt('View this users personal page').'">'.$link.'</a>'; } # ------------------------------------------------------------ Syllabus Wrapper @@ -1808,6 +1901,30 @@ sub copyrightdescription { =pod +=item * source_copyrightids() + +returns list of all source copyrights + +=cut + +sub source_copyrightids { + return sort(keys(%scprtag)); +} + +=pod + +=item * source_copyrightdescription() + +returns description of a specified source copyright id + +=cut + +sub source_copyrightdescription { + return &mt($scprtag{shift(@_)}); +} + +=pod + =item * filecategories() returns list of all file categories @@ -2439,7 +2556,7 @@ $upperleft</td> </td></tr> <tr> <td bgcolor="$tabbg" align="right"><font size="2" face="Arial, Helvetica, sans-serif">$realm</font> </td></tr> -</table><br> +</table><br /> ENDBODY } @@ -3534,6 +3651,13 @@ sub icon { return $iconname; } +sub connection_aborted { + my ($r)=@_; + $r->print(" ");$r->rflush(); + my $c = $r->connection; + return $c->aborted(); +} + =pod =back