--- loncom/interface/loncommon.pm 2004/09/29 19:13:20 1.215
+++ 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.215 2004/09/29 19:13:20 albertel 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;
@@ -254,6 +253,7 @@ sub browser_and_searcher_javascript {
if (!defined($mode)) { $mode='edit'; }
my $resurl=&lastresurl();
return <
END
}
@@ -366,9 +375,10 @@ sub selectstudent_link {
}
sub coursebrowser_javascript {
- my ($domainfilter)=@_;
+ my ($domainfilter,$roleelement)=@_;
return (<
+ var extra_element = "$roleelement"
var stdeditbrowser;
function opencrsbrowser(formname,uname,udom,desc) {
var url = '/adm/pickcourse?';
@@ -387,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';
@@ -483,7 +496,7 @@ sub linked_select_forms {
my $first = "document.$formname.$firstselectname";
# output the javascript to do the changing
my $result = '';
- $result.="
-
+
ENDTEMPLATE
if ($component_help) {
if (!$text) {
@@ -747,7 +763,7 @@ sub help_open_bug {
my $title = &mt('Report a Bug');
my $bugicon=&lonhttpdurl("/adm/lonMisc/smallBug.gif");
$template .= <<"ENDTEMPLATE";
-
+
ENDTEMPLATE
if ($text ne '') { $template.='' };
return $template;
@@ -792,7 +808,7 @@ sub help_open_faq {
my $title = &mt('View the FAQ');
my $faqicon=&lonhttpdurl("/adm/lonMisc/smallFAQ.gif");
$template .= <<"ENDTEMPLATE";
-
+
ENDTEMPLATE
if ($text ne '') { $template.='' };
return $template;
@@ -1729,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; }
@@ -2506,7 +2527,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 +2573,7 @@ END
return $bodytag;
} elsif ($ENV{'browser.interface'} eq 'textual') {
# Accessibility
+
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web',
$forcereg).
'LON-CAPA: '.$title.'
';
@@ -2573,15 +2595,40 @@ END
ENDROLE
+ my $titleinfo = ''.$title.'';
+ 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 = ''
+ .&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).
- ''.$title.
-' | '.$roleinfo.'
';
+ ''.$titleinfo.' | '.$roleinfo.'
';
}
#
# Top frame rendering, Remote is up
#
+ my $titleinfo = ' '.$title.'';
+ if ($customtitle) {
+ $titleinfo = $customtitle;
+ }
return(<
@@ -2591,7 +2638,7 @@ $upperleft
- $title
+$titleinfo
|
$ENV{'environment.firstname'}
@@ -2747,12 +2794,12 @@ returns cache-controlling header code
=cut
sub cacheheader {
- unless ($ENV{'request.method'} eq 'GET') { return ''; }
- my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
- my $output .='
+ unless ($ENV{'request.method'} eq 'GET') { return ''; }
+ my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
+ my $output .='
';
- return $output;
+ return $output;
}
=pod
@@ -2764,12 +2811,13 @@ specifies header code to not have cache
=cut
sub no_cache {
- my ($r) = @_;
- unless ($ENV{'request.method'} eq 'GET') { return ''; }
- #my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
- $r->no_cache(1);
- $r->header_out("Pragma" => "no-cache");
- #$r->header_out("Expires" => $date);
+ my ($r) = @_;
+ if ($ENV{'REQUEST_METHOD'} ne 'GET' &&
+ $ENV{'request.method'} ne 'GET') { return ''; }
+ my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime(time));
+ $r->no_cache(1);
+ $r->header_out("Expires" => $date);
+ $r->header_out("Pragma" => "no-cache");
}
sub content_type {
@@ -3264,13 +3312,28 @@ 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;
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) {
@@ -3280,7 +3343,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;
@@ -3298,15 +3369,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++;
@@ -3329,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 ' ';
}
@@ -3563,8 +3630,8 @@ Inputs:
sub chartlink {
my ($linktext, $sname, $sdomain) = @_;
my $link = ''.$linktext.'';
}
@@ -3715,6 +3782,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
|