version 1.95, 2006/03/15 19:41:26
|
version 1.103, 2006/06/07 21:15:01
|
Line 30 use Apache::lontexconvert;
|
Line 30 use Apache::lontexconvert;
|
use Apache::lonfeedback; |
use Apache::lonfeedback; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::longroup; |
|
use lib '/home/httpd/lib/perl'; |
|
use LONCAPA; |
|
|
# receives a file name and path stub from username/userfiles/portfolio/ |
# receives a file name and path stub from username/userfiles/portfolio/ |
# returns an anchor tag consisting encoding filename and currentpath |
# returns an anchor tag consisting encoding filename and currentpath |
Line 123 sub display_directory {
|
Line 126 sub display_directory {
|
my $checked_files; |
my $checked_files; |
my $port_path = &get_port_path($group); |
my $port_path = &get_port_path($group); |
my ($uname,$udom) = &get_name_dom($group); |
my ($uname,$udom) = &get_name_dom($group); |
my $namespace = &get_namespace($group); |
|
if (defined($group)) { |
if (defined($group)) { |
$groupitem = '<input type="hidden" name="group" value="'.$group.'" />'; |
$groupitem = '<input type="hidden" name="group" value="'.$group.'" />'; |
$groupecho = '&group='.$group; |
$groupecho = '&group='.$group; |
} |
} |
my %locked_files = &Apache::lonnet::get_marked_as_readonly_hash ($namespace,$udom,$uname); |
my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom, |
|
$uname); |
|
my %locked_files = &Apache::lonnet::get_marked_as_readonly_hash( |
|
$current_permissions,$group); |
|
my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group); |
|
my $now = time; |
if ($env{"form.mode"} eq 'selectfile'){ |
if ($env{"form.mode"} eq 'selectfile'){ |
&select_files($r); |
&select_files($r); |
$checked_files =&Apache::lonnet::files_in_path($uname,$env{'form.currentpath'}); |
$checked_files =&Apache::lonnet::files_in_path($uname,$env{'form.currentpath'}); |
Line 151 sub display_directory {
|
Line 158 sub display_directory {
|
$r->print('<form method="post" name="checkselect" action="'.$url.'">'); |
$r->print('<form method="post" name="checkselect" action="'.$url.'">'); |
} else { |
} else { |
$r->print('<table border="0" cellspacing="2" cellpadding="2">'. |
$r->print('<table border="0" cellspacing="2" cellpadding="2">'. |
'<tr><th colspan="2">Actions</th><th> </th><th>Name</th><th>Size</th><th>Last Modified</th></tr>'); |
'<tr><th colspan="2">Actions</th><th> </th><th>Name</th><th>Size</th><th>Last Modified</th><th>Current Access Status</th></tr>'); |
$r->print('<form method="post" action="'.$url.'">'); |
$r->print('<form method="post" action="'.$url.'">'); |
} |
} |
if (defined($group)) { |
if (defined($group)) { |
Line 181 sub display_directory {
|
Line 188 sub display_directory {
|
$r->print('</tr>'); |
$r->print('</tr>'); |
} else { |
} else { |
$r->print('<tr bgcolor="#CCCCFF">'); |
$r->print('<tr bgcolor="#CCCCFF">'); |
|
my $fullpath = $current_path.$filename; |
|
$fullpath = &prepend_group($fullpath,$group); |
if ($select_mode eq 'true'){ |
if ($select_mode eq 'true'){ |
$r->print('<td><input type="checkbox" name="checkfile" value="'.$filename.'"'); |
$r->print('<td><input type="checkbox" name="checkfile" value="'.$filename.'"'); |
if ($$checked_files{$filename} eq 'selected') { |
if ($$checked_files{$filename} eq 'selected') { |
$r->print("CHECKED"); |
$r->print("CHECKED"); |
} |
} |
$r->print('></td>'); |
$r->print('></td>'); |
} else { |
} else { |
if (exists $locked_files{$current_path.$filename}){ |
if (exists $locked_files{$fullpath}) { |
$r->print('<td colspan="2"><a href="'.$url.'?lockinfo='.$current_path.$filename.$groupecho.'">Locked</a></td>'); |
$r->print('<td colspan="2"><a href="'.$url.'?lockinfo='.$current_path.$filename.$groupecho.'">Locked</a></td>'); |
} else { |
} else { |
my $cat='<img alt="'.&mt('Catalog Information'). |
my $cat='<img alt="'.&mt('Catalog Information'). |
Line 199 sub display_directory {
|
Line 208 sub display_directory {
|
</td>'); |
</td>'); |
} |
} |
} |
} |
|
my $curr_access; |
|
my $pub_access = 0; |
|
foreach my $key (sort(keys(%{$access_controls{$fullpath}}))) { |
|
my ($scope,$end,$start) = ($key =~ /^\d+:(\w+)_(\d*)_?(\d*)$/); |
|
if (($now > $start) && (!$end || $end > $now)) { |
|
if ($scope eq 'public') { |
|
$pub_access = 1; |
|
last; |
|
} |
|
} |
|
} |
|
if (!$pub_access) { |
|
$curr_access = 'Private' |
|
} elsif ($pub_access) { |
|
$curr_access = 'Public'; |
|
} |
$r->print('<td><img src="'.&Apache::loncommon::icon($filename).'"></td>'); |
$r->print('<td><img src="'.&Apache::loncommon::icon($filename).'"></td>'); |
$r->print('<td><a href="'.$href_location.$filename.'">'. |
$r->print('<td><a href="'.$href_location.$filename.'">'. |
$filename.'</a></td>'); |
$filename.'</a></td>'); |
$r->print('<td>'.$size.'</td>'); |
$r->print('<td>'.$size.'</td>'); |
$r->print('<td>'.&Apache::lonlocal::locallocaltime($mtime).'</td>'); |
$r->print('<td>'.&Apache::lonlocal::locallocaltime($mtime).'</td>'); |
|
$r->print('<td><nobr>'.&mt($curr_access).' '. |
|
'<a href="'.$url.'?access='.$filename. |
|
'&currentpath='.$current_path.$groupecho. |
|
'">'.&mt('View/Change').'</a></nobr></td>'); |
$r->print('</tr>'); |
$r->print('</tr>'); |
} |
} |
} |
} |
Line 229 sub display_directory {
|
Line 258 sub display_directory {
|
sub open_form { |
sub open_form { |
my ($r,$url)=@_; |
my ($r,$url)=@_; |
my @files=&Apache::loncommon::get_env_multiple('form.selectfile'); |
my @files=&Apache::loncommon::get_env_multiple('form.selectfile'); |
$r->print('<form method="post" action="'.$url.'">'); |
$r->print('<form name="portform" method="post" action="'.$url.'">'); |
$r->print('<input type="hidden" name="action" value="'. |
$r->print('<input type="hidden" name="action" value="'. |
$env{'form.action'}.'" />'); |
$env{'form.action'}.'" />'); |
$r->print('<input type="hidden" name="confirmed" value="1" />'); |
$r->print('<input type="hidden" name="confirmed" value="1" />'); |
Line 298 sub delete {
|
Line 327 sub delete {
|
my ($r,$url,$group)=@_; |
my ($r,$url,$group)=@_; |
my @check; |
my @check; |
my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'}; |
my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'}; |
|
$file_name = &prepend_group($file_name,$group); |
my @files=&Apache::loncommon::get_env_multiple('form.selectfile'); |
my @files=&Apache::loncommon::get_env_multiple('form.selectfile'); |
my ($uname,$udom) = &get_name_dom($group); |
my ($uname,$udom) = &get_name_dom($group); |
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { |
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { |
Line 373 sub rename {
|
Line 403 sub rename {
|
my ($r,$url,$group)=@_; |
my ($r,$url,$group)=@_; |
my $file_name = $env{'form.currentpath'}.$env{'form.rename'}; |
my $file_name = $env{'form.currentpath'}.$env{'form.rename'}; |
my ($uname,$udom) = &get_name_dom($group); |
my ($uname,$udom) = &get_name_dom($group); |
|
$file_name = &prepend_group($file_name,$group); |
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { |
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { |
$r->print ("The file is locked and cannot be renamed.<br />"); |
$r->print ("The file is locked and cannot be renamed.<br />"); |
$r->print(&done(undef,$url,$group)); |
$r->print(&done(undef,$url,$group)); |
Line 410 sub rename_confirmed {
|
Line 441 sub rename_confirmed {
|
} |
} |
$r->print(&done(undef,$url,$group)); |
$r->print(&done(undef,$url,$group)); |
} |
} |
|
|
sub select_files { |
sub select_files { |
my ($r,$group)=@_; |
my ($r,$group)=@_; |
if ($env{'form.continue'} eq 'true') { |
if ($env{'form.continue'} eq 'true') { |
Line 476 sub upload {
|
Line 508 sub upload {
|
foreach my $line (@dir_list) { |
foreach my $line (@dir_list) { |
my ($file_name)=split(/\&/,$line,2); |
my ($file_name)=split(/\&/,$line,2); |
if ($file_name eq $fname){ |
if ($file_name eq $fname){ |
|
$file_name = $env{'form.currentpath'}.$file_name; |
|
$file_name = &prepend_group($file_name,$group); |
$found_file = 1; |
$found_file = 1; |
if (&Apache::lonnet::is_locked($env{'form.currentpath'}.$file_name,$udom,$uname) eq 'true') { |
if (defined($group)) { |
|
$file_name = $group.'/'.$file_name; |
|
} |
|
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { |
$locked_file = 1; |
$locked_file = 1; |
} |
} |
} |
} |
Line 501 sub upload {
|
Line 538 sub upload {
|
} else { |
} else { |
my $result=&Apache::lonnet::userfileupload('uploaddoc','', |
my $result=&Apache::lonnet::userfileupload('uploaddoc','', |
$port_path.$env{'form.currentpath'}); |
$port_path.$env{'form.currentpath'}); |
print STDERR "result was $result for $port_path.$env{'form.currentpath'}\n"; |
|
if ($result !~ m|^/uploaded/|) { |
if ($result !~ m|^/uploaded/|) { |
$r->print('<font color="red"> An errror occured ('.$result. |
$r->print('<font color="red"> An errror occured ('.$result. |
') while trying to upload '.&display_file().'</font><br />'); |
') while trying to upload '.&display_file().'</font><br />'); |
Line 514 sub upload {
|
Line 550 sub upload {
|
sub lock_info { |
sub lock_info { |
my ($r,$url,$group) = @_; |
my ($r,$url,$group) = @_; |
my ($uname,$udom) = &get_name_dom($group); |
my ($uname,$udom) = &get_name_dom($group); |
my %current_permissions = &Apache::lonnet::dump('file_permissions',$udom,$uname); |
my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom, |
|
$uname); |
my $file_name = $env{'form.lockinfo'}; |
my $file_name = $env{'form.lockinfo'}; |
foreach my $key(keys(%current_permissions)) { |
$file_name = &prepend_group($file_name,$group); |
if ($file_name eq $key) { |
if (defined($file_name) && defined($$current_permissions{$file_name})) { |
foreach my $array_item (@{$current_permissions{$key}}) { |
foreach my $array_item (@{$$current_permissions{$file_name}}) { |
if (ref($array_item)) { |
if (ref($array_item) eq 'ARRAY') { |
$r->print('<strong>'.$key.'</strong> was submitted in response to problem: <strong>'. |
my $filetext; |
&Apache::lonnet::gettitle($$array_item[0]).'</strong><br />'); |
if (defined($group)) { |
my %course_description = &Apache::lonnet::coursedescription($$array_item[1]); |
$filetext = '<strong>'.$env{'form.lockinfo'}. |
$r->print('In the course: <strong>'.$course_description{'description'}.'</strong><br />'); |
'</strong> (group: '.$group.')'; |
# $r->print('the third is '.$$array_item[2].'<br>'); |
} else { |
# $r->print("item is $$array_item[0]<br> and $$array_item[0]"); |
$filetext = '<strong>'.$file_name.'</strong>'; |
} |
} |
|
$r->print(&mt('[_1] was submitted in response to problem: ', |
|
$filetext). |
|
'<strong>'.&Apache::lonnet::gettitle($$array_item[0]). |
|
'</strong><br />'); |
|
my %course_description = &Apache::lonnet::coursedescription($$array_item[1]); |
|
$r->print(&mt('In the course: <strong>[_1]</strong><br />', |
|
$course_description{'description'})); |
|
# $r->print('the third is '.$$array_item[2].'<br>'); |
|
# $r->print("item is $$array_item[0]<br> and $$array_item[0]"); |
} |
} |
} |
} |
} |
} |
$r->print(&done('Back',$url,$group)); |
$r->print(&done('Back',$url,$group)); |
return 'ok'; |
return 'ok'; |
Line 603 sub get_name_dom {
|
Line 649 sub get_name_dom {
|
return ($uname,$udom); |
return ($uname,$udom); |
} |
} |
|
|
|
sub prepend_group { |
|
my ($filename,$group) = @_; |
|
if (defined($group)) { |
|
$filename = $group.'/'.$filename; |
|
} |
|
return $filename; |
|
} |
|
|
sub get_namespace { |
sub get_namespace { |
my ($group) = @_; |
my ($group) = @_; |
my $namespace = 'portfolio'; |
my $namespace = 'portfolio'; |
Line 629 sub handler {
|
Line 683 sub handler {
|
my $r = shift; |
my $r = shift; |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['selectfile','currentpath','meta','lockinfo','currentfile', |
['selectfile','currentpath','meta','lockinfo','currentfile', |
'action','fieldname','mode','rename','continue','group']); |
'action','fieldname','mode','rename','continue','group','access']); |
my ($uname,$udom,$portfolio_root,$url,$group,$caller,$title); |
my ($uname,$udom,$portfolio_root,$url,$group,$caller,$title); |
if ($r->uri =~ m|^(/adm/)([^/]+)|) { |
if ($r->uri =~ m|^(/adm/)([^/]+)|) { |
$url = $1.$2; |
$url = $1.$2; |
Line 649 sub handler {
|
Line 703 sub handler {
|
$group = $env{'form.group'}; |
$group = $env{'form.group'}; |
$group =~ s/\W//g; |
$group =~ s/\W//g; |
if ($group) { |
if ($group) { |
my %curr_groups = (); |
|
($uname,$udom) = &get_name_dom($group); |
($uname,$udom) = &get_name_dom($group); |
if (&Apache::loncommon::coursegroups(\%curr_groups,$udom,$uname, |
my %curr_groups = &Apache::longroup::coursegroups($udom,$uname, |
$group)) { |
$group); |
|
if (%curr_groups) { |
if (($view_permission) || (&Apache::lonnet::allowed('rgf', |
if (($view_permission) || (&Apache::lonnet::allowed('rgf', |
$env{'request.course.id'}.'/'.$group))) { |
$env{'request.course.id'}.'/'.$group))) { |
$portfolio_root = &get_portfolio_root($group); |
$portfolio_root = &get_portfolio_root($group); |
Line 680 sub handler {
|
Line 734 sub handler {
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
# Give the LON-CAPA page header |
# Give the LON-CAPA page header |
my $html=&Apache::lonxml::xmlbegin(); |
|
$r->print($html.&Apache::loncommon::head($title)."\n"); |
|
if ($env{"form.mode"} eq 'selectfile'){ |
if ($env{"form.mode"} eq 'selectfile'){ |
$r->print(&Apache::loncommon::bodytag($title,undef,undef,1)); |
$r->print(&Apache::loncommon::start_page($title,undef, |
|
{'only_body' => 1})); |
} else { |
} else { |
$r->print(&Apache::loncommon::bodytag($title)); |
$r->print(&Apache::loncommon::start_page($title)); |
} |
} |
$r->rflush(); |
$r->rflush(); |
if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){ |
if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){ |
Line 733 sub handler {
|
Line 786 sub handler {
|
# 1) never been here, so directory structure not created |
# 1) never been here, so directory structure not created |
# 2) back-button navigation after deleting a directory |
# 2) back-button navigation after deleting a directory |
if ($current_path eq '/'){ |
if ($current_path eq '/'){ |
&Apache::lonnet::mkdiruserfile($uname,$udom,'portfolio'); |
&Apache::lonnet::mkdiruserfile($uname,$udom, |
|
&get_port_path($group)); |
} else { |
} else { |
# some directory that snuck in get rid of the directory |
# some directory that snuck in get rid of the directory |
# from the recent pulldown, just in case |
# from the recent pulldown, just in case |