version 1.1009, 2011/06/05 12:59:47
|
version 1.1017, 2011/08/15 05:16:30
|
Line 475 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 632 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 1758 sub create_workbook {
|
Line 1803 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 3459 sub get_previous_attempt {
|
Line 3504 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 3467 sub get_previous_attempt {
|
Line 3513 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 3587 sub get_previous_attempt {
|
Line 3630 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 4308 sub get_domainconf {
|
Line 4351 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 4318 sub get_domainconf {
|
Line 4360 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 4459 sub designparm {
|
Line 4501 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 9109 sub check_for_traversal {
|
Line 9154 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 11239 sub init_user_environment {
|
Line 11391 sub init_user_environment {
|
} |
} |
|
|
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} = |