--- loncom/interface/loncommon.pm	2002/08/08 13:43:04	1.51
+++ loncom/interface/loncommon.pm	2002/08/22 21:05:25	1.58
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.51 2002/08/08 13:43:04 www Exp $
+# $Id: loncommon.pm,v 1.58 2002/08/22 21:05:25 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -480,7 +480,7 @@ sub help_open_topic {
 
     # Add the graphic
     $template .= <<"ENDTEMPLATE";
-<a href="$link"><image src="/adm/help/gif/smallHelp.gif" border="0" alt="(Help: $topic)"></a>
+<a href="$link"><image src="/adm/help/gif/smallHelp.gif" border="0" alt="(Help: $topic)" /></a>
 ENDTEMPLATE
 
     return $template;
@@ -558,7 +558,7 @@ sub select_dom_form {
 
 =pod
 
-=item get_home_servers($domain)
+=item get_library_servers($domain)
 
 Returns a hash which contains keys like '103l3' and values like 
 'kirk.lite.msu.edu'.  All of the keys will be for machines in the
@@ -567,15 +567,15 @@ given $domain.
 =cut
 
 #-------------------------------------------
-sub get_home_servers {
+sub get_library_servers {
     my $domain = shift;
-    my %home_servers;
+    my %library_servers;
     foreach (keys(%Apache::lonnet::libserv)) {
         if ($Apache::lonnet::hostdom{$_} eq $domain) {
-            $home_servers{$_} = $Apache::lonnet::hostname{$_};
+            $library_servers{$_} = $Apache::lonnet::hostname{$_};
         }
     }
-    return %home_servers;
+    return %library_servers;
 }
 
 #-------------------------------------------
@@ -592,7 +592,7 @@ returns a string which contains an <opti
 #-------------------------------------------
 sub home_server_option_list {
     my $domain = shift;
-    my %servers = &get_home_servers($domain);
+    my %servers = &get_library_servers($domain);
     my $result = '';
     foreach (sort keys(%servers)) {
         $result.=
@@ -735,7 +735,7 @@ sub authform_nochange{
     my $result='';
     $result.=<<"END";
 <input type="radio" name="login" value="nochange" checked="checked"
-       onclick="javascript:changed_radio('nochange',$in{'formname'});">
+       onclick="javascript:changed_radio('nochange',$in{'formname'});" />
 Do not change login data
 END
     return $result;
@@ -751,10 +751,12 @@ sub authform_kerberos{
     $result.=<<"END";
 <input type="radio" name="login" value="krb" 
        onclick="javascript:changed_radio('krb',$in{'formname'});"
-       onchange="javascript:changed_radio('krb',$in{'formname'});">
+       onchange="javascript:changed_radio('krb',$in{'formname'});" />
 Kerberos authenticated with domain
 <input type="text" size="10" name="krbarg" value=""
-       onchange="javascript:changed_text('krb',$in{'formname'});">
+       onchange="javascript:changed_text('krb',$in{'formname'});" />
+<input type="radio" name="krbver" value="4" checked="on" />Version 4
+<input type="radio" name="krbver" value="5" />Version 5
 END
     return $result;
 }
@@ -769,10 +771,10 @@ sub authform_internal{
     $result.=<<"END";
 <input type="radio" name="login" value="int"
        onchange="javascript:changed_radio('int',$args{'formname'});"
-       onclick="javascript:changed_radio('int',$args{'formname'});">
+       onclick="javascript:changed_radio('int',$args{'formname'});" />
 Internally authenticated (with initial password 
 <input type="text" size="10" name="intarg" value=""
-       onchange="javascript:changed_text('int',$args{'formname'});">
+       onchange="javascript:changed_text('int',$args{'formname'});" />
 END
     return $result;
 }
@@ -787,10 +789,10 @@ sub authform_local{
     $result.=<<"END";
 <input type="radio" name="login" value="loc"
        onchange="javascript:changed_radio('loc',$in{'formname'});"
-       onclick="javascript:changed_radio('loc',$in{'formname'});"> 
+       onclick="javascript:changed_radio('loc',$in{'formname'});" />
 Local Authentication with argument
 <input type="text" size="10" name="locarg" value=""
-       onchange="javascript:changed_text('loc',$in{'formname'});">
+       onchange="javascript:changed_text('loc',$in{'formname'});" />
 END
     return $result;
 }
@@ -805,7 +807,7 @@ sub authform_filesystem{
     $result.=<<"END";
 <input type="radio" name="login" value="fsys" 
        onchange="javascript:changed_radio('fsys',$in{'formname'});"
-       onclick="javascript:changed_radio('fsys',$in{'formname'});"> 
+       onclick="javascript:changed_radio('fsys',$in{'formname'});" />
 Filesystem authenticated (with initial password 
 <input type="text" size="10" name="fsysarg" value=""
        onchange="javascript:changed_text('fsys',$in{'formname'});">
@@ -844,7 +846,7 @@ sub initialize_keywords {
     #   Set up the hash as a database
     my %thesaurus_db;
     if (! tie(%thesaurus_db,'GDBM_File',
-              $thesaurus_db_file,&GDBM_READER,0640)){
+              $thesaurus_db_file,&GDBM_READER(),0640)){
         &Apache::lonnet::logthis("Could not tie \%thesaurus_db to ".
                                  $thesaurus_db_file);
         return 0;
@@ -885,52 +887,6 @@ sub keyword {
     return exists($Keywords{$word});
 }
 
-###################################################
-#         Old code, to be removed soon            #
-###################################################
-# -------------------------------------------------------- Return related words
-#sub related {
-#    my $newword=shift;
-#    $newword=~s/\W//g;
-#    $newword=~tr/A-Z/a-z/;
-#    my $tindex=$theindex{$newword};
-#    if ($tindex) {
-#        my %found=();
-#        foreach (split(/\,/,$therelated[$tindex])) {
-## - Related word found
-#            my ($ridx,$rcount)=split(/\:/,$_);
-## - Direct relation index
-#            my $directrel=$rcount/$thecount[$tindex];
-#            if ($directrel>$thethreshold) {
-#               foreach (split(/\,/,$therelated[$ridx])) {
-#                  my ($rridx,$rrcount)=split(/\:/,$_);
-#                  if ($rridx==$tindex) {
-## - Determine reverse relation index
-#                     my $revrel=$rrcount/$thecount[$ridx];
-## - Calculate full index
-#                     $found{$ridx}=$directrel*$revrel;
-#                     if ($found{$ridx}>$thethreshold) {
-#                        foreach (split(/\,/,$therelated[$ridx])) {
-#                            my ($rrridx,$rrrcount)=split(/\:/,$_);
-#                            unless ($found{$rrridx}) {
-#                               my $revrevrel=$rrrcount/$thecount[$ridx];
-#                               if (
-#                          $directrel*$revrel*$revrevrel>$thethreshold
-#                               ) {
-#                                  $found{$rrridx}=
-#                                       $directrel*$revrel*$revrevrel;
-#                               }
-#                            }
-#                        }
-#                     }
-#                  }
-#               }
-#            }
-#        }
-#    }
-#    return ();
-#}
-
 ###############################################################
 
 =pod 
@@ -947,7 +903,6 @@ Uses global $thesaurus_db_file.
 =cut
 
 ###############################################################
-
 sub get_related_words {
     my $keyword = shift;
     my %thesaurus_db;
@@ -957,7 +912,7 @@ sub get_related_words {
         return ();
     }
     if (! tie(%thesaurus_db,'GDBM_File',
-              $thesaurus_db_file,&GDBM_READER,0640)){
+              $thesaurus_db_file,&GDBM_READER(),0640)){
         return ();
     } 
     my @Words=();
@@ -1194,6 +1149,99 @@ sub findallcourses {
 
 ###############################################
 
+sub bodytag {
+    my ($title,$function,$addentries)=@_;
+    unless ($function) {
+	$function='student';
+        if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) {
+	    $function='coordinator';
+        }
+	if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) {
+            $function='admin';
+        }
+        if (($ENV{'request.role'}=~/^(au|ca)/) ||
+            ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {
+            $function='author';
+        }
+    }
+    my $img='';
+    my $pgbg='';
+    my $tabbg='';
+    my $font='';
+    my $link='';
+    my $alink='#CC0000';
+    my $vlink='';
+    if ($function eq 'admin') {
+        $img='admin';
+        $pgbg='#FFFFCC';
+        $tabbg='#CCCC99';
+        $font='#772200';
+        $link='#663300';
+        $vlink='#666600';
+    } elsif ($function eq 'coordinator') {
+        $img='coordinator';
+        $pgbg='#CCFFFF';
+        $tabbg='#CCCCFF';
+        $font='#000044';
+        $link='#003333';
+        $vlink='#006633';
+   } elsif ($function eq 'author') {
+        $img='author';
+        $pgbg='#CCFFFF';
+        $tabbg='#CCFFCC';
+        $font='#004400';
+        $link='#003333';
+        $vlink='#006666';
+    } else {
+        $img='student';
+        $pgbg='#FFFFAA';
+        $tabbg='#FF9900';
+        $font='#991100';
+        $link='#993300';
+        $vlink='#996600';
+    }
+# role and realm
+    my ($role,$realm)
+       =&Apache::lonnet::plaintext((split(/\./,$ENV{'request.role'}))[0]);
+# realm
+    if ($ENV{'request.course.id'}) {
+	$realm=
+         $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
+    }
+    unless ($realm) { $realm='&nbsp;'; }
+# Set messages
+    my $messages=localtime();
+# Output
+    return(<<ENDBODY);
+<body bgcolor="$pgbg" text="$font" alink="$alink" vlink="$vlink" link="$link"
+$addentries>
+<table width="100%" cellspacing="0" border="0" cellpadding="0">
+<tr><td bgcolor="$font">
+<img src="/adm/lonInterFace/$img.jpg" /></td>
+<td bgcolor="$font"><font color='$pgbg'>$messages</font></td>
+</tr>
+<tr>
+<td rowspan="3" bgcolor="$tabbg">
+&nbsp;<font size="5"><b>$title</b></font>
+<td bgcolor="$tabbg"  align="right">
+<font size="2">
+    $ENV{'environment.firstname'}
+    $ENV{'environment.middlename'}
+    $ENV{'environment.lastname'}
+    $ENV{'environment.generation'}
+    </font>&nbsp;
+</td>
+</tr>
+<tr><td bgcolor="$tabbg" align="right">
+<font size="2">$role</font>&nbsp;
+</td></tr>
+<tr>
+<td bgcolor="$tabbg" align="right"><font size="2">$realm</font>&nbsp;</td></tr>
+</table><br>
+ENDBODY
+}
+###############################################
+
 sub get_unprocessed_cgi {
   my ($query,$possible_names)= @_;
   # $Apache::lonxml::debug=1;
@@ -1277,6 +1325,8 @@ sub upfile_store {
     return $datatoken;
 }
 
+=pod
+
 =item load_tmp_file($r)
 
 Load uploaded file from tmp, $r should be the HTTP Request object,
@@ -1298,6 +1348,8 @@ sub load_tmp_file {
     $ENV{'form.upfile'}=join('',@studentdata);
 }
 
+=pod
+
 =item upfile_record_sep()
 
 Separate uploaded file into records
@@ -1313,6 +1365,8 @@ sub upfile_record_sep {
     }
 }
 
+=pod
+
 =item record_sep($record)
 
 Separate a record into fields $record should be an item from the upfile_record_sep(), needs $ENV{'form.upfiletype'}
@@ -1363,6 +1417,8 @@ sub record_sep {
     return %components;
 }
 
+=pod
+
 =item upfile_select_html()
 
 return HTML code to select file and specify its type
@@ -1371,7 +1427,7 @@ return HTML code to select file and spec
 
 sub upfile_select_html {
     return (<<'ENDUPFORM');
-<input type="file" name="upfile" size="50">
+<input type="file" name="upfile" size="50" />
 <br />Type: <select name="upfiletype">
 <option value="csv">CSV (comma separated values, spreadsheet)</option>
 <option value="space">Space separated</option>
@@ -1381,6 +1437,8 @@ sub upfile_select_html {
 ENDUPFORM
 }
 
+=pod
+
 =item csv_print_samples($r,$records)
 
 Prints a table of sample values from each column uploaded $r is an
@@ -1411,6 +1469,8 @@ sub csv_print_samples {
     $r->print('</tr></table><br />'."\n");
 }
 
+=pod
+
 =item csv_print_select_table($r,$records,$d)
 
 Prints a table to create associations between values and table columns.
@@ -1443,6 +1503,8 @@ sub csv_print_select_table {
     return $i;
 }
 
+=pod
+
 =item csv_samples_select_table($r,$records,$d)
 
 Prints a table of sample values from the upload and can make associate samples to internal names.