version 1.99, 2006/05/18 01:08:52
|
version 1.102, 2006/06/07 18:41:48
|
Line 31 use Apache::lonfeedback;
|
Line 31 use Apache::lonfeedback;
|
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::longroup; |
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 124 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; |
|
my $curr_access; |
|
my $pub_access = 0; |
|
foreach my $key (sort(keys(%access_controls))) { |
|
my ($scope,$end,$start) = ($key =~ /^\d+:(\w+)_(\d*)_?(\d*)$/); |
|
if (($now > $start) && (!$end || $end > $now)) { |
|
if ($scope eq 'public') { |
|
$pub_access = 1; |
|
} |
|
} |
|
} |
|
if (!$pub_access) { |
|
$curr_access = 'Private' |
|
} elsif ($pub_access) { |
|
$curr_access = 'Public'; |
|
} |
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 152 sub display_directory {
|
Line 173 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 183 sub display_directory {
|
Line 204 sub display_directory {
|
} else { |
} else { |
$r->print('<tr bgcolor="#CCCCFF">'); |
$r->print('<tr bgcolor="#CCCCFF">'); |
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"); |
} |
} |
Line 205 sub display_directory {
|
Line 226 sub display_directory {
|
$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 230 sub display_directory {
|
Line 255 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 299 sub delete {
|
Line 324 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 374 sub rename {
|
Line 400 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 411 sub rename_confirmed {
|
Line 438 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 477 sub upload {
|
Line 505 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 514 sub upload {
|
Line 547 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>'. |
if ($$array_item[0] eq 'access' || |
&Apache::lonnet::gettitle($$array_item[0]).'</strong><br />'); |
$$array_item[0] eq 'accesscount' ) { |
my %course_description = &Apache::lonnet::coursedescription($$array_item[1]); |
next; |
$r->print('In the course: <strong>'.$course_description{'description'}.'</strong><br />'); |
|
# $r->print('the third is '.$$array_item[2].'<br>'); |
|
# $r->print("item is $$array_item[0]<br> and $$array_item[0]"); |
|
} |
} |
|
my $filetext; |
|
if (defined($group)) { |
|
$filetext = '<strong>'.$env{'form.lockinfo'}. |
|
'</strong> (group: '.$group.')'; |
|
} else { |
|
$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 650 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 684 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 732 sub handler {
|
Line 787 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 |