--- loncom/interface/loncommon.pm	2004/11/02 19:01:12	1.225
+++ loncom/interface/loncommon.pm	2004/11/12 23:29:56	1.230
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.225 2004/11/02 19:01:12 matthew Exp $
+# $Id: loncommon.pm,v 1.230 2004/11/12 23:29:56 raeburn 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;
@@ -376,9 +375,10 @@ sub selectstudent_link {
 }
 
 sub coursebrowser_javascript {
-    my ($domainfilter)=@_;
+    my ($domainfilter,$roleelement)=@_;
    return (<<ENDSTDBRW);
 <script type="text/javascript" language="Javascript" >
+    var extra_element = "$roleelement" 
     var stdeditbrowser;
     function opencrsbrowser(formname,uname,udom,desc) {
         var url = '/adm/pickcourse?';
@@ -397,6 +397,9 @@ sub coursebrowser_javascript {
         url += 'form=' + formname + '&cnumelement='+uname+
 	                            '&cdomelement='+udom+
                                     '&cnameelement='+desc;
+        if (extra_element != '') {
+            url += '&roleelement=$roleelement';
+        }
         var title = 'Course_Browser';
         var options = 'scrollbars=1,resizable=1,menubar=0';
         options += ',width=700,height=600';
@@ -663,6 +666,7 @@ sub help_open_menu {
     my $link='';
     my $title = &mt('Get help');
     my $origurl = $ENV{'REQUEST_URI'};
+    $origurl=~s|^/~|/priv/|;
     my $timestamp = time;
     foreach (\$color,\$function,\$topic,\$component_help,\$faq,\$bug,\$origurl) {
         $$_ = &Apache::lonnet::escape($$_);
@@ -1741,21 +1745,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; }
@@ -2587,10 +2596,27 @@ END
 </td>
 ENDROLE
         my $titleinfo = '<font face="Arial, Helvetica, sans-serif" size="+3" color="'.
-                        $font.'"><b>'.$title.'</b></font>';
+		$font.'"><b>'.$title.'</b></font>';
         if ($customtitle) {
             $titleinfo = $customtitle;
         } 
+	if ($ENV{'request.state'} eq 'construct') {
+	    my ($uname,$thisdisfn)=
+		($ENV{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|);
+	    my $formaction='/priv/'.$uname.'/'.$thisdisfn;
+	    $formaction=~s/\/+/\//g;
+	    $titleinfo = '<form name="dirs" method="post" action="'.$formaction
+		.'" target="_top">'
+		.&Apache::lonhtmlcommon::crumbs($uname.'/'.$thisdisfn,'_top','/priv','','-1')
+		.&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()')
+		.'</form>'
+		.&Apache::lonmenu::constspaceform();
+
+	    &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
+	    if ($thisdisfn!~m|/$|) {  $forcereg=1; }
+	}
+
+	&Apache::lonnet::logthis("hrrm");
         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.'">'.$titleinfo.'</td>'.$roleinfo.'</tr></table>';
@@ -3286,6 +3312,10 @@ sub DrawBarGraph {
                   '#66ccff', '#ff9999', '#cccc33', '#660000', '#33cc66',
                   ]; 
     }
+    my $extra_settings = {};
+    if (ref($Values[-1]) eq 'HASH') {
+        $extra_settings = pop(@Values);
+    }
     #
     my $identifier = &get_cgi_id();
     my $id = 'cgi.'.$identifier;        
@@ -3361,6 +3391,11 @@ sub DrawBarGraph {
     $ValuesHash{$id.'.bar_width'} = $bar_width;
     $ValuesHash{$id.'.labels'} = join(',',@Labels);
     #
+    # Deal with other parameters
+    while (my ($key,$value) = each(%$extra_settings)) {
+        $ValuesHash{$id.'.'.$key} = $value;
+    }
+    #
     &Apache::lonnet::appenv(%ValuesHash);
     return '<img src="/cgi-bin/graph.png?'.$identifier.'" border="1" />';
 }