version 1.948.2.11, 2010/09/27 01:16:22
|
version 1.975, 2010/08/14 00:00:29
|
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 |
|
|
Line 1130 sub help_open_topic {
|
Line 1134 sub help_open_topic {
|
$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;"'.$imgid |
.' title="'.$title.'" style="vertical-align:middle;"'.$imgid |
.' /></a>'; |
.' /></a>'; |
if ($text ne "") { |
if ($text ne "") { |
$template.='</span>'; |
$template.='</span>'; |
} |
} |
return $template; |
return $template; |
Line 1205 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 1231 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 1247 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 1307 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 1351 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 1870 sub multiple_select_form {
|
Line 1860 sub multiple_select_form {
|
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 ref to a hash containing: |
allow a user to select options from a ref to a hash containing: |
option_name => displayed text. An optional $onchange can include |
option_name => displayed text. An optional $onchange can include |
a javascript onchange item, e.g., onchange="this.form.submit();" |
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. |
|
|
Line 1886 sub select_form {
|
Line 1876 sub select_form {
|
my $selectform = "<select name=\"$name\" size=\"1\"$onchange>\n"; |
my $selectform = "<select name=\"$name\" size=\"1\"$onchange>\n"; |
my @keys; |
my @keys; |
if (exists($hashref->{'select_form_order'})) { |
if (exists($hashref->{'select_form_order'})) { |
@keys=@{$hashref->{'select_form_order'}}; |
@keys=@{$hashref->{'select_form_order'}}; |
} else { |
} else { |
@keys=sort(keys(%{$hashref})); |
@keys=sort(keys(%{$hashref})); |
} |
} |
foreach my $key (@keys) { |
foreach my $key (@keys) { |
$selectform.= |
$selectform.= |
Line 3256 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))}); |
{'' => &mt('Any category'), map { $_,$_ } sort(keys(%category_extensions))}); |
|
} |
} |
|
|
=pod |
=pod |
Line 3422 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,%lasthidden); |
my %typeparts; |
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 3433 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 3450 sub get_previous_attempt {
|
Line 3436 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 3457 sub get_previous_attempt {
|
Line 3444 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 3836 sub findallcourses {
|
Line 3828 sub findallcourses {
|
$udom = $env{'user.domain'}; |
$udom = $env{'user.domain'}; |
} |
} |
if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { |
if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { |
my $extra = &Apache::lonnet::freeze_escape({'skipcheck' => 1}); |
my %roleshash = &Apache::lonnet::dump('roles',$udom,$uname); |
my %roleshash = &Apache::lonnet::dump('roles',$udom,$uname,'.',undef, |
|
$extra); |
|
if (!%roles) { |
if (!%roles) { |
%roles = ( |
%roles = ( |
cc => 1, |
cc => 1, |
Line 4562 Inputs:
|
Line 4552 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 4582 other decorations will be returned.
|
Line 4569 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; |
my $public; |
if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) |
if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) |
Line 4624 sub bodytag {
|
Line 4611 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 4643 sub bodytag {
|
Line 4628 sub bodytag {
|
} else { |
} else { |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
} |
} |
|
|
my $titleinfo = '<h1>'.$title.'</h1>'; |
my $titleinfo = '<h1>'.$title.'</h1>'; |
# |
# |
# Extra info if you are the DC |
# Extra info if you are the DC |
Line 4659 sub bodytag {
|
Line 4644 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 4702 sub bodytag {
|
Line 4685 sub bodytag {
|
$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 4715 sub bodytag {
|
Line 4698 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 LC_nobreak">'. |
return ' <span id="dccidtext" class="LC_cusr_subheading">'. |
'<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 4780 sub make_attr_string {
|
Line 4729 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 4893 sub standard_css {
|
Line 4828 sub standard_css {
|
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' |
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' |
: '0 3px 0 4px'; |
: '0 3px 0 4px'; |
|
|
|
|
return <<END; |
return <<END; |
|
|
/* needed for iframe to allow 100% height in FF */ |
/* needed for iframe to allow 100% height in FF */ |
Line 5125 td.LC_table_cell_checkbox {
|
Line 5061 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; */ |
Line 5502 span.LC_parm_symb {
|
Line 5433 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 5670 table.LC_group_priv td {
|
Line 5593 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 6138 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 6163 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 { |
ol.LC_docs_parameters { |
margin-left: 0; |
margin-left: 0; |
padding: 0; |
padding: 0; |
Line 6175 ol.LC_docs_parameters li {
|
Line 6088 ol.LC_docs_parameters li {
|
display: inline; |
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 6304 ul.LC_TabContentBigger li a {
|
Line 6205 ul.LC_TabContentBigger li a {
|
text-align: center; |
text-align: center; |
display: block; |
display: block; |
text-decoration: none; |
text-decoration: none; |
outline: none; |
outline: none; |
} |
} |
|
|
ul.LC_TabContentBigger li.active a { |
ul.LC_TabContentBigger li.active a { |
Line 6331 ul.LC_TabContentBigger li.active b {
|
Line 6232 ul.LC_TabContentBigger li.active b {
|
cursor:default; |
cursor:default; |
} |
} |
|
|
|
|
ul.LC_CourseBreadcrumbs { |
ul.LC_CourseBreadcrumbs { |
background: $sidebg; |
background: $sidebg; |
line-height: 32px; |
line-height: 32px; |
Line 6499 a#LC_content_toolbar_firsthomework {
|
Line 6401 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 6597 ul.LC_funclist li {
|
Line 6491 ul.LC_funclist li {
|
padding: 0px 4px |
padding: 0px 4px |
} |
} |
|
|
|
.LC_hidden { |
|
display: none; |
|
} |
|
|
END |
END |
} |
} |
|
|
Line 6648 sub headtag {
|
Line 6546 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 6675 ADDMETA
|
Line 6573 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 6728 sub xml_begin {
|
Line 6626 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 6802 $args - additional optional args support
|
Line 6663 $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 6820 $args - additional optional args support
|
Line 6679 $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 6828 sub start_page {
|
Line 6695 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 6848 sub start_page {
|
Line 6718 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 6865 sub start_page {
|
Line 6734 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 6893 sub start_page {
|
Line 6758 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 7018 sub simple_error_page {
|
Line 6861 sub simple_error_page {
|
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)); |
&start_data_table_count(); |
&start_data_table_count(); |
return '<table class="'.$css_class.'">'."\n"; |
return '<table class="'.$css_class.'">'."\n"; |
} |
} |
|
|
sub end_data_table { |
sub end_data_table { |
&end_data_table_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 7202 role status: active, previous or future.
|
Line 7047 role status: active, previous or future.
|
|
|
sub check_user_status { |
sub check_user_status { |
my ($udom,$uname,$cdom,$crs,$role,$sec) = @_; |
my ($udom,$uname,$cdom,$crs,$role,$sec) = @_; |
my $extra = &Apache::lonnet::freeze_escape({'skipcheck' => 1}); |
my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname); |
my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname,'.',undef,$extra); |
|
my @uroles = keys %userinfo; |
my @uroles = keys %userinfo; |
my $srchstr; |
my $srchstr; |
my $active_chk = 'none'; |
my $active_chk = 'none'; |
Line 10583 sub construct_course {
|
Line 10427 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 10748 sub init_user_environment {
|
Line 10594 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 10788 sub init_user_environment {
|
Line 10631 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"; |