--- loncom/interface/loncommon.pm	2003/09/17 16:50:58	1.119
+++ loncom/interface/loncommon.pm	2003/10/15 21:12:24	1.129
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.119 2003/09/17 16:50:58 www Exp $
+# $Id: loncommon.pm,v 1.129 2003/10/15 21:12:24 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -80,6 +80,7 @@ my $readit;
 
 # ----------------------------------------------- Filetypes/Languages/Copyright
 my %language;
+my %supported_language;
 my %cprtag;
 my %fe; my %fd;
 my %category_extensions;
@@ -146,8 +147,11 @@ BEGIN {
 	    while (<$fh>) {
 		next if /^\#/;
 		chomp;
-		my ($key,$two,$country,$three,$enc,$val)=(split(/\t/,$_));
+		my ($key,$two,$country,$three,$enc,$val,$sup)=(split(/\t/,$_));
 		$language{$key}=$val.' - '.$enc;
+		if ($sup) {
+		    $supported_language{$key}=$sup;
+		}
 	    }
 	}
     }
@@ -358,7 +362,8 @@ sub selectstudent_link {
 }
 
 sub coursebrowser_javascript {
-   return (<<'ENDSTDBRW');
+    my ($domainfilter)=@_;
+   return (<<ENDSTDBRW);
 <script type="text/javascript" language="Javascript" >
     var stdeditbrowser;
     function opencrsbrowser(formname,uname,udom) {
@@ -369,6 +374,12 @@ sub coursebrowser_javascript {
                url += 'filter='+filter+'&';
 	   }
         }
+        var domainfilter='$domainfilter';
+        if (domainfilter != null) {
+           if (domainfilter != '') {
+               url += 'domainfilter='+domainfilter+'&';
+	   }
+        }
         url += 'form=' + formname + '&cnumelement='+uname+
                                     '&cdomelement='+udom;
         var title = 'Course_Browser';
@@ -764,7 +775,13 @@ See lonrights.pm for an example invocati
 sub select_form {
     my ($def,$name,%hash) = @_;
     my $selectform = "<select name=\"$name\" size=\"1\">\n";
-    foreach (sort keys %hash) {
+    my @keys;
+    if (exists($hash{'select_form_order'})) {
+	@keys=@{$hash{'select_form_order'}};
+    } else {
+	@keys=sort(keys(%hash));
+    }
+    foreach (@keys) {
         $selectform.="<option value=\"$_\" ".
             ($_ eq $def ? 'selected' : '').
                 ">".&mt($hash{$_})."</option>\n";
@@ -1505,7 +1522,10 @@ returns description of a specified langu
 =cut
 
 sub languagedescription {
-    return $language{shift(@_)};
+    my $code=shift;
+    return  ($supported_language{$code}?'* ':'').
+            $language{$code}.
+	    ($supported_language{$code}?' ('.&mt('interface available').')':'');
 }
 
 =pod
@@ -1661,7 +1681,6 @@ sub preferred_languages {
 	    push (@genlanguages,(split(/(\-|\_)/,$_))[0]);
 	}
     }
-    &Apache::lonnet::logthis('Lang: '.join(',',@genlanguages));
     return @genlanguages;
 }
 
@@ -2322,6 +2341,14 @@ sub no_cache {
   #$r->header_out("Expires" => $date);
 }
 
+sub content_type {
+  my ($r,$type,$charset) = @_;
+  unless ($charset) {
+      $charset=&Apache::lonlocal::current_encoding;
+  }
+  $r->content_type($type.($charset?'; charset='.$charset:''));
+}
+
 =pod
 
 =item * add_to_env($name,$value) 
@@ -2645,6 +2672,61 @@ sub check_if_partid_hidden {
     return undef;
 }
 
+############################################################
+############################################################
+
+=pod
+
+=item DrawGraph
+
+Returns a link to cgi-bin/graph
+
+=cut
+
+############################################################
+############################################################
+sub DrawGraph {
+    my ($Title,$xlabel,$ylabel,$Max,$colors,@Values)=@_;
+    #
+    my $identifier = time.'_'.int(rand(1000));
+    if (! @Values || ref($Values[0]) ne 'ARRAY') {
+        return '';
+    }
+    my $NumBars = scalar(@{$Values[0]});
+    my %ValuesHash;
+    my $NumSets=1;
+    foreach my $array (@Values) {
+        next if (! ref($array));
+        $ValuesHash{$identifier.'.data.'.$NumSets++} = join(',',@$array);
+    }
+    #
+    $Title  = '' if (! defined($Title));
+    $xlabel = '' if (! defined($xlabel));
+    $ylabel = '' if (! defined($ylabel));
+    $Title  = &Apache::lonnet::escape($Title);
+    $xlabel = &Apache::lonnet::escape($xlabel);
+    $ylabel = &Apache::lonnet::escape($ylabel);
+    #
+    $Max = 1 if ($Max < 1);
+    if ( int($Max) < $Max ) {
+        $Max++;
+        $Max = int($Max);
+    }
+    #
+    &Apache::lonnet::appenv($identifier.'.title'   => $Title,
+                            $identifier.'.xlabel'  => $xlabel,
+                            $identifier.'.ylabel'  => $ylabel,
+                            $identifier.'.Max'     => $Max,
+                            $identifier.'.NumBars' => $NumBars,
+                            $identifier.'.NumSets' => $NumSets,
+                            $identifier.'.Colors'  => join(',',@{$colors}),
+                            %ValuesHash);
+    return '<IMG src="/cgi-bin/graph.png?'.$identifier.'" border="1" />';
+}
+
+############################################################
+############################################################
+
 =pod
 
 =back