version 1.945, 2010/02/28 22:56:23
|
version 1.981, 2010/09/24 13:15:41
|
Line 900 sub select_language {
|
Line 900 sub select_language {
|
$langchoices{$code} = &plainlanguagedescription($id); |
$langchoices{$code} = &plainlanguagedescription($id); |
} |
} |
} |
} |
return &select_form($selected,$name,%langchoices); |
return &select_form($selected,$name,\%langchoices); |
} |
} |
|
|
=pod |
=pod |
Line 1072 END
|
Line 1072 END
|
|
|
=pod |
=pod |
|
|
=item * &help_open_topic($topic,$text,$stayOnPage,$width,$height) |
=item * &help_open_topic($topic,$text,$stayOnPage,$width,$height,$imgid) |
|
|
Returns a string corresponding to an HTML link to the given help |
Returns a string corresponding to an HTML link to the given help |
$topic, where $topic corresponds to the name of a .tex file in |
$topic, where $topic corresponds to the name of a .tex file in |
Line 1090 a new window using Javascript. (Default
|
Line 1090 a new window using Javascript. (Default
|
|
|
$width and $height are optional numerical parameters that will |
$width and $height are optional numerical parameters that will |
override the width and height of the popped up window, which may |
override the width and height of the popped up window, which may |
be useful for certain help topics with big pictures included. |
be useful for certain help topics with big pictures included. |
|
|
|
$imgid is the id of the img tag used for the help icon. This may be |
|
used in a javascript call to switch the image src. See |
|
lonhtmlcommon::htmlareaselectactive() for an example. |
|
|
=cut |
=cut |
|
|
sub help_open_topic { |
sub help_open_topic { |
my ($topic, $text, $stayOnPage, $width, $height) = @_; |
my ($topic, $text, $stayOnPage, $width, $height, $imgid) = @_; |
$text = "" if (not defined $text); |
$text = "" if (not defined $text); |
$stayOnPage = 0 if (not defined $stayOnPage); |
$stayOnPage = 0 if (not defined $stayOnPage); |
$width = 350 if (not defined $width); |
$width = 350 if (not defined $width); |
Line 1124 sub help_open_topic {
|
Line 1128 sub help_open_topic {
|
# (Always) Add the graphic |
# (Always) Add the graphic |
my $title = &mt('Online Help'); |
my $title = &mt('Online Help'); |
my $helpicon=&lonhttpdurl("/adm/help/help.png"); |
my $helpicon=&lonhttpdurl("/adm/help/help.png"); |
|
if ($imgid ne '') { |
|
$imgid = ' id="'.$imgid.'"'; |
|
} |
$template.=' <a target="_top" href="'.$link.'" title="'.$title.'">' |
$template.=' <a target="_top" href="'.$link.'" title="'.$title.'">' |
.'<img src="'.$helpicon.'" border="0"' |
.'<img src="'.$helpicon.'" border="0"' |
.' alt="'.&mt('Help: [_1]',$topic).'"' |
.' alt="'.&mt('Help: [_1]',$topic).'"' |
.' title="'.$title.'" style="vertical-align:middle;"' |
.' title="'.$title.'" style="vertical-align:middle;"'.$imgid |
.' /></a>'; |
.' /></a>'; |
if ($text ne "") { |
if ($text ne "") { |
$template.='</span>'; |
$template.='</span>'; |
Line 1202 ENDOUTPUT
|
Line 1209 ENDOUTPUT
|
sub help_open_menu { |
sub help_open_menu { |
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) |
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) |
= @_; |
= @_; |
$stayOnPage = 0 if (not defined $stayOnPage); |
$stayOnPage = 1; |
# only use pop-up help (stayOnPage == 0) |
|
# if environment.remote is on (using remote control UI) |
|
if ($env{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
|
} |
|
my $output; |
my $output; |
if ($component_help) { |
if ($component_help) { |
if (!$text) { |
if (!$text) { |
Line 1228 sub help_open_menu {
|
Line 1230 sub help_open_menu {
|
sub top_nav_help { |
sub top_nav_help { |
my ($text) = @_; |
my ($text) = @_; |
$text = &mt($text); |
$text = &mt($text); |
my $stay_on_page = |
my $stay_on_page = 1; |
($env{'environment.remote'} eq 'off' ); |
|
my $link = ($stay_on_page) ? "javascript:helpMenu('display')" |
my $link = ($stay_on_page) ? "javascript:helpMenu('display')" |
: "javascript:helpMenu('open')"; |
: "javascript:helpMenu('open')"; |
my $banner_link = &update_help_link(undef,undef,undef,undef,$stay_on_page); |
my $banner_link = &update_help_link(undef,undef,undef,undef,$stay_on_page); |
Line 1244 END
|
Line 1246 END
|
|
|
sub help_menu_js { |
sub help_menu_js { |
my ($text) = @_; |
my ($text) = @_; |
|
my $stayOnPage = 1; |
my $stayOnPage = |
|
($env{'environment.remote'} eq 'off' ); |
|
|
|
my $width = 620; |
my $width = 620; |
my $height = 600; |
my $height = 600; |
my $helptopic=&general_help(); |
my $helptopic=&general_help(); |
Line 1304 sub help_open_bug {
|
Line 1303 sub help_open_bug {
|
unless ($env{'user.adv'}) { return ''; } |
unless ($env{'user.adv'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'BugzillaHost'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'BugzillaHost'}) { return ''; } |
$text = "" if (not defined $text); |
$text = "" if (not defined $text); |
$stayOnPage = 0 if (not defined $stayOnPage); |
|
if ($env{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
$stayOnPage=1; |
} |
|
$width = 600 if (not defined $width); |
$width = 600 if (not defined $width); |
$height = 600 if (not defined $height); |
$height = 600 if (not defined $height); |
|
|
Line 1348 sub help_open_faq {
|
Line 1344 sub help_open_faq {
|
unless ($env{'user.adv'}) { return ''; } |
unless ($env{'user.adv'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'FAQHost'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'FAQHost'}) { return ''; } |
$text = "" if (not defined $text); |
$text = "" if (not defined $text); |
$stayOnPage = 0 if (not defined $stayOnPage); |
|
if ($env{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
$stayOnPage=1; |
} |
|
$width = 350 if (not defined $width); |
$width = 350 if (not defined $width); |
$height = 400 if (not defined $height); |
$height = 400 if (not defined $height); |
|
|
Line 1800 sub domain_select {
|
Line 1793 sub domain_select {
|
return &multiple_select_form($name,$value,4,\%domains); |
return &multiple_select_form($name,$value,4,\%domains); |
} else { |
} else { |
$domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))]; |
$domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))]; |
return &select_form($name,$value,%domains); |
return &select_form($name,$value,\%domains); |
} |
} |
} |
} |
|
|
Line 1862 sub multiple_select_form {
|
Line 1855 sub multiple_select_form {
|
|
|
=pod |
=pod |
|
|
=item * &select_form($defdom,$name,%hash) |
=item * &select_form($defdom,$name,$hashref,$onchange) |
|
|
Returns a string containing a <select name='$name' size='1'> form to |
Returns a string containing a <select name='$name' size='1'> form to |
allow a user to select options from a hash option_name => displayed text. |
allow a user to select options from a ref to a hash containing: |
|
option_name => displayed text. An optional $onchange can include |
|
a javascript onchange item, e.g., onchange="this.form.submit();" |
|
|
See lonrights.pm for an example invocation and use. |
See lonrights.pm for an example invocation and use. |
|
|
=cut |
=cut |
|
|
#------------------------------------------- |
#------------------------------------------- |
sub select_form { |
sub select_form { |
my ($def,$name,%hash) = @_; |
my ($def,$name,$hashref,$onchange) = @_; |
my $selectform = "<select name=\"$name\" size=\"1\">\n"; |
return unless (ref($hashref) eq 'HASH'); |
|
if ($onchange) { |
|
$onchange = ' onchange="'.$onchange.'"'; |
|
} |
|
my $selectform = "<select name=\"$name\" size=\"1\"$onchange>\n"; |
my @keys; |
my @keys; |
if (exists($hash{'select_form_order'})) { |
if (exists($hashref->{'select_form_order'})) { |
@keys=@{$hash{'select_form_order'}}; |
@keys=@{$hashref->{'select_form_order'}}; |
} else { |
} else { |
@keys=sort(keys(%hash)); |
@keys=sort(keys(%{$hashref})); |
} |
} |
foreach my $key (@keys) { |
foreach my $key (@keys) { |
$selectform.= |
$selectform.= |
'<option value="'.&HTML::Entities::encode($key,'"<>&').'" '. |
'<option value="'.&HTML::Entities::encode($key,'"<>&').'" '. |
($key eq $def ? 'selected="selected" ' : ''). |
($key eq $def ? 'selected="selected" ' : ''). |
">".$hash{$key}."</option>\n"; |
">".$hashref->{$key}."</option>\n"; |
} |
} |
$selectform.="</select>"; |
$selectform.="</select>"; |
return $selectform; |
return $selectform; |
Line 1902 sub display_filter {
|
Line 1902 sub display_filter {
|
&mt('Filter [_1]', |
&mt('Filter [_1]', |
&select_form($env{'form.displayfilter'}, |
&select_form($env{'form.displayfilter'}, |
'displayfilter', |
'displayfilter', |
('currentfolder' => 'Current folder/page', |
{'currentfolder' => 'Current folder/page', |
'containing' => 'Containing phrase', |
'containing' => 'Containing phrase', |
'none' => 'None'))). |
'none' => 'None'})). |
'<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></span>'; |
'<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></span>'; |
} |
} |
|
|
Line 3246 sub filemimetype {
|
Line 3246 sub filemimetype {
|
sub filecategoryselect { |
sub filecategoryselect { |
my ($name,$value)=@_; |
my ($name,$value)=@_; |
return &select_form($value,$name, |
return &select_form($value,$name, |
'' => &mt('Any category'), |
{'' => &mt('Any category'), map { $_,$_ } sort(keys(%category_extensions))}); |
map { $_,$_ } sort(keys(%category_extensions))); |
|
} |
} |
|
|
=pod |
=pod |
Line 3412 sub get_previous_attempt {
|
Line 3411 sub get_previous_attempt {
|
} |
} |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts.='<th>'.&mt('History').'</th>'; |
$prevattempts.='<th>'.&mt('History').'</th>'; |
my %typeparts; |
my (%typeparts,%lasthidden); |
my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); |
my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $key (sort(keys(%lasthash))) { |
my ($ign,@parts) = split(/\./,$key); |
my ($ign,@parts) = split(/\./,$key); |
Line 3423 sub get_previous_attempt {
|
Line 3422 sub get_previous_attempt {
|
unless ($showsurv) { |
unless ($showsurv) { |
my $id = join(',',@parts); |
my $id = join(',',@parts); |
$typeparts{$ign.'.'.$id} = $lasthash{$key}; |
$typeparts{$ign.'.'.$id} = $lasthash{$key}; |
|
if (($lasthash{$key} eq 'anonsurvey') || ($lasthash{$key} eq 'anonsurveycred')) { |
|
$lasthidden{$ign.'.'.$id} = 1; |
|
} |
} |
} |
delete($lasthash{$key}); |
delete($lasthash{$key}); |
} else { |
} else { |
Line 3437 sub get_previous_attempt {
|
Line 3439 sub get_previous_attempt {
|
} |
} |
} |
} |
$prevattempts.=&end_data_table_header_row(); |
$prevattempts.=&end_data_table_header_row(); |
my %lasthidden; |
|
if ($getattempt eq '') { |
if ($getattempt eq '') { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
my @hidden; |
my @hidden; |
Line 3445 sub get_previous_attempt {
|
Line 3446 sub get_previous_attempt {
|
foreach my $id (keys(%typeparts)) { |
foreach my $id (keys(%typeparts)) { |
if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { |
if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { |
push(@hidden,$id); |
push(@hidden,$id); |
$lasthidden{$id} = 1; |
|
} elsif ($lasthidden{$id}) { |
|
if (exists($returnhash{$version.':'.$id.'.award'})) { |
|
delete($lasthidden{$id}); |
|
} |
|
} |
} |
} |
} |
} |
} |
Line 3701 sub submlink {
|
Line 3697 sub submlink {
|
} |
} |
if (!$symb) { $symb=&Apache::lonnet::symbread(); } |
if (!$symb) { $symb=&Apache::lonnet::symbread(); } |
$symb=&escape($symb); |
$symb=&escape($symb); |
if ($target) { $target="target=\"$target\""; } |
if ($target) { $target=" target=\"$target\""; } |
return '<a href="/adm/grades?&command=submission&'. |
return |
'symb='.$symb.'&student='.$uname. |
'<a href="/adm/grades?command=submission'. |
'&userdom='.$udom.'" '.$target.'>'.$text.'</a>'; |
'&symb='.$symb. |
|
'&student='.$uname. |
|
'&userdom='.$udom.'"'. |
|
$target.'>'.$text.'</a>'; |
} |
} |
############################################## |
############################################## |
|
|
Line 4231 sub get_domainconf {
|
Line 4230 sub get_domainconf {
|
if (defined($cached)) { return %{$result}; } |
if (defined($cached)) { return %{$result}; } |
|
|
my %domconfig = &Apache::lonnet::get_dom('configuration', |
my %domconfig = &Apache::lonnet::get_dom('configuration', |
['login','rolecolors'],$udom); |
['login','rolecolors','autoenroll'],$udom); |
my (%designhash,%legacy); |
my (%designhash,%legacy); |
if (keys(%domconfig) > 0) { |
if (keys(%domconfig) > 0) { |
if (ref($domconfig{'login'}) eq 'HASH') { |
if (ref($domconfig{'login'}) eq 'HASH') { |
if (keys(%{$domconfig{'login'}})) { |
if (keys(%{$domconfig{'login'}})) { |
foreach my $key (keys(%{$domconfig{'login'}})) { |
foreach my $key (keys(%{$domconfig{'login'}})) { |
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
foreach my $img (keys(%{$domconfig{'login'}{$key}})) { |
if ($key eq 'loginvia') { |
$designhash{$udom.'.login.'.$key.'_'.$img} = |
if (ref($domconfig{'login'}{'loginvia'}) eq 'HASH') { |
$domconfig{'login'}{$key}{$img}; |
my @ids = &Apache::lonnet::current_machine_ids(); |
|
foreach my $hostname (@ids) { |
|
if (ref($domconfig{'login'}{'loginvia'}{$hostname}) eq 'HASH') { |
|
if ($domconfig{'login'}{'loginvia'}{$hostname}{'server'}) { |
|
my $server = $domconfig{'login'}{'loginvia'}{$hostname}{'server'}; |
|
$designhash{$udom.'.login.loginvia'} = $server; |
|
if ($domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'} eq 'custom') { |
|
|
|
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'custompath'}; |
|
} else { |
|
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'}; |
|
} |
|
if ($domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}) { |
|
$designhash{$udom.'.login.loginvia_exempt_'.$hostname} = $domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
foreach my $img (keys(%{$domconfig{'login'}{$key}})) { |
|
$designhash{$udom.'.login.'.$key.'_'.$img} = |
|
$domconfig{'login'}{$key}{$img}; |
|
} |
} |
} |
} else { |
} else { |
$designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; |
$designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; |
Line 4267 sub get_domainconf {
|
Line 4289 sub get_domainconf {
|
} else { |
} else { |
$legacy{'rolecolors'} = 1; |
$legacy{'rolecolors'} = 1; |
} |
} |
|
if (ref($domconfig{'autoenroll'}) eq 'HASH') { |
|
if ($domconfig{'autoenroll'}{'co-owners'}) { |
|
$designhash{$udom.'.autoassign.co-owners'}=$domconfig{'autoenroll'}{'co-owners'}; |
|
} |
|
} |
if (keys(%legacy) > 0) { |
if (keys(%legacy) > 0) { |
my %legacyhash = &get_legacy_domconf($udom); |
my %legacyhash = &get_legacy_domconf($udom); |
foreach my $item (keys(%legacyhash)) { |
foreach my $item (keys(%legacyhash)) { |
Line 4522 Inputs:
|
Line 4549 Inputs:
|
|
|
=item * $bgcolor, used to override the bgcolor on a webpage to a specific value |
=item * $bgcolor, used to override the bgcolor on a webpage to a specific value |
|
|
=item * $no_inline_link, if true and in remote mode, don't show the |
|
'Switch To Inline Menu' link |
|
|
|
=item * $args, optional argument valid values are |
=item * $args, optional argument valid values are |
no_auto_mt_title -> prevents &mt()ing the title arg |
no_auto_mt_title -> prevents &mt()ing the title arg |
inherit_jsmath -> when creating popup window in a page, |
inherit_jsmath -> when creating popup window in a page, |
Line 4542 other decorations will be returned.
|
Line 4566 other decorations will be returned.
|
|
|
sub bodytag { |
sub bodytag { |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, |
$no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; |
$no_nav_bar,$bgcolor,$args)=@_; |
|
|
|
my $public; |
|
if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) |
|
|| ($env{'user.name'} eq '') && ($env{'user.domain'} eq '')) { |
|
$public = 1; |
|
} |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
|
|
$function = &get_users_function() if (!$function); |
$function = &get_users_function() if (!$function); |
Line 4579 sub bodytag {
|
Line 4608 sub bodytag {
|
} |
} |
|
|
if (!$realm) { $realm=' '; } |
if (!$realm) { $realm=' '; } |
# Set messages |
|
my $messages=&domainlogo($domain); |
|
|
|
my $extra_body_attr = &make_attr_string($forcereg,\%design); |
my $extra_body_attr = &make_attr_string($forcereg,\%design); |
|
|
Line 4593 sub bodytag {
|
Line 4620 sub bodytag {
|
} |
} |
|
|
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { |
if ($public) { |
undef($role); |
undef($role); |
} else { |
} else { |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
Line 4614 sub bodytag {
|
Line 4641 sub bodytag {
|
$role = '<span class="LC_nobreak">('.$role.')</span>' if $role; |
$role = '<span class="LC_nobreak">('.$role.')</span>' if $role; |
&get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); |
&get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); |
|
|
if ($env{'environment.remote'} eq 'off') { |
|
# No Remote |
|
if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { |
if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { |
return $bodytag; |
return $bodytag; |
} |
} |
Line 4652 sub bodytag {
|
Line 4677 sub bodytag {
|
$bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|; |
$bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|; |
|
|
#don't show menus for public users |
#don't show menus for public users |
if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){ |
if (!$public){ |
$bodytag .= Apache::lonmenu::secondary_menu(); |
$bodytag .= Apache::lonmenu::secondary_menu(); |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
$bodytag .= &Apache::lonmenu::innerregister($forcereg,'', |
$bodytag .= &Apache::lonmenu::innerregister($forcereg, |
$args->{'bread_crumbs'}); |
$args->{'bread_crumbs'}); |
} elsif ($forcereg) { |
} elsif ($forcereg) { |
$bodytag .= &Apache::lonmenu::innerregister($forcereg); |
$bodytag .= &Apache::lonmenu::innerregister($forcereg); |
Line 4670 sub bodytag {
|
Line 4695 sub bodytag {
|
} |
} |
|
|
return $bodytag; |
return $bodytag; |
} |
|
|
|
# |
|
# Top frame rendering, Remote is up |
|
# |
|
|
|
my $imgsrc = $img; |
|
if ($img =~ /^\/adm/) { |
|
$imgsrc = &lonhttpdurl($img); |
|
} |
|
my $upperleft='<img src="'.$imgsrc.'" alt="'.$function.'" />'; |
|
|
|
# Explicit link to get inline menu |
|
my $menu= ($no_inline_link?'' |
|
:'<a href="/adm/remote?action=collapse" target="_top">'.&mt('Switch to Inline Menu Mode').'</a>'); |
|
|
|
if ($dc_info) { |
|
$dc_info = qq|<span class="LC_cusr_subheading">($dc_info)</span>|; |
|
} |
|
|
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role</div> |
|
<ol class="LC_primary_menu LC_right"> |
|
<li>$menu</li> |
|
</ol><div id="LC_realm"> $realm $dc_info</div>| unless $env{'form.inhibitmenu'}; |
|
return(<<ENDBODY); |
|
$bodytag |
|
<table id="LC_title_bar" class="LC_with_remote"> |
|
<tr><td>$upperleft</td> |
|
<td>$messages </td> |
|
</tr> |
|
<tr><td>$titleinfo $dc_info $menu</td> |
|
</tr> |
|
</table> |
|
ENDBODY |
|
} |
} |
|
|
sub dc_courseid_toggle { |
sub dc_courseid_toggle { |
my ($dc_info) = @_; |
my ($dc_info) = @_; |
return ' <span id="dccidtext" class="LC_cusr_subheading">'. |
return ' <span id="dccidtext" class="LC_cusr_subheading LC_nobreak">'. |
'<a href="javascript:showCourseID();">'. |
'<a href="javascript:showCourseID();">'. |
&mt('(More ...)').'</a></span>'. |
&mt('(More ...)').'</a></span>'. |
'<div id="dccid" class="LC_dccid">'.$dc_info.'</div>'; |
'<div id="dccid" class="LC_dccid">'.$dc_info.'</div>'; |
Line 4735 sub make_attr_string {
|
Line 4726 sub make_attr_string {
|
delete($attr_ref->{$key}); |
delete($attr_ref->{$key}); |
} |
} |
} |
} |
$attr_ref->{'onload'} = |
$attr_ref->{'onload'} = $on_load; |
&Apache::lonmenu::loadevents(). $on_load; |
$attr_ref->{'onunload'}= $on_unload; |
$attr_ref->{'onunload'}= |
|
&Apache::lonmenu::unloadevents().$on_unload; |
|
} |
|
|
|
# Accessibility font enhance |
|
if ($env{'browser.fontenhance'} eq 'on') { |
|
my $style; |
|
foreach my $key (keys(%{$attr_ref})) { |
|
if (lc($key) eq 'style') { |
|
$style.=$attr_ref->{$key}.';'; |
|
delete($attr_ref->{$key}); |
|
} |
|
} |
|
$attr_ref->{'style'}=$style.'; font-size: x-large;'; |
|
} |
} |
|
|
my $attr_string; |
my $attr_string; |
Line 4824 sub standard_css {
|
Line 4801 sub standard_css {
|
my $vlink = &designparm($function.'.vlink', $domain); |
my $vlink = &designparm($function.'.vlink', $domain); |
my $link = &designparm($function.'.link', $domain); |
my $link = &designparm($function.'.link', $domain); |
|
|
my $loginbg = &designparm('login.sidebg',$domain); |
|
my $bgcol = &designparm('login.bgcol',$domain); |
|
my $textcol = &designparm('login.textcol',$domain); |
|
|
|
my $sans = 'Verdana,Arial,Helvetica,sans-serif'; |
my $sans = 'Verdana,Arial,Helvetica,sans-serif'; |
my $mono = 'monospace'; |
my $mono = 'monospace'; |
my $data_table_head = $sidebg; |
my $data_table_head = $sidebg; |
Line 4846 sub standard_css {
|
Line 4819 sub standard_css {
|
my $table_header = '#DDDDDD'; |
my $table_header = '#DDDDDD'; |
my $feedback_link_bg = '#BBBBBB'; |
my $feedback_link_bg = '#BBBBBB'; |
my $lg_border_color = '#C8C8C8'; |
my $lg_border_color = '#C8C8C8'; |
|
my $button_hover = '#BF2317'; |
|
|
my $border = ($env{'browser.type'} eq 'explorer' || |
my $border = ($env{'browser.type'} eq 'explorer' || |
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' |
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' |
Line 4853 sub standard_css {
|
Line 4827 sub standard_css {
|
|
|
|
|
return <<END; |
return <<END; |
|
|
|
/* needed for iframe to allow 100% height in FF */ |
|
body, html { |
|
margin: 0; |
|
padding: 0 0.5%; |
|
height: 99%; /* to avoid scrollbars */ |
|
} |
|
|
body { |
body { |
font-family: $sans; |
font-family: $sans; |
line-height:130%; |
line-height:130%; |
Line 4860 body {
|
Line 4842 body {
|
color:$font; |
color:$font; |
} |
} |
|
|
a:focus { |
a:focus, |
|
a:focus img { |
color: red; |
color: red; |
background: yellow; |
background: yellow; |
} |
} |
Line 4881 form, .inline {
|
Line 4864 form, .inline {
|
width:400px; |
width:400px; |
} |
} |
|
|
|
.LC_iframecontainer { |
|
width: 98%; |
|
margin: 0; |
|
position: fixed; |
|
top: 8.5em; |
|
bottom: 0; |
|
} |
|
|
|
.LC_iframecontainer iframe{ |
|
border: none; |
|
width: 100%; |
|
height: 100%; |
|
} |
|
|
.LC_filename { |
.LC_filename { |
font-family: $mono; |
font-family: $mono; |
white-space:pre; |
white-space:pre; |
Line 5061 td.LC_table_cell_checkbox {
|
Line 5058 td.LC_table_cell_checkbox {
|
padding: 0; |
padding: 0; |
} |
} |
|
|
/* Preliminary fix to hide breadcrumbs inside remote control window */ |
|
#LC_remote #LC_breadcrumbs { |
|
display:none; |
|
} |
|
|
|
#LC_head_subbox { |
#LC_head_subbox { |
clear:both; |
clear:both; |
background: #F8F8F8; /* $sidebg; */ |
background: #F8F8F8; /* $sidebg; */ |
border: 1px solid $sidebg; |
border: 1px solid $sidebg; |
margin: 0 0 10px 0; |
margin: 0 0 10px 0; |
|
padding: 3px; |
} |
} |
|
|
.LC_fontsize_medium { |
.LC_fontsize_medium { |
Line 5091 td.LC_table_cell_checkbox {
|
Line 5084 td.LC_table_cell_checkbox {
|
vertical-align: middle; |
vertical-align: middle; |
} |
} |
|
|
|
li.LC_menubuttons_inline_text img,a { |
|
cursor:pointer; |
|
} |
|
|
.LC_menubuttons_link { |
.LC_menubuttons_link { |
text-decoration: none; |
text-decoration: none; |
} |
} |
Line 5433 span.LC_parm_symb {
|
Line 5430 span.LC_parm_symb {
|
color: #AAAAAA; |
color: #AAAAAA; |
} |
} |
|
|
|
ul.LC_parm_parmlist li { |
|
display: inline-block; |
|
padding: 0.3em 0.8em; |
|
vertical-align: top; |
|
width: 150px; |
|
border-top:1px solid $lg_border_color; |
|
} |
|
|
td.LC_parm_overview_level_menu, |
td.LC_parm_overview_level_menu, |
td.LC_parm_overview_map_menu, |
td.LC_parm_overview_map_menu, |
td.LC_parm_overview_parm_selectors, |
td.LC_parm_overview_parm_selectors, |
Line 5593 table.LC_group_priv td {
|
Line 5598 table.LC_group_priv td {
|
padding: 0; |
padding: 0; |
} |
} |
|
|
table.LC_notify_front_page { |
|
background: white; |
|
border: 1px solid black; |
|
padding: 8px; |
|
} |
|
|
|
table.LC_notify_front_page td { |
|
padding: 8px; |
|
} |
|
|
|
.LC_navbuttons { |
.LC_navbuttons { |
margin: 2ex 0ex 2ex 0ex; |
margin: 2ex 0ex 2ex 0ex; |
} |
} |
Line 5969 ol#LC_PathBreadcrumbs a:hover,
|
Line 5964 ol#LC_PathBreadcrumbs a:hover,
|
ul#LC_secondary_menu a:hover, |
ul#LC_secondary_menu a:hover, |
.LC_FormSectionClearButton input:hover |
.LC_FormSectionClearButton input:hover |
ul.LC_TabContent li:hover a { |
ul.LC_TabContent li:hover a { |
color:#BF2317; |
color:$button_hover; |
text-decoration:none; |
text-decoration:none; |
} |
} |
|
|
Line 6036 fieldset > legend {
|
Line 6031 fieldset > legend {
|
|
|
#LC_nav_bar { |
#LC_nav_bar { |
float: left; |
float: left; |
margin: 0; |
margin: 0 0 2px 0; |
} |
} |
|
|
#LC_realm { |
#LC_realm { |
Line 6056 ol.LC_primary_menu {
|
Line 6051 ol.LC_primary_menu {
|
margin: 0; |
margin: 0; |
} |
} |
|
|
span.LC_new_message{ |
|
font-weight:bold; |
|
color: darkred; |
|
} |
|
|
|
ol#LC_PathBreadcrumbs { |
ol#LC_PathBreadcrumbs { |
margin: 0; |
margin: 0; |
} |
} |
Line 6081 ol.LC_primary_menu a {
|
Line 6071 ol.LC_primary_menu a {
|
text-decoration: none; |
text-decoration: none; |
} |
} |
|
|
|
ol.LC_primary_menu a.LC_new_message { |
|
font-weight:bold; |
|
color: darkred; |
|
} |
|
|
|
ol.LC_docs_parameters { |
|
margin-left: 0; |
|
padding: 0; |
|
list-style: none; |
|
} |
|
|
|
ol.LC_docs_parameters li { |
|
margin: 0; |
|
padding-right: 20px; |
|
display: inline; |
|
} |
|
|
|
ol.LC_docs_parameters li:before { |
|
content: "\\002022 \\0020"; |
|
} |
|
|
|
li.LC_docs_parameters_title { |
|
font-weight: bold; |
|
} |
|
|
|
ol.LC_docs_parameters li.LC_docs_parameters_title:before { |
|
content: ""; |
|
} |
|
|
ul#LC_secondary_menu { |
ul#LC_secondary_menu { |
clear: both; |
clear: both; |
color: $fontmenu; |
color: $fontmenu; |
Line 6120 ul#LC_secondary_menu li a {
|
Line 6139 ul#LC_secondary_menu li a {
|
} |
} |
|
|
ul.LC_TabContent { |
ul.LC_TabContent { |
min-height:1.5em; |
min-height:20px; |
} |
} |
|
|
ul.LC_TabContent li { |
ul.LC_TabContent li { |
vertical-align:middle; |
vertical-align:middle; |
padding: 0 10px 0 10px; |
padding: 0 16px 0 10px; |
background-color:$tabbg; |
background-color:$tabbg; |
border-bottom:solid 1px $lg_border_color; |
border-bottom:solid 1px $lg_border_color; |
|
border-right: solid 1px $font; |
} |
} |
|
|
ul.LC_TabContent .right { |
ul.LC_TabContent .right { |
Line 6140 ul.LC_TabContent li {
|
Line 6160 ul.LC_TabContent li {
|
text-decoration:none; |
text-decoration:none; |
font-size:95%; |
font-size:95%; |
font-weight:bold; |
font-weight:bold; |
padding-right: 16px; |
min-height:20px; |
|
} |
|
|
|
ul.LC_TabContent li a:hover, |
|
ul.LC_TabContent li a:focus { |
|
color: $button_hover; |
|
background:none; |
|
outline:none; |
|
} |
|
|
|
ul.LC_TabContent li:hover { |
|
color: $button_hover; |
|
cursor:pointer; |
} |
} |
|
|
ul.LC_TabContent li:hover, |
|
ul.LC_TabContent li.active { |
ul.LC_TabContent li.active { |
|
color: $font; |
background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center; |
background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center; |
border-bottom:solid 2px #FFFFFF; |
border-bottom:solid 1px #FFFFFF; |
padding-right: 16px; |
cursor: default; |
} |
} |
|
|
|
ul.LC_TabContent li.active a { |
|
color:$font; |
|
background:#FFFFFF; |
|
outline: none; |
|
} |
#maincoursedoc { |
#maincoursedoc { |
clear:both; |
clear:both; |
} |
} |
Line 6168 ul.LC_TabContentBigger li {
|
Line 6205 ul.LC_TabContentBigger li {
|
color: #737373; |
color: #737373; |
} |
} |
|
|
|
ul.LC_TabContentBigger li.active { |
|
position: relative; |
|
top: 1px; |
|
} |
|
|
ul.LC_TabContentBigger li a { |
ul.LC_TabContentBigger li a { |
background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat; |
background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat; |
Line 6176 ul.LC_TabContentBigger li a {
|
Line 6217 ul.LC_TabContentBigger li a {
|
text-align: center; |
text-align: center; |
display: block; |
display: block; |
text-decoration: none; |
text-decoration: none; |
|
outline: none; |
} |
} |
|
|
ul.LC_TabContentBigger li:hover a, |
|
ul.LC_TabContentBigger li.active a { |
ul.LC_TabContentBigger li.active a { |
background:url('/adm/lonIcons/tabbgleft.gif') left top no-repeat; |
background:url('/adm/lonIcons/tabbgleft.gif') left top no-repeat; |
color:$font; |
color:$font; |
text-decoration: underline; |
|
} |
} |
|
|
|
|
ul.LC_TabContentBigger li b { |
ul.LC_TabContentBigger li b { |
background: url('/adm/lonIcons/tabbgright.gif') no-repeat right bottom; |
background: url('/adm/lonIcons/tabbgright.gif') no-repeat right bottom; |
display: block; |
display: block; |
float: left; |
float: left; |
padding: 0 30px; |
padding: 0 30px; |
|
border-bottom: 1px solid $lg_border_color; |
|
} |
|
|
|
ul.LC_TabContentBigger li:hover b { |
|
color:$button_hover; |
} |
} |
|
|
ul.LC_TabContentBigger li:hover b, |
|
ul.LC_TabContentBigger li.active b { |
ul.LC_TabContentBigger li.active b { |
background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat; |
background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat; |
color:$font; |
color:$font; |
border-bottom: 1px solid #FFFFFF; |
border: 0; |
|
cursor:default; |
} |
} |
|
|
|
|
Line 6230 ul.LC_CourseBreadcrumbs li a {
|
Line 6274 ul.LC_CourseBreadcrumbs li a {
|
font-size:90%; |
font-size:90%; |
} |
} |
|
|
|
ol#LC_MenuBreadcrumbs h1 { |
|
display: inline; |
|
font-size: 90%; |
|
line-height: 2.5em; |
|
margin: 0; |
|
padding: 0; |
|
} |
|
|
ol#LC_PathBreadcrumbs li a { |
ol#LC_PathBreadcrumbs li a { |
text-decoration:none; |
text-decoration:none; |
font-size:100%; |
font-size:100%; |
Line 6326 div.LC_columnSection>* {
|
Line 6378 div.LC_columnSection>* {
|
overflow:hidden; |
overflow:hidden; |
} |
} |
|
|
.LC_loginpage_container { |
|
text-align:left; |
|
margin : 0 auto; |
|
width:90%; |
|
padding: 10px; |
|
height: auto; |
|
background-color:#FFFFFF; |
|
border:1px solid #CCCCCC; |
|
} |
|
|
|
|
|
.LC_loginpage_loginContainer { |
|
float:left; |
|
width: 182px; |
|
padding: 2px; |
|
border:1px solid #CCCCCC; |
|
background-color:$loginbg; |
|
} |
|
|
|
.LC_loginpage_loginContainer h2 { |
|
margin-top: 0; |
|
display:block; |
|
background:$bgcol; |
|
color:$textcol; |
|
padding-left:5px; |
|
} |
|
|
|
.LC_loginpage_loginInfo { |
|
float:left; |
|
width:182px; |
|
border:1px solid #CCCCCC; |
|
padding:2px; |
|
} |
|
|
|
.LC_loginpage_space { |
|
clear: both; |
|
margin-bottom: 20px; |
|
border-bottom: 1px solid #CCCCCC; |
|
} |
|
|
|
.LC_loginpage_floatLeft { |
|
float: left; |
|
width: 200px; |
|
margin: 0; |
|
} |
|
|
|
table em { |
table em { |
font-weight: bold; |
font-weight: bold; |
font-style: normal; |
font-style: normal; |
Line 6407 a#LC_content_toolbar_firsthomework {
|
Line 6413 a#LC_content_toolbar_firsthomework {
|
background-image:url(/res/adm/pages/open-first-problem.gif); |
background-image:url(/res/adm/pages/open-first-problem.gif); |
} |
} |
|
|
a#LC_content_toolbar_launchnav { |
|
background-image:url(/res/adm/pages/start-navigation.gif); |
|
} |
|
|
|
a#LC_content_toolbar_closenav { |
|
background-image:url(/res/adm/pages/close-navigation.gif); |
|
} |
|
|
|
a#LC_content_toolbar_everything { |
a#LC_content_toolbar_everything { |
background-image:url(/res/adm/pages/show-all.gif); |
background-image:url(/res/adm/pages/show-all.gif); |
} |
} |
Line 6505 ul.LC_funclist li {
|
Line 6503 ul.LC_funclist li {
|
padding: 0px 4px |
padding: 0px 4px |
} |
} |
|
|
|
.LC_hidden { |
|
display: none; |
|
} |
|
|
END |
END |
} |
} |
|
|
Line 6556 sub headtag {
|
Line 6558 sub headtag {
|
if (!$args->{'frameset'}) { |
if (!$args->{'frameset'}) { |
$result .= &Apache::lonhtmlcommon::htmlareaheaders(); |
$result .= &Apache::lonhtmlcommon::htmlareaheaders(); |
} |
} |
if ($args->{'force_register'}) { |
if ($args->{'force_register'} && $env{'request.noversionuri'} !~ m{^/res/adm/pages/}) { |
$result .= &Apache::lonmenu::registerurl(1); |
$result .= Apache::lonxml::display_title(); |
} |
} |
if (!$args->{'no_nav_bar'} |
if (!$args->{'no_nav_bar'} |
&& !$args->{'only_body'} |
&& !$args->{'only_body'} |
Line 6583 ADDMETA
|
Line 6585 ADDMETA
|
$result .= '<title> LON-CAPA '.$title.'</title>' |
$result .= '<title> LON-CAPA '.$title.'</title>' |
.'<link rel="stylesheet" type="text/css" href="'.$url.'" />' |
.'<link rel="stylesheet" type="text/css" href="'.$url.'" />' |
.$head_extra; |
.$head_extra; |
return $result; |
return $result.'</head>'; |
} |
} |
|
|
=pod |
=pod |
Line 6618 Inputs: none
|
Line 6620 Inputs: none
|
sub xml_begin { |
sub xml_begin { |
my $output=''; |
my $output=''; |
|
|
if ($env{'internal.start_page'}==1) { |
|
&Apache::lonhtmlcommon::init_htmlareafields(); |
|
} |
|
|
|
if ($env{'browser.mathml'}) { |
if ($env{'browser.mathml'}) { |
$output='<?xml version="1.0"?>' |
$output='<?xml version="1.0"?>' |
#.'<?xml-stylesheet type="text/css" href="/adm/MathML/mathml.css"?>'."\n" |
#.'<?xml-stylesheet type="text/css" href="/adm/MathML/mathml.css"?>'."\n" |
Line 6640 sub xml_begin {
|
Line 6638 sub xml_begin {
|
|
|
=pod |
=pod |
|
|
=item * &endheadtag() |
|
|
|
Returns a uniform </head> for LON-CAPA web pages. |
|
|
|
Inputs: none |
|
|
|
=cut |
|
|
|
sub endheadtag { |
|
return '</head>'; |
|
} |
|
|
|
=pod |
|
|
|
=item * &head() |
|
|
|
Returns a uniform complete <head>..</head> section for LON-CAPA web pages. |
|
|
|
Inputs: |
|
|
|
=over 4 |
|
|
|
$title - optional title for the page |
|
|
|
$head_extra - optional extra HTML to put inside the <head> |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub head { |
|
my ($title,$head_extra,$args) = @_; |
|
return &headtag($title,$head_extra,$args).&endheadtag(); |
|
} |
|
|
|
=pod |
|
|
|
=item * &start_page() |
=item * &start_page() |
|
|
Returns a complete <html> .. <body> section for LON-CAPA web pages. |
Returns a complete <html> .. <body> section for LON-CAPA web pages. |
Line 6714 $args - additional optional args support
|
Line 6675 $args - additional optional args support
|
skip_phases -> hash ref of |
skip_phases -> hash ref of |
head -> skip the <html><head> generation |
head -> skip the <html><head> generation |
body -> skip all <body> generation |
body -> skip all <body> generation |
no_inline_link -> if true and in remote mode, don't show the |
|
'Switch To Inline Menu' link |
|
no_auto_mt_title -> prevent &mt()ing the title arg |
no_auto_mt_title -> prevent &mt()ing the title arg |
inherit_jsmath -> when creating popup window in a page, |
inherit_jsmath -> when creating popup window in a page, |
should it have jsmath forced on by the |
should it have jsmath forced on by the |
Line 6732 $args - additional optional args support
|
Line 6691 $args - additional optional args support
|
sub start_page { |
sub start_page { |
my ($title,$head_extra,$args) = @_; |
my ($title,$head_extra,$args) = @_; |
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
|
#SD |
|
#I don't see why we copy certain elements of %$args to %head_args |
|
#head args is passed to headtag() and this routine only reads those |
|
#keys that are needed. There doesn't happen any writes or any processing |
|
#of other keys. |
|
#proposal: just pass $args to headtag instead of \%head_args and delete |
|
#marked lines |
|
#<- MARK |
my %head_args; |
my %head_args; |
foreach my $arg ('redirect','force_register','domain','function', |
foreach my $arg ('redirect','force_register','domain','function', |
'bgcolor','frameset','no_nav_bar','only_body', |
'bgcolor','frameset','no_nav_bar','only_body', |
Line 6740 sub start_page {
|
Line 6707 sub start_page {
|
$head_args{$arg} = $args->{$arg}; |
$head_args{$arg} = $args->{$arg}; |
} |
} |
} |
} |
|
#MARK -> |
|
|
$env{'internal.start_page'}++; |
$env{'internal.start_page'}++; |
my $result; |
my $result; |
|
|
if (! exists($args->{'skip_phases'}{'head'}) ) { |
if (! exists($args->{'skip_phases'}{'head'}) ) { |
$result.= |
$result .= |
&xml_begin(). |
&xml_begin() . &headtag($title,$head_extra,\%head_args); |
&headtag($title,$head_extra,\%head_args).&endheadtag(); |
#replace prev line by |
|
# &xml_begin() . &headtag($title, $head_extra, $args); |
} |
} |
|
|
if (! exists($args->{'skip_phases'}{'body'}) ) { |
if (! exists($args->{'skip_phases'}{'body'}) ) { |
Line 6760 sub start_page {
|
Line 6730 sub start_page {
|
$args->{'function'}, $args->{'add_entries'}, |
$args->{'function'}, $args->{'add_entries'}, |
$args->{'only_body'}, $args->{'domain'}, |
$args->{'only_body'}, $args->{'domain'}, |
$args->{'force_register'}, $args->{'no_nav_bar'}, |
$args->{'force_register'}, $args->{'no_nav_bar'}, |
$args->{'bgcolor'}, $args->{'no_inline_link'}, |
$args->{'bgcolor'}, $args); |
$args); |
|
} |
} |
} |
} |
|
|
Line 6777 sub start_page {
|
Line 6746 sub start_page {
|
# $result .= &build_functionlist(); |
# $result .= &build_functionlist(); |
#} |
#} |
|
|
# Don't add anything more if only_body wanted |
# Don't add anything more if only_body wanted or in const space |
return $result if $args->{'only_body'}; |
return $result if $args->{'only_body'} |
|
|| $env{'request.state'} eq 'construct'; |
|
|
#Breadcrumbs for Construction Space provided by &bodytag. |
|
if (($env{'environment.remote'} eq 'off') && ($env{'request.state'} eq 'construct')) { |
|
return $result; |
|
} |
|
|
|
#Breadcrumbs |
#Breadcrumbs |
if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) { |
if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) { |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
Line 6805 sub start_page {
|
Line 6770 sub start_page {
|
return $result; |
return $result; |
} |
} |
|
|
|
|
=pod |
|
|
|
=item * &head() |
|
|
|
Returns a complete </body></html> section for LON-CAPA web pages. |
|
|
|
Inputs: $args - additional optional args supported are: |
|
js_ready -> return a string ready for being used in |
|
a javascript writeln |
|
html_encode -> return a string ready for being used in |
|
a html attribute |
|
frameset -> if true will start with a <frameset> |
|
rather than <body> |
|
dicsussion -> if true will get discussion from |
|
lonxml::xmlend |
|
(you can pass the target and parser arguments |
|
through optional 'target' and 'parser' args |
|
to this routine) |
|
|
|
=cut |
|
|
|
sub end_page { |
sub end_page { |
my ($args) = @_; |
my ($args) = @_; |
$env{'internal.end_page'}++; |
$env{'internal.end_page'}++; |
Line 6916 sub simple_error_page {
|
Line 6859 sub simple_error_page {
|
|
|
{ |
{ |
my @row_count; |
my @row_count; |
|
|
|
sub start_data_table_count { |
|
unshift(@row_count, 0); |
|
return; |
|
} |
|
|
|
sub end_data_table_count { |
|
shift(@row_count); |
|
return; |
|
} |
|
|
sub start_data_table { |
sub start_data_table { |
my ($add_class) = @_; |
my ($add_class) = @_; |
my $css_class = (join(' ','LC_data_table',$add_class)); |
my $css_class = (join(' ','LC_data_table',$add_class)); |
unshift(@row_count,0); |
&start_data_table_count(); |
return '<table class="'.$css_class.'">'."\n"; |
return '<table class="'.$css_class.'">'."\n"; |
} |
} |
|
|
sub end_data_table { |
sub end_data_table { |
shift(@row_count); |
&end_data_table_count(); |
return '</table>'."\n";; |
return '</table>'."\n";; |
} |
} |
|
|
sub start_data_table_row { |
sub start_data_table_row { |
my ($add_class) = @_; |
my ($add_class, $id) = @_; |
$row_count[0]++; |
$row_count[0]++; |
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; |
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; |
$css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq ''); |
$css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq ''); |
return '<tr class="'.$css_class.'">'."\n";; |
$id = (' id="'.$id.'"') unless ($id eq ''); |
|
return '<tr class="'.$css_class.'"'.$id.'>'."\n"; |
} |
} |
|
|
sub continue_data_table_row { |
sub continue_data_table_row { |
my ($add_class) = @_; |
my ($add_class, $id) = @_; |
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; |
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; |
$css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq '');; |
$css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq ''); |
return '<tr class="'.$css_class.'">'."\n";; |
$id = (' id="'.$id.'"') unless ($id eq ''); |
|
return '<tr class="'.$css_class.'"'.$id.'>'."\n"; |
} |
} |
|
|
sub end_data_table_row { |
sub end_data_table_row { |
Line 8142 sub get_institutional_codes {
|
Line 8098 sub get_institutional_codes {
|
return; |
return; |
} |
} |
|
|
|
sub get_standard_codeitems { |
|
return ('Year','Semester','Department','Number','Section'); |
|
} |
|
|
=pod |
=pod |
|
|
=head1 Slot Helpers |
=head1 Slot Helpers |
Line 10212 sub construct_course {
|
Line 10172 sub construct_course {
|
$cenv{'url'}=$oldcenv{'url'}; |
$cenv{'url'}=$oldcenv{'url'}; |
# Restore title |
# Restore title |
$cenv{'description'}=$oldcenv{'description'}; |
$cenv{'description'}=$oldcenv{'description'}; |
|
# Restore creation date, creator and creation context. |
|
$cenv{'internal.created'}=$oldcenv{'internal.created'}; |
|
$cenv{'internal.creator'}=$oldcenv{'internal.creator'}; |
|
$cenv{'internal.creationcontext'}=$oldcenv{'internal.creationcontext'}; |
# Mark as cloned |
# Mark as cloned |
$cenv{'clonedfrom'}=$cloneid; |
$cenv{'clonedfrom'}=$cloneid; |
# Need to clone grading mode |
# Need to clone grading mode |
Line 10458 sub construct_course {
|
Line 10422 sub construct_course {
|
$title=&mt('Syllabus'); |
$title=&mt('Syllabus'); |
$url='/public/'.$$crsudom.'/'.$$crsunum.'/syllabus'; |
$url='/public/'.$$crsudom.'/'.$$crsunum.'/syllabus'; |
} else { |
} else { |
$title=&mt('Navigate Contents'); |
$title=&mt('Table of Contents'); |
$url='/adm/navmaps'; |
$url='/adm/navmaps'; |
} |
} |
|
|
Line 10475 sub construct_course {
|
Line 10439 sub construct_course {
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
|
|
|
#SD |
|
# only Community and Course, or anything else? |
sub course_type { |
sub course_type { |
my ($cid) = @_; |
my ($cid) = @_; |
if (!defined($cid)) { |
if (!defined($cid)) { |
Line 10640 sub init_user_environment {
|
Line 10606 sub init_user_environment {
|
my %userenv = &Apache::lonnet::dump('environment',$domain,$username); |
my %userenv = &Apache::lonnet::dump('environment',$domain,$username); |
my ($tmp) = keys(%userenv); |
my ($tmp) = keys(%userenv); |
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
# default remote control to off |
|
if ($userenv{'remote'} ne 'on') { $userenv{'remote'} = 'off'; } |
|
} else { |
} else { |
undef(%userenv); |
undef(%userenv); |
} |
} |
if (($userenv{'interface'}) && (!$form->{'interface'})) { |
if (($userenv{'interface'}) && (!$form->{'interface'})) { |
$form->{'interface'}=$userenv{'interface'}; |
$form->{'interface'}=$userenv{'interface'}; |
} |
} |
$env{'environment.remote'}=$userenv{'remote'}; |
|
if ($userenv{'texengine'} eq 'ttm') { $clientmathml=1; } |
if ($userenv{'texengine'} eq 'ttm') { $clientmathml=1; } |
|
|
# --------------- Do not trust query string to be put directly into environment |
# --------------- Do not trust query string to be put directly into environment |
Line 10680 sub init_user_environment {
|
Line 10643 sub init_user_environment {
|
$initial_env{"browser.localres"} = $form->{'localres'}; |
$initial_env{"browser.localres"} = $form->{'localres'}; |
} |
} |
|
|
if ($public) { |
|
$initial_env{"environment.remote"} = "off"; |
|
} |
|
if ($form->{'interface'}) { |
if ($form->{'interface'}) { |
$form->{'interface'}=~s/\W//gs; |
$form->{'interface'}=~s/\W//gs; |
$initial_env{"browser.interface"} = $form->{'interface'}; |
$initial_env{"browser.interface"} = $form->{'interface'}; |
$env{'browser.interface'}=$form->{'interface'}; |
$env{'browser.interface'}=$form->{'interface'}; |
} |
} |
|
|
|
my %is_adv = ( is_adv => $env{'user.adv'} ); |
|
my %domdef = &Apache::lonnet::get_domain_defaults($domain); |
|
|
foreach my $tool ('aboutme','blog','portfolio') { |
foreach my $tool ('aboutme','blog','portfolio') { |
$userenv{'availabletools.'.$tool} = |
$userenv{'availabletools.'.$tool} = |
&Apache::lonnet::usertools_access($username,$domain,$tool,'reload'); |
&Apache::lonnet::usertools_access($username,$domain,$tool,'reload', |
|
undef,\%userenv,\%domdef,\%is_adv); |
} |
} |
|
|
foreach my $crstype ('official','unofficial','community') { |
foreach my $crstype ('official','unofficial','community') { |
$userenv{'canrequest.'.$crstype} = |
$userenv{'canrequest.'.$crstype} = |
&Apache::lonnet::usertools_access($username,$domain,$crstype, |
&Apache::lonnet::usertools_access($username,$domain,$crstype, |
'reload','requestcourses'); |
'reload','requestcourses', |
|
\%userenv,\%domdef,\%is_adv); |
} |
} |
|
|
$env{'user.environment'} = "$lonids/$cookie.id"; |
$env{'user.environment'} = "$lonids/$cookie.id"; |