--- loncom/interface/portfolio.pm 2006/07/19 15:58:33 1.121.2.7
+++ loncom/interface/portfolio.pm 2006/07/19 21:58:16 1.139
@@ -1,7 +1,7 @@
# The LearningOnline Network
# portfolio browser
#
-# $Id: portfolio.pm,v 1.121.2.7 2006/07/19 15:58:33 albertel Exp $
+# $Id: portfolio.pm,v 1.139 2006/07/19 21:58:16 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -60,6 +60,7 @@ sub group_form_data {
$env{'form.ref'}.'" />';
}
}
+ return $output;
}
# receives a file name and path stub from username/userfiles/portfolio/
@@ -145,6 +146,28 @@ TABLE
$r->print("");
}
+sub display_directory_line {
+ my ($r,$select_mode,$fullpath, $filename, $mtime, $size, $css_class,
+ $line, $access_controls, $curr_access, $now, $version_flag,
+ $href_location, $url, $current_path, $access_admin_text)=@_;
+ # my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);
+ $r->print('
');
+ $r->print($line);
+ $r->print(' ');
+ $r->print(''.$$version_flag{$filename}.''.
+ $filename.' ');
+ $r->print(''.$size.' ');
+ $r->print(''.&Apache::lonlocal::locallocaltime($mtime).' ');
+ if ($select_mode ne 'true') {
+ $r->print(''.
+ &mt($curr_access).' ');
+ $r->print(''.$access_admin_text.' ');
+ }
+ $r->print(' '.$/);
+}
+
sub display_directory {
my ($r,$url,$current_path,$is_empty,$dir_list,$group,$can_upload,
$can_modify,$can_delete,$can_setacl)=@_;
@@ -196,6 +219,7 @@ sub display_directory {
my $href_location="/uploaded/$udom/$uname/$port_path".$current_path;
my $href_edit_location="/editupload/$udom/$uname/$port_path".$current_path;
my @dir_lines;
+ my @version_lines;
my %versioned;
foreach my $line (sort
{
@@ -209,14 +233,30 @@ sub display_directory {
$filename =~ s/\s+$//;
my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);
if ($version) {
- $versioned{$fname} .= $version.",";
+ push(@version_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]);
+ $versioned{$fname.'.'.$extension} .= $version.",";
+ } else {
+ push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]);
}
- push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]);
}
foreach my $line (@dir_lines) {
my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$line;
my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);
if (($filename ne '.') && ($filename ne '..') && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/)) {
+ my %version_flag;
+ my $show_versions;
+ if ($env{'form.showversions'} eq $filename) {
+ $show_versions = 'true';
+ }
+ if (exists($versioned{$filename})) {
+ if ($show_versions) {
+ $version_flag{$filename} = ' ';
+ } else {
+ $version_flag{$filename} = ' ';
+ }
+ } else {
+ $version_flag{$filename} = '';
+ }
if ($dirptr&$testdir) {
my $colspan='colspan="2"';
if ($select_mode eq 'true'){
@@ -224,18 +264,12 @@ sub display_directory {
}
$r->print(' ');
$r->print('Go to ... ');
- $r->print(''.&make_anchor($url,$filename.'/',$current_path.$filename.'/',$env{'form.mode'},$env{"form.fieldname"},$env{'form.continue'}).' ');
+ $r->print(''.$version_flag{$filename}.&make_anchor($url,$filename.'/',$current_path.$filename.'/',$env{'form.mode'},$env{"form.fieldname"},$env{'form.continue'}).'/ ');
$r->print(' ');
} else {
my $css_class = 'LC_browser_file';
my $line;
- my $version_flag;
- if (exists($versioned{$fname})) {
- $version_flag = "*";
- } else {
- $version_flag = "";
- }
- my $fullpath = $current_path.$filename;
+ my $fullpath = $current_path.$filename;
$fullpath = &prepend_group($fullpath);
if ($select_mode eq 'true') {
$line=' ';
$line .= 'Rename ';
- $line .= ''.$cat.' ';
+ $line .= ''.$version_flag{$filename}.''.$cat.' ';
}
$line .= ' ';
}
}
- $r->print('');
- $r->print($line);
my $curr_access;
if ($select_mode ne 'true') {
my $pub_access = 0;
@@ -300,19 +332,28 @@ sub display_directory {
$curr_access = join('+ ',@allaccesses);
}
}
- $r->print(' ');
- $r->print(''.
- $filename.' ');
- $r->print(''.$size.' ');
- $r->print(''.&Apache::lonlocal::locallocaltime($mtime).' ');
- if ($select_mode ne 'true') {
- $r->print(''.
- &mt($curr_access).' ');
- $r->print(''.$access_admin_text.' ');
+ &display_directory_line($r,$select_mode,$fullpath, $filename, $mtime, $size, $css_class, $line, \%access_controls, $curr_access,
+ $now, \%version_flag, $href_location, $url, $current_path, $access_admin_text);
+# $r->print(' ');
+# $r->print($line);
+# $r->print(' ');
+# $r->print(''.$version_flag{$filename}.''.
+# $filename.' ');
+# $r->print(''.$size.' ');
+# $r->print(''.&Apache::lonlocal::locallocaltime($mtime).' ');
+# if ($select_mode ne 'true') {
+# $r->print(''.
+# &mt($curr_access).' ');
+# $r->print(''.$access_admin_text.' ');
+# }
+# $r->print(' '.$/);
+ if ($show_versions) {
+ &display_directory_line($r,$select_mode,$fullpath, $css_class, $line, \%access_controls,
+ $now, \%version_flag, $href_location, $url, $current_path, $access_admin_text);
+
}
- $r->print(''.$/);
}
}
}
@@ -538,23 +579,8 @@ sub display_access {
$uname);
my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group,$file_name);
my $aclcount = keys(%access_controls);
- my $header = ''.&mt('Allowing others to retrieve portfolio file: [_1]',
- $port_path.$env{'form.currentpath'}.
- $env{'form.access'}).' ';
- my $info .=
- &mt('Access to this file by others can be set to be one or more of the following types: public, passphrase-protected or conditional.').
- ''.
- &mt('Public files are available to anyone without the need for login.').
- ' '.
- &mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.').
- ' '.
- #''.
- #&mt('Conditional files are accessible to logged-in users with accounts in the LON-CAPA network, who satisfy the conditions you set.').
- #' '.
- #&mt('The conditions can include affiliation with a particular course or group, or a user account in a specific domain.').
- #' '.
- #&mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').
- ' ';
+ my $header = ''.&mt('Allowing others to retrieve portfolio file: [_1]',$port_path.$env{'form.currentpath'}.$env{'form.access'}).' ';
+ my $info .= &mt('Access to this file by others can be set to be one or more of the following types: public, passphrase-protected or conditional.').''.&mt('Public files are available to anyone without the need for login.').' '.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.').' '.&mt('Conditional files are accessible to logged-in users with accounts in the LON-CAPA network, who satisfy the conditions you set.').' '.&mt('The conditions can include affiliation with a particular course or group, or a user account in a specific domain.').' '.&mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').' ';
if ($can_setacl) {
&open_form($r,$url);
$r->print($header.$info);
@@ -995,25 +1021,24 @@ sub access_setting_table {
$passwd.'" />');
$r->print(&Apache::loncommon::end_data_table_row());
$r->print(&Apache::loncommon::end_data_table());
-
- #$r->print(' ');
- #&access_element($r,'domains',\%acl_count,\@domains,$access_controls,$now,$then);
- #$r->print(' ');
- #&access_element($r,'users',\%acl_count,\@users,$access_controls,$now,$then);
- #$r->print(' ');
- #if (@courses > 0 || @groups > 0) {
- # $r->print('');
- #} else {
- # $r->print(' ');
- #}
- #&access_element($r,'course',\%acl_count,\@courses,$access_controls,$now,$then);
- #$r->print(' ');
- #if (@courses > 0 || @groups > 0) {
- # $r->print(' ');
- #} else {
- # $r->print(' ');
- #}
- #&access_element($r,'group',\%acl_count,\@groups,$access_controls,$now,$then);
+ $r->print(' ');
+ &access_element($r,'domains',\%acl_count,\@domains,$access_controls,$now,$then);
+ $r->print(' ');
+ &access_element($r,'users',\%acl_count,\@users,$access_controls,$now,$then);
+ $r->print(' ');
+ if (@courses > 0 || @groups > 0) {
+ $r->print('');
+ } else {
+ $r->print(' ');
+ }
+ &access_element($r,'course',\%acl_count,\@courses,$access_controls,$now,$then);
+ $r->print(' ');
+ if (@courses > 0 || @groups > 0) {
+ $r->print(' ');
+ } else {
+ $r->print(' ');
+ }
+ &access_element($r,'group',\%acl_count,\@groups,$access_controls,$now,$then);
$r->print(' ');
}
@@ -1711,8 +1736,8 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['selectfile','currentpath','meta','lockinfo','currentfile','action',
'fieldname','mode','rename','continue','group','access','setnum',
- 'cnum','cdom','type','setroles']);
- my ($uname,$udom,$portfolio_root,$url,$group,$caller,$title,$grp_desc);
+ 'cnum','cdom','type','setroles','showversions','ref']);
+ my ($uname,$udom,$portfolio_root,$url,$caller,$title,$group,$grp_desc);
if ($r->uri =~ m|^(/adm/)([^/]+)|) {
$url = $1.$2;
$caller = $2;