version 1.948.2.17, 2010/12/25 16:01:54
|
version 1.1019, 2011/09/01 02:32:50
|
Line 409 sub studentbrowser_javascript {
|
Line 409 sub studentbrowser_javascript {
|
<script type="text/javascript" language="Javascript"> |
<script type="text/javascript" language="Javascript"> |
// <![CDATA[ |
// <![CDATA[ |
var stdeditbrowser; |
var stdeditbrowser; |
function openstdbrowser(formname,uname,udom,roleflag,ignorefilter,courseadvonly) { |
function openstdbrowser(formname,uname,udom,clicker,roleflag,ignorefilter,courseadvonly) { |
var url = '/adm/pickstudent?'; |
var url = '/adm/pickstudent?'; |
var filter; |
var filter; |
if (!ignorefilter) { |
if (!ignorefilter) { |
Line 421 sub studentbrowser_javascript {
|
Line 421 sub studentbrowser_javascript {
|
} |
} |
} |
} |
url += 'form=' + formname + '&unameelement='+uname+ |
url += 'form=' + formname + '&unameelement='+uname+ |
'&udomelement='+udom; |
'&udomelement='+udom+ |
|
'&clicker='+clicker; |
if (roleflag) { url+="&roles=1"; } |
if (roleflag) { url+="&roles=1"; } |
if (courseadvonly) { url+="&courseadvonly=1"; } |
if (courseadvonly) { url+="&courseadvonly=1"; } |
var title = 'Student_Browser'; |
var title = 'Student_Browser'; |
Line 435 sub studentbrowser_javascript {
|
Line 436 sub studentbrowser_javascript {
|
ENDSTDBRW |
ENDSTDBRW |
} |
} |
|
|
|
sub resourcebrowser_javascript { |
|
unless ($env{'request.course.id'}) { return ''; } |
|
return (<<'ENDRESBRW'); |
|
<script type="text/javascript" language="Javascript"> |
|
// <![CDATA[ |
|
var reseditbrowser; |
|
function openresbrowser(formname,reslink) { |
|
var url = '/adm/pickresource?form='+formname+'&reslink='+reslink; |
|
var title = 'Resource_Browser'; |
|
var options = 'scrollbars=1,resizable=1,menubar=0'; |
|
options += ',width=700,height=500'; |
|
reseditbrowser = open(url,title,options,'1'); |
|
reseditbrowser.focus(); |
|
} |
|
// ]]> |
|
</script> |
|
ENDRESBRW |
|
} |
|
|
sub selectstudent_link { |
sub selectstudent_link { |
my ($form,$unameele,$udomele,$courseadvonly)=@_; |
my ($form,$unameele,$udomele,$courseadvonly,$clickerid)=@_; |
my $callargs = "'".$form."','".$unameele."','".$udomele."'"; |
my $callargs = "'".&Apache::lonhtmlcommon::entity_encode($form)."','". |
|
&Apache::lonhtmlcommon::entity_encode($unameele)."','". |
|
&Apache::lonhtmlcommon::entity_encode($udomele)."'"; |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
&& !&Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
&& !&Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
'/'.$env{'request.course.sec'})) { |
'/'.$env{'request.course.sec'})) { |
return ''; |
return ''; |
} |
} |
|
$callargs.=",'".&Apache::lonhtmlcommon::entity_encode($clickerid)."'"; |
if ($courseadvonly) { |
if ($courseadvonly) { |
$callargs .= ",'',1,1"; |
$callargs .= ",'',1,1"; |
} |
} |
Line 452 sub selectstudent_link {
|
Line 475 sub selectstudent_link {
|
&mt('Select User').'</a></span>'; |
&mt('Select User').'</a></span>'; |
} |
} |
if ($env{'request.role'}=~/^(au|dc|su)/) { |
if ($env{'request.role'}=~/^(au|dc|su)/) { |
$callargs .= ",1"; |
$callargs .= ",'',1"; |
return '<span class="LC_nobreak">'. |
return '<span class="LC_nobreak">'. |
'<a href="javascript:openstdbrowser('.$callargs.');">'. |
'<a href="javascript:openstdbrowser('.$callargs.');">'. |
&mt('Select User').'</a></span>'; |
&mt('Select User').'</a></span>'; |
Line 460 sub selectstudent_link {
|
Line 483 sub selectstudent_link {
|
return ''; |
return ''; |
} |
} |
|
|
|
sub selectresource_link { |
|
my ($form,$reslink,$arg)=@_; |
|
|
|
my $callargs = "'".&Apache::lonhtmlcommon::entity_encode($form)."','". |
|
&Apache::lonhtmlcommon::entity_encode($reslink)."'"; |
|
unless ($env{'request.course.id'}) { return $arg; } |
|
return '<span class="LC_nobreak">'. |
|
'<a href="javascript:openresbrowser('.$callargs.');">'. |
|
$arg.'</a></span>'; |
|
} |
|
|
|
|
|
|
sub authorbrowser_javascript { |
sub authorbrowser_javascript { |
return <<"ENDAUTHORBRW"; |
return <<"ENDAUTHORBRW"; |
<script type="text/javascript" language="JavaScript"> |
<script type="text/javascript" language="JavaScript"> |
Line 596 ENDJS
|
Line 632 ENDJS
|
|
|
} |
} |
|
|
|
sub javascript_array_indexof { |
|
return <<ENDJS; |
|
<script type="text/javascript" language="JavaScript"> |
|
// <![CDATA[ |
|
|
|
if (!Array.prototype.indexOf) { |
|
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { |
|
"use strict"; |
|
if (this === void 0 || this === null) { |
|
throw new TypeError(); |
|
} |
|
var t = Object(this); |
|
var len = t.length >>> 0; |
|
if (len === 0) { |
|
return -1; |
|
} |
|
var n = 0; |
|
if (arguments.length > 0) { |
|
n = Number(arguments[1]); |
|
if (n !== n) { // shortcut for verifying if it's NaN |
|
n = 0; |
|
} else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { |
|
n = (n > 0 || -1) * Math.floor(Math.abs(n)); |
|
} |
|
} |
|
if (n >= len) { |
|
return -1; |
|
} |
|
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); |
|
for (; k < len; k++) { |
|
if (k in t && t[k] === searchElement) { |
|
return k; |
|
} |
|
} |
|
return -1; |
|
} |
|
} |
|
|
|
// ]]> |
|
</script> |
|
|
|
ENDJS |
|
|
|
} |
|
|
sub userbrowser_javascript { |
sub userbrowser_javascript { |
my $id_functions = &javascript_index_functions(); |
my $id_functions = &javascript_index_functions(); |
return <<"ENDUSERBRW"; |
return <<"ENDUSERBRW"; |
Line 766 sub selectcourse_link {
|
Line 847 sub selectcourse_link {
|
} elsif ($selecttype eq 'Course/Community') { |
} elsif ($selecttype eq 'Course/Community') { |
$linktext = &mt('Select Course/Community'); |
$linktext = &mt('Select Course/Community'); |
$type = ''; |
$type = ''; |
|
} elsif ($selecttype eq 'Select') { |
|
$linktext = &mt('Select'); |
|
$type = ''; |
} |
} |
return '<span class="LC_nobreak">' |
return '<span class="LC_nobreak">' |
."<a href='" |
."<a href='" |
Line 1090 a new window using Javascript. (Default
|
Line 1174 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 1218 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 1293 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 1314 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 1330 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 1387 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 1428 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 1732 sub create_workbook {
|
Line 1806 sub create_workbook {
|
return (undef); |
return (undef); |
} |
} |
# |
# |
$workbook->set_tempdir('/home/httpd/perl/tmp'); |
$workbook->set_tempdir(LONCAPA::tempdir()); |
# |
# |
my $format = &Apache::loncommon::define_excel_formats($workbook); |
my $format = &Apache::loncommon::define_excel_formats($workbook); |
return ($workbook,$filename,$format); |
return ($workbook,$filename,$format); |
Line 1870 sub multiple_select_form {
|
Line 1944 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 1960 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 2287 function set_auth_radio_buttons(newvalue
|
Line 2361 function set_auth_radio_buttons(newvalue
|
var numauthchoices = currentform.login.length; |
var numauthchoices = currentform.login.length; |
if (typeof numauthchoices == "undefined") { |
if (typeof numauthchoices == "undefined") { |
return; |
return; |
} |
} |
var i=0; |
var i=0; |
while (i < numauthchoices) { |
while (i < numauthchoices) { |
if (currentform.login[i].value == newvalue) { break; } |
if (currentform.login[i].value == newvalue) { break; } |
Line 3260 sub filemimetype {
|
Line 3334 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'), map { $_,$_ } sort(keys(%category_extensions))}); |
{'' => &mt('Any category'), map { $_,$_ } sort(keys(%category_extensions))}); |
} |
} |
|
|
=pod |
=pod |
Line 3433 sub get_previous_attempt {
|
Line 3507 sub get_previous_attempt {
|
my $data=$parts[-1]; |
my $data=$parts[-1]; |
next if ($data eq 'foilorder'); |
next if ($data eq 'foilorder'); |
pop(@parts); |
pop(@parts); |
|
$prevattempts.='<th>'.&mt('Part ').join('.',@parts).'<br />'.$data.' </th>'; |
if ($data eq 'type') { |
if ($data eq 'type') { |
unless ($showsurv) { |
unless ($showsurv) { |
my $id = join(',',@parts); |
my $id = join(',',@parts); |
Line 3441 sub get_previous_attempt {
|
Line 3516 sub get_previous_attempt {
|
$lasthidden{$ign.'.'.$id} = 1; |
$lasthidden{$ign.'.'.$id} = 1; |
} |
} |
} |
} |
delete($lasthash{$key}); |
} |
} else { |
|
$prevattempts.='<th>'.&mt('Part ').join('.',@parts).'<br />'.$data.' </th>'; |
|
} |
|
} else { |
} else { |
if ($#parts == 0) { |
if ($#parts == 0) { |
$prevattempts.='<th>'.$parts[0].'</th>'; |
$prevattempts.='<th>'.$parts[0].'</th>'; |
Line 3561 sub get_previous_attempt {
|
Line 3633 sub get_previous_attempt {
|
|
|
sub format_previous_attempt_value { |
sub format_previous_attempt_value { |
my ($key,$value) = @_; |
my ($key,$value) = @_; |
if ($key =~ /timestamp/) { |
if (($key =~ /timestamp/) || ($key=~/duedate/)) { |
$value = &Apache::lonlocal::locallocaltime($value); |
$value = &Apache::lonlocal::locallocaltime($value); |
} elsif (ref($value) eq 'ARRAY') { |
} elsif (ref($value) eq 'ARRAY') { |
$value = '('.join(', ', @{ $value }).')'; |
$value = '('.join(', ', @{ $value }).')'; |
Line 3570 sub format_previous_attempt_value {
|
Line 3642 sub format_previous_attempt_value {
|
my @anskeys = sort(keys(%answers)); |
my @anskeys = sort(keys(%answers)); |
if (@anskeys == 1) { |
if (@anskeys == 1) { |
my $answer = $answers{$anskeys[0]}; |
my $answer = $answers{$anskeys[0]}; |
if ($answer =~ m{\Q\0\E}) { |
if ($answer =~ m{\0}) { |
$answer =~ s{\Q\0\E}{, }g; |
$answer =~ s{\0}{,}g; |
} |
} |
my $tag_internal_answer_name = 'INTERNAL'; |
my $tag_internal_answer_name = 'INTERNAL'; |
if ($anskeys[0] eq $tag_internal_answer_name) { |
if ($anskeys[0] eq $tag_internal_answer_name) { |
$value = $answer; |
$value = $answer; |
} else { |
} else { |
$value = $anskeys[0].'='.$answer; |
$value = $anskeys[0].'='.$answer; |
} |
} |
} else { |
} else { |
foreach my $ans (@anskeys) { |
foreach my $ans (@anskeys) { |
my $answer = $answers{$ans}; |
my $answer = $answers{$ans}; |
if ($answer =~ m{\Q\0\E}) { |
if ($answer =~ m{\0}) { |
$answer =~ s{\Q\0\E}{, }g; |
$answer =~ s{\0}{,}g; |
} |
} |
$value .= $ans.'='.$answer.'<br />';; |
$value .= $ans.'='.$answer.'<br />';; |
} |
} |
} |
} |
} else { |
} else { |
$value = &unescape($value); |
$value = &unescape($value); |
Line 4282 sub get_domainconf {
|
Line 4354 sub get_domainconf {
|
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
if ($key eq 'loginvia') { |
if ($key eq 'loginvia') { |
if (ref($domconfig{'login'}{'loginvia'}) eq 'HASH') { |
if (ref($domconfig{'login'}{'loginvia'}) eq 'HASH') { |
my @ids = &Apache::lonnet::current_machine_ids(); |
foreach my $hostname (keys(%{$domconfig{'login'}{'loginvia'}})) { |
foreach my $hostname (@ids) { |
|
if (ref($domconfig{'login'}{'loginvia'}{$hostname}) eq 'HASH') { |
if (ref($domconfig{'login'}{'loginvia'}{$hostname}) eq 'HASH') { |
if ($domconfig{'login'}{'loginvia'}{$hostname}{'server'}) { |
if ($domconfig{'login'}{'loginvia'}{$hostname}{'server'}) { |
my $server = $domconfig{'login'}{'loginvia'}{$hostname}{'server'}; |
my $server = $domconfig{'login'}{'loginvia'}{$hostname}{'server'}; |
Line 4292 sub get_domainconf {
|
Line 4363 sub get_domainconf {
|
|
|
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'custompath'}; |
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'custompath'}; |
} else { |
} else { |
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'}; |
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'}; |
} |
} |
if ($domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}) { |
if ($domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}) { |
$designhash{$udom.'.login.loginvia_exempt_'.$hostname} = $domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}; |
$designhash{$udom.'.login.loginvia_exempt_'.$hostname} = $domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}; |
Line 4433 sub designparm {
|
Line 4504 sub designparm {
|
return $env{'environment.color.'.$which}; |
return $env{'environment.color.'.$which}; |
} |
} |
$domain=&determinedomain($domain); |
$domain=&determinedomain($domain); |
my %domdesign = &get_domainconf($domain); |
my %domdesign; |
|
unless ($domain eq 'public') { |
|
%domdesign = &get_domainconf($domain); |
|
} |
my $output; |
my $output; |
if ($domdesign{$domain.'.'.$which} ne '') { |
if ($domdesign{$domain.'.'.$which} ne '') { |
$output = $domdesign{$domain.'.'.$which}; |
$output = $domdesign{$domain.'.'.$which}; |
Line 4496 Returns: HTML div with $content
|
Line 4570 Returns: HTML div with $content
|
sub head_subbox { |
sub head_subbox { |
my ($content)=@_; |
my ($content)=@_; |
my $output = |
my $output = |
'<div id="LC_head_subbox">' |
'<div class="LC_head_subbox">' |
.$content |
.$content |
.'</div>' |
.'</div>' |
} |
} |
Line 4592 Inputs:
|
Line 4666 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 4612 other decorations will be returned.
|
Line 4683 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 4654 sub bodytag {
|
Line 4725 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 4673 sub bodytag {
|
Line 4742 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 4689 sub bodytag {
|
Line 4758 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 4732 sub bodytag {
|
Line 4799 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 4745 sub bodytag {
|
Line 4812 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 { |
Line 4810 sub make_attr_string {
|
Line 4843 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 4923 sub standard_css {
|
Line 4942 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 4989 form, .inline {
|
Line 5009 form, .inline {
|
text-decoration:none; |
text-decoration:none; |
} |
} |
|
|
|
.LC_setting { |
|
text-decoration:underline; |
|
} |
|
|
.LC_error { |
.LC_error { |
color: red; |
color: red; |
font-size: larger; |
font-size: larger; |
Line 5153 td.LC_table_cell_checkbox {
|
Line 5177 td.LC_table_cell_checkbox {
|
overflow: hidden; |
overflow: hidden; |
margin: 0; |
margin: 0; |
padding: 0; |
padding: 0; |
|
text-align: left; |
} |
} |
|
|
/* Preliminary fix to hide breadcrumbs inside remote control window */ |
.LC_head_subbox { |
#LC_remote #LC_breadcrumbs { |
|
display:none; |
|
} |
|
|
|
#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; |
padding: 3px; |
|
text-align: left; |
} |
} |
|
|
.LC_fontsize_medium { |
.LC_fontsize_medium { |
Line 5188 td.LC_table_cell_checkbox {
|
Line 5209 td.LC_table_cell_checkbox {
|
|
|
li.LC_menubuttons_inline_text img,a { |
li.LC_menubuttons_inline_text img,a { |
cursor:pointer; |
cursor:pointer; |
|
text-decoration: none; |
} |
} |
|
|
.LC_menubuttons_link { |
.LC_menubuttons_link { |
Line 5235 table.LC_nested {
|
Line 5257 table.LC_nested {
|
width: 100%; |
width: 100%; |
} |
} |
|
|
.ui-accordion, |
|
.ui-accordion table.LC_data_table, |
|
.ui-accordion table.LC_nested_outer{ |
|
border: 0px; |
|
border-spacing: 0px; |
|
margin: 3px; |
|
} |
|
|
|
table.LC_data_table tr th, |
table.LC_data_table tr th, |
table.LC_calendar tr th, |
table.LC_calendar tr th, |
table.LC_prior_tries tr th, |
table.LC_prior_tries tr th, |
Line 5358 table.LC_nested tr td.LC_right_item {
|
Line 5372 table.LC_nested tr td.LC_right_item {
|
text-align: right; |
text-align: right; |
} |
} |
|
|
.ui-accordion table.LC_nested tr.LC_odd_row td.LC_left_item, |
|
.ui-accordion table.LC_nested tr.LC_even_row td.LC_left_item { |
|
text-align: right; |
|
width: 40%; |
|
padding-right:10px; |
|
vertical-align: top; |
|
padding: 5px; |
|
} |
|
|
|
.ui-accordion table.LC_nested tr.LC_odd_row td.LC_right_item, |
|
.ui-accordion table.LC_nested tr.LC_even_row td.LC_right_item { |
|
text-align: left; |
|
width: 60%; |
|
padding: 2px 4px; |
|
} |
|
|
|
table.LC_nested tr.LC_odd_row td { |
table.LC_nested tr.LC_odd_row td { |
background-color: #EEEEEE; |
background-color: #EEEEEE; |
} |
} |
Line 5700 table.LC_group_priv td {
|
Line 5698 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 6143 fieldset > legend {
|
Line 6131 fieldset > legend {
|
|
|
#LC_nav_bar { |
#LC_nav_bar { |
float: left; |
float: left; |
|
background-color: $pgbg_or_bgcolor; |
margin: 0 0 2px 0; |
margin: 0 0 2px 0; |
} |
} |
|
|
Line 6151 fieldset > legend {
|
Line 6140 fieldset > legend {
|
padding: 0; |
padding: 0; |
font-weight: bold; |
font-weight: bold; |
text-align: center; |
text-align: center; |
|
background-color: $pgbg_or_bgcolor; |
} |
} |
|
|
#LC_nav_bar em { |
#LC_nav_bar em { |
Line 6158 fieldset > legend {
|
Line 6148 fieldset > legend {
|
font-style: normal; |
font-style: normal; |
} |
} |
|
|
/* Preliminary fix to hide nav_bar inside bookmarks window */ |
|
#LC_bookmarks #LC_nav_bar { |
|
display:none; |
|
} |
|
|
|
ol.LC_primary_menu { |
ol.LC_primary_menu { |
float: right; |
float: right; |
margin: 0; |
margin: 0; |
} |
background-color: $pgbg_or_bgcolor; |
|
|
span.LC_new_message{ |
|
font-weight:bold; |
|
color: darkred; |
|
} |
} |
|
|
ol#LC_PathBreadcrumbs { |
ol#LC_PathBreadcrumbs { |
Line 6193 ol.LC_primary_menu a {
|
Line 6174 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 6225 ul#LC_secondary_menu {
|
Line 6211 ul#LC_secondary_menu {
|
padding: 0; |
padding: 0; |
margin: 0; |
margin: 0; |
width: 100%; |
width: 100%; |
|
text-align: left; |
} |
} |
|
|
ul#LC_secondary_menu li { |
ul#LC_secondary_menu li { |
Line 6334 ul.LC_TabContentBigger li a {
|
Line 6321 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 6358 ul.LC_TabContentBigger li.active b {
|
Line 6345 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: 0; |
border: 0; |
cursor:default; |
|
} |
} |
|
|
|
|
ul.LC_CourseBreadcrumbs { |
ul.LC_CourseBreadcrumbs { |
background: $sidebg; |
background: $sidebg; |
line-height: 32px; |
line-height: 32px; |
Line 6529 a#LC_content_toolbar_firsthomework {
|
Line 6516 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 6621 ul.LC_funclist li {
|
Line 6600 ul.LC_funclist li {
|
line-height: 150%; |
line-height: 150%; |
} |
} |
|
|
.ui-accordion .LC_advanced_toggle { |
.LC_hidden { |
float: right; |
display: none; |
font-size: 90%; |
|
padding: 0px 4px |
|
} |
} |
|
|
END |
END |
Line 6678 sub headtag {
|
Line 6655 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 6705 ADDMETA
|
Line 6682 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 6758 sub xml_begin {
|
Line 6735 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 6832 $args - additional optional args support
|
Line 6772 $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 6850 $args - additional optional args support
|
Line 6788 $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 6858 sub start_page {
|
Line 6804 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 6878 sub start_page {
|
Line 6827 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 6895 sub start_page {
|
Line 6843 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 6923 sub start_page {
|
Line 6867 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 7019 sub validate_page {
|
Line 6941 sub validate_page {
|
} |
} |
} |
} |
|
|
|
|
|
sub start_scrollbox { |
|
my ($outerwidth,$width,$height,$id)=@_; |
|
unless ($outerwidth) { $outerwidth='520px'; } |
|
unless ($width) { $width='500px'; } |
|
unless ($height) { $height='200px'; } |
|
my $div_id; |
|
if ($id ne '') { |
|
$div_id = " id='$id'"; |
|
} |
|
return "<table style='width: $outerwidth; border: 1px solid black;'><tr><td style='width: $width;' bgcolor='#FFFFFF'><div style='overflow:auto; width:$width; height: $height;'$div_id>"; |
|
} |
|
|
|
sub end_scrollbox { |
|
return '</td></tr></table>'; |
|
} |
|
|
sub simple_error_page { |
sub simple_error_page { |
my ($r,$title,$msg) = @_; |
my ($r,$title,$msg) = @_; |
my $page = |
my $page = |
Line 7046 sub simple_error_page {
|
Line 6985 sub simple_error_page {
|
} |
} |
|
|
sub start_data_table { |
sub start_data_table { |
my ($add_class) = @_; |
my ($add_class,$id) = @_; |
my $css_class = (join(' ','LC_data_table',$add_class)); |
my $css_class = (join(' ','LC_data_table',$add_class)); |
&start_data_table_count(); |
my $table_id; |
return '<table class="'.$css_class.'">'."\n"; |
if (defined($id)) { |
|
$table_id = ' id="'.$id.'"'; |
|
} |
|
&start_data_table_count(); |
|
return '<table class="'.$css_class.'"'.$table_id.'>'."\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 7816 sub get_secgrprole_info {
|
Line 7761 sub get_secgrprole_info {
|
} |
} |
|
|
sub user_picker { |
sub user_picker { |
my ($dom,$srch,$forcenewuser,$caller,$cancreate,$usertype) = @_; |
my ($dom,$srch,$forcenewuser,$caller,$cancreate,$usertype,$context) = @_; |
my $currdom = $dom; |
my $currdom = $dom; |
my %curr_selected = ( |
my %curr_selected = ( |
srchin => 'dom', |
srchin => 'dom', |
Line 7907 sub user_picker {
|
Line 7852 sub user_picker {
|
$srchtypesel .= "\n </select>\n"; |
$srchtypesel .= "\n </select>\n"; |
|
|
my ($newuserscript,$new_user_create); |
my ($newuserscript,$new_user_create); |
|
my $context_dom = $env{'request.role.domain'}; |
|
if ($context eq 'requestcrs') { |
|
if ($env{'form.coursedom'} ne '') { |
|
$context_dom = $env{'form.coursedom'}; |
|
} |
|
} |
if ($forcenewuser) { |
if ($forcenewuser) { |
if (ref($srch) eq 'HASH') { |
if (ref($srch) eq 'HASH') { |
if ($srch->{'srchby'} eq 'uname' && $srch->{'srchtype'} eq 'exact' && $srch->{'srchin'} eq 'dom' && $srch->{'srchdomain'} eq $env{'request.role.domain'}) { |
if ($srch->{'srchby'} eq 'uname' && $srch->{'srchtype'} eq 'exact' && $srch->{'srchin'} eq 'dom' && $srch->{'srchdomain'} eq $context_dom) { |
if ($cancreate) { |
if ($cancreate) { |
$new_user_create = '<p> <input type="submit" name="forcenew" value="'.&HTML::Entities::encode(&mt('Make new user "[_1]"',$srchterm),'<>&"').'" onclick="javascript:setSearch(\'1\','.$caller.');" /> </p>'; |
$new_user_create = '<p> <input type="submit" name="forcenew" value="'.&HTML::Entities::encode(&mt('Make new user "[_1]"',$srchterm),'<>&"').'" onclick="javascript:setSearch(\'1\','.$caller.');" /> </p>'; |
} else { |
} else { |
Line 7949 function setSearch(createnew,callingForm
|
Line 7899 function setSearch(createnew,callingForm
|
} |
} |
} |
} |
for (var i=0; i<callingForm.srchdomain.length; i++) { |
for (var i=0; i<callingForm.srchdomain.length; i++) { |
if (callingForm.srchdomain.options[i].value == '$env{'request.role.domain'}') { |
if (callingForm.srchdomain.options[i].value == '$context_dom') { |
callingForm.srchdomain.selectedIndex = i; |
callingForm.srchdomain.selectedIndex = i; |
} |
} |
} |
} |
Line 8492 sub ask_for_embedded_content {
|
Line 8442 sub ask_for_embedded_content {
|
$url .= $current_path; |
$url .= $current_path; |
$getpropath = 1; |
$getpropath = 1; |
} elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank') || |
} elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank') || |
($actionurl eq '/adm/imsimport')) { |
($actionurl eq '/adm/imsimport')) { |
($uname,my $rest) = ($args->{'current_path'} =~ m{/priv/($match_username)/?(.*)$}); |
($uname,my $rest) = ($args->{'current_path'} =~ m{/priv/($match_username)/?(.*)$}); |
$url = '/home/'.$uname.'/public_html/'; |
$url = '/home/'.$uname.'/public_html/'; |
$toplevel = $url; |
$toplevel = $url; |
Line 8543 sub ask_for_embedded_content {
|
Line 8493 sub ask_for_embedded_content {
|
} |
} |
foreach my $path (keys(%subdependencies)) { |
foreach my $path (keys(%subdependencies)) { |
my %currsubfile; |
my %currsubfile; |
if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { |
if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { |
my @subdir_list = &Apache::lonnet::dirlist($url.$path,$udom,$uname,$getpropath); |
my @subdir_list = &Apache::lonnet::dirlist($url.$path,$udom,$uname,$getpropath); |
foreach my $line (@subdir_list) { |
foreach my $line (@subdir_list) { |
my ($file_name,$rest) = split(/\&/,$line,2); |
my ($file_name,$rest) = split(/\&/,$line,2); |
Line 8651 sub ask_for_embedded_content {
|
Line 8601 sub ask_for_embedded_content {
|
} elsif ($applies) { |
} elsif ($applies) { |
$output = '<b>'.&mt('Referenced files').'</b>:<br />'; |
$output = '<b>'.&mt('Referenced files').'</b>:<br />'; |
if ($applies > 1) { |
if ($applies > 1) { |
$output .= |
$output .= |
&mt('No files need to be uploaded, as one of the following applies to each reference:').'<ul>'; |
&mt('No files need to be uploaded, as one of the following applies to each reference:').'<ul>'; |
if ($numremref) { |
if ($numremref) { |
$output .= '<li>'.&mt('reference is to a URL which points to another server').'</li>'."\n"; |
$output .= '<li>'.&mt('reference is to a URL which points to another server').'</li>'."\n"; |
Line 8681 sub ask_for_embedded_content {
|
Line 8631 sub ask_for_embedded_content {
|
$embed_file,\%mapping, |
$embed_file,\%mapping, |
$allfiles,$codebase); |
$allfiles,$codebase); |
} else { |
} else { |
$pathchange_output .= |
$pathchange_output .= |
&start_data_table_row(). |
&start_data_table_row(). |
'<td><input type ="checkbox" name="namechange" value="'. |
'<td><input type ="checkbox" name="namechange" value="'. |
$chgcount.'" checked="checked" /></td>'. |
$chgcount.'" checked="checked" /></td>'. |
Line 8700 sub ask_for_embedded_content {
|
Line 8650 sub ask_for_embedded_content {
|
$output .= '<input type ="hidden" name="number_pathchange_items" value="'. |
$output .= '<input type ="hidden" name="number_pathchange_items" value="'. |
$numpathchg.'" />'."\n"; |
$numpathchg.'" />'."\n"; |
} |
} |
if (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank') || |
if (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank') || |
($actionurl eq '/adm/imsimport')) { |
($actionurl eq '/adm/imsimport')) { |
$output .= '<input type="hidden" name="phase" value="three" />'."\n"; |
$output .= '<input type="hidden" name="phase" value="three" />'."\n"; |
} elsif ($actionurl eq '/adm/portfolio' || $actionurl eq '/adm/coursegrp_portfolio') { |
} elsif ($actionurl eq '/adm/portfolio' || $actionurl eq '/adm/coursegrp_portfolio') { |
Line 8712 sub ask_for_embedded_content {
|
Line 8662 sub ask_for_embedded_content {
|
my %pathchange = (); |
my %pathchange = (); |
$output .= &modify_html_form('pathchange',$actionurl,$state,\%pathchange,$pathchange_output); |
$output .= &modify_html_form('pathchange',$actionurl,$state,\%pathchange,$pathchange_output); |
if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { |
if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { |
$output .= '<p>'.&mt('or').'</p>'; |
$output .= '<p>'.&mt('or').'</p>'; |
} |
} |
} |
} |
return ($output,$num,$numpathchg); |
return ($output,$num,$numpathchg); |
} |
} |
Line 8728 sub embedded_file_element {
|
Line 8678 sub embedded_file_element {
|
} |
} |
$output .= '<input name="embedded_orig_'.$num.'" type="hidden" value="'. |
$output .= '<input name="embedded_orig_'.$num.'" type="hidden" value="'. |
&escape($embed_file).'" />'; |
&escape($embed_file).'" />'; |
unless (($context eq 'upload_embedded') && |
unless (($context eq 'upload_embedded') && |
($mapping->{$embed_file} eq $embed_file)) { |
($mapping->{$embed_file} eq $embed_file)) { |
$output .=' |
$output .=' |
<input name="embedded_ref_'.$num.'" type="hidden" value="'.&escape($mapping->{$embed_file}).'" />'; |
<input name="embedded_ref_'.$num.'" type="hidden" value="'.&escape($mapping->{$embed_file}).'" />'; |
Line 8829 sub upload_embedded {
|
Line 8779 sub upload_embedded {
|
next; |
next; |
} else { |
} else { |
$output .= &mt('Uploaded [_1]','<span class="LC_filename">'. |
$output .= &mt('Uploaded [_1]','<span class="LC_filename">'. |
$path.$fname.'</span>').'<br />'; |
$path.$fname.'</span>').'<br />'; |
} |
} |
} |
} |
} elsif ($context eq 'coursedoc') { |
} elsif ($context eq 'coursedoc') { |
Line 8887 sub upload_embedded {
|
Line 8837 sub upload_embedded {
|
if ($env{'form.embedded_ref_'.$i}) { |
if ($env{'form.embedded_ref_'.$i}) { |
$pathchange{$i} = 1; |
$pathchange{$i} = 1; |
} |
} |
|
} |
if ($output) { |
if ($output) { |
$output = '<p>'.$output.'</p>'; |
$output = '<p>'.$output.'</p>'; |
} |
} |
Line 8935 sub modify_html_form {
|
Line 8886 sub modify_html_form {
|
'<input type="hidden" name="embedded_orig_'.$i.'" value="'. |
'<input type="hidden" name="embedded_orig_'.$i.'" value="'. |
&escape($env{'form.embedded_orig_'.$i}).'" /></td>'. |
&escape($env{'form.embedded_orig_'.$i}).'" /></td>'. |
&end_data_table_row(); |
&end_data_table_row(); |
} |
} |
} |
} |
} else { |
} else { |
$modifyform = $pathchgtable; |
$modifyform = $pathchgtable; |
Line 8986 sub modify_html_refs {
|
Line 8937 sub modify_html_refs {
|
$content = &Apache::lonnet::getfile($container); |
$content = &Apache::lonnet::getfile($container); |
return if ($content eq '-1'); |
return if ($content eq '-1'); |
} else { |
} else { |
return unless ($container =~ /^\Q$dir_root\E/); |
return unless ($container =~ /^\Q$dir_root\E/); |
if (open(my $fh,"<$container")) { |
if (open(my $fh,"<$container")) { |
$content = join('', <$fh>); |
$content = join('', <$fh>); |
close($fh); |
close($fh); |
Line 8998 sub modify_html_refs {
|
Line 8949 sub modify_html_refs {
|
my $mm = new File::MMagic; |
my $mm = new File::MMagic; |
my $mime_type = $mm->checktype_contents($content); |
my $mime_type = $mm->checktype_contents($content); |
if ($mime_type eq 'text/html') { |
if ($mime_type eq 'text/html') { |
my $parse_result = |
my $parse_result = |
&Apache::lonnet::extract_embedded_items($container,\%allfiles, |
&Apache::lonnet::extract_embedded_items($container,\%allfiles, |
\%codebase,\$content); |
\%codebase,\$content); |
if ($parse_result eq 'ok') { |
if ($parse_result eq 'ok') { |
Line 9008 sub modify_html_refs {
|
Line 8959 sub modify_html_refs {
|
if ($allfiles{$ref}) { |
if ($allfiles{$ref}) { |
my $newname = $orig; |
my $newname = $orig; |
my ($attrib_regexp,$codebase); |
my ($attrib_regexp,$codebase); |
my $attrib_regexp = &unescape($env{'form.embedded_attrib_'.$i}); |
$attrib_regexp = &unescape($env{'form.embedded_attrib_'.$i}); |
if ($attrib_regexp =~ /:/) { |
if ($attrib_regexp =~ /:/) { |
$attrib_regexp =~ s/\:/|/g; |
$attrib_regexp =~ s/\:/|/g; |
} |
} |
Line 9017 sub modify_html_refs {
|
Line 8968 sub modify_html_refs {
|
$count += $numchg; |
$count += $numchg; |
} |
} |
if ($env{'form.embedded_codebase_'.$i} ne '') { |
if ($env{'form.embedded_codebase_'.$i} ne '') { |
my $codebase = &unescape($env{'form.embedded_codebase_'.$i}); |
$codebase = &unescape($env{'form.embedded_codebase_'.$i}); |
my $numchg = ($content =~ s/(codebase\s*=\s*["']?)\Q$codebase\E(["']?)/$1.$2/i); #' stupid emacs |
my $numchg = ($content =~ s/(codebase\s*=\s*["']?)\Q$codebase\E(["']?)/$1.$2/i); #' stupid emacs |
$codebasecount ++; |
$codebasecount ++; |
} |
} |
Line 9031 sub modify_html_refs {
|
Line 8982 sub modify_html_refs {
|
my ($fname) = ($container =~ m{/([^/]+)$}); |
my ($fname) = ($container =~ m{/([^/]+)$}); |
$output = '<p>'.&mt('Updated [quant,_1,reference] in [_2].', |
$output = '<p>'.&mt('Updated [quant,_1,reference] in [_2].', |
$count,'<span class="LC_filename">'. |
$count,'<span class="LC_filename">'. |
$fname.'</span>').'</p>'; |
$fname.'</span>').'</p>'; |
} else { |
} else { |
$output = '<p class="LC_error">'. |
$output = '<p class="LC_error">'. |
&mt('Error: update failed for: [_1].', |
&mt('Error: update failed for: [_1].', |
Line 9083 sub check_for_upload {
|
Line 9034 sub check_for_upload {
|
my $filesize = length($env{'form.'.$element}); |
my $filesize = length($env{'form.'.$element}); |
if (!$filesize) { |
if (!$filesize) { |
my $msg = '<span class="LC_error">'. |
my $msg = '<span class="LC_error">'. |
&mt('Unable to upload [_1]. (size = [_2] bytes)', |
&mt('Unable to upload [_1]. (size = [_2] bytes)', |
'<span class="LC_filename">'.$fname.'</span>', |
'<span class="LC_filename">'.$fname.'</span>', |
$filesize).'<br />'. |
$filesize).'<br />'. |
&mt('Either the file you uploaded was empty, or your web browser was unable to read its contents.').'<br />'; |
&mt('Either the file you attempted to upload was empty, or your web browser was unable to read its contents.').'<br />'. |
'</span>'; |
'</span>'; |
return ('zero_bytes',$msg); |
return ('zero_bytes',$msg); |
} |
} |
Line 9096 sub check_for_upload {
|
Line 9047 sub check_for_upload {
|
$getpropath); |
$getpropath); |
my $found_file = 0; |
my $found_file = 0; |
my $locked_file = 0; |
my $locked_file = 0; |
|
my @lockers; |
|
my $navmap; |
|
if ($env{'request.course.id'}) { |
|
$navmap = Apache::lonnavmaps::navmap->new(); |
|
} |
foreach my $line (@dir_list) { |
foreach my $line (@dir_list) { |
my ($file_name,$rest)=split(/\&/,$line,2); |
my ($file_name,$rest)=split(/\&/,$line,2); |
if ($file_name eq $fname){ |
if ($file_name eq $fname){ |
Line 9104 sub check_for_upload {
|
Line 9060 sub check_for_upload {
|
$file_name = $group.$file_name; |
$file_name = $group.$file_name; |
} |
} |
$found_file = 1; |
$found_file = 1; |
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { |
if (&Apache::lonnet::is_locked($file_name,$udom,$uname,\@lockers) eq 'true') { |
$locked_file = 1; |
foreach my $lock (@lockers) { |
|
if (ref($lock) eq 'ARRAY') { |
|
my ($symb,$crsid) = @{$lock}; |
|
if ($crsid eq $env{'request.course.id'}) { |
|
if (ref($navmap)) { |
|
my $res = $navmap->getBySymb($symb); |
|
foreach my $part (@{$res->parts()}) { |
|
my ($slot_status,$slot_time,$slot_name)=$res->check_for_slot($part); |
|
unless (($slot_status == $res->RESERVED) || |
|
($slot_status == $res->RESERVED_LOCATION)) { |
|
$locked_file = 1; |
|
} |
|
} |
|
} else { |
|
$locked_file = 1; |
|
} |
|
} else { |
|
$locked_file = 1; |
|
} |
|
} |
|
} |
} else { |
} else { |
my @info = split(/\&/,$rest); |
my @info = split(/\&/,$rest); |
my $currsize = $info[6]/1000; |
my $currsize = $info[6]/1000; |
Line 9189 sub check_for_traversal {
|
Line 9165 sub check_for_traversal {
|
|
|
=pod |
=pod |
|
|
|
=item * &get_turnedin_filepath() |
|
|
|
Determines path in a user's portfolio file for storage of files uploaded |
|
to a specific essayresponse or dropbox item. |
|
|
|
Inputs: 3 required + 1 optional. |
|
$symb is symb for resource, $uname and $udom are for current user (required). |
|
$caller is optional (can be "submission", if routine is called when storing |
|
an upoaded file when "Submit Answer" button was pressed). |
|
|
|
Returns array containing $path and $multiresp. |
|
$path is path in portfolio. $multiresp is 1 if this resource contains more |
|
than one file upload item. Callers of routine should append partid as a |
|
subdirectory to $path in cases where $multiresp is 1. |
|
|
|
Called by: homework/essayresponse.pm and homework/structuretags.pm |
|
|
|
=cut |
|
|
|
sub get_turnedin_filepath { |
|
my ($symb,$uname,$udom,$caller) = @_; |
|
my ($map,$resid,$resurl)=&Apache::lonnet::decode_symb($symb); |
|
my $turnindir; |
|
my %userhash = &Apache::lonnet::userenvironment($udom,$uname,'turnindir'); |
|
$turnindir = $userhash{'turnindir'}; |
|
my ($path,$multiresp); |
|
if ($turnindir eq '') { |
|
if ($caller eq 'submission') { |
|
$turnindir = &mt('turned in'); |
|
$turnindir =~ s/\W+/_/g; |
|
my %newhash = ( |
|
'turnindir' => $turnindir, |
|
); |
|
&Apache::lonnet::put('environment',\%newhash,$udom,$uname); |
|
} |
|
} |
|
if ($turnindir ne '') { |
|
$path = '/'.$turnindir.'/'; |
|
my ($multipart,$turnin,@pathitems); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (defined($navmap)) { |
|
my $mapres = $navmap->getResourceByUrl($map); |
|
if (ref($mapres)) { |
|
my $pcslist = $mapres->map_hierarchy(); |
|
if ($pcslist ne '') { |
|
foreach my $pc (split(/,/,$pcslist)) { |
|
my $res = $navmap->getByMapPc($pc); |
|
if (ref($res)) { |
|
my $title = $res->compTitle(); |
|
$title =~ s/\W+/_/g; |
|
if ($title ne '') { |
|
push(@pathitems,$title); |
|
} |
|
} |
|
} |
|
} |
|
my $maptitle = $mapres->compTitle(); |
|
$maptitle =~ s/\W+/_/g; |
|
if ($maptitle ne '') { |
|
push(@pathitems,$maptitle); |
|
} |
|
unless ($env{'request.state'} eq 'construct') { |
|
my $res = $navmap->getBySymb($symb); |
|
if (ref($res)) { |
|
my $partlist = $res->parts(); |
|
my $totaluploads = 0; |
|
if (ref($partlist) eq 'ARRAY') { |
|
foreach my $part (@{$partlist}) { |
|
my @types = $res->responseType($part); |
|
my @ids = $res->responseIds($part); |
|
for (my $i=0; $i < scalar(@ids); $i++) { |
|
if ($types[$i] eq 'essay') { |
|
my $partid = $part.'_'.$ids[$i]; |
|
if (&Apache::lonnet::EXT("resource.$partid.uploadedfiletypes") ne '') { |
|
$totaluploads ++; |
|
} |
|
} |
|
} |
|
} |
|
if ($totaluploads > 1) { |
|
$multiresp = 1; |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
return; |
|
} |
|
} else { |
|
return; |
|
} |
|
my $restitle=&Apache::lonnet::gettitle($symb); |
|
$restitle =~ s/\W+/_/g; |
|
if ($restitle eq '') { |
|
$restitle = ($resurl =~ m{/[^/]+$}); |
|
if ($restitle eq '') { |
|
$restitle = time; |
|
} |
|
} |
|
push(@pathitems,$restitle); |
|
$path .= join('/',@pathitems); |
|
} |
|
return ($path,$multiresp); |
|
} |
|
|
|
=pod |
|
|
=back |
=back |
|
|
=head1 CSV Upload/Handling functions |
=head1 CSV Upload/Handling functions |
Line 11108 sub construct_course {
|
Line 11191 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 11273 sub init_user_environment {
|
Line 11358 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 11313 sub init_user_environment {
|
Line 11395 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 %is_adv = ( is_adv => $env{'user.adv'} ); |
my %domdef = &Apache::lonnet::get_domain_defaults($domain); |
my %domdef; |
|
unless ($domain eq 'public') { |
|
%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} = |