--- loncom/interface/portfolio.pm 2006/07/19 21:58:16 1.139 +++ loncom/interface/portfolio.pm 2006/08/12 22:41:53 1.155 @@ -1,7 +1,7 @@ # The LearningOnline Network # portfolio browser # -# $Id: portfolio.pm,v 1.139 2006/07/19 21:58:16 albertel Exp $ +# $Id: portfolio.pm,v 1.155 2006/08/12 22:41:53 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -66,12 +66,15 @@ sub group_form_data { # receives a file name and path stub from username/userfiles/portfolio/ # returns an anchor tag consisting encoding filename and currentpath sub make_anchor { - my ($url, $filename, $current_path, $current_mode, $field_name, - $continue_select) = @_; - if ($continue_select ne 'true') {$continue_select = 'false'}; - my $anchor = ''; + $anchor .= '">'.$inner_text.''; return $anchor; } @@ -129,12 +132,26 @@ sub display_common { TABLE } my @tree = split (/\//,$current_path); - $r->print(''.&make_anchor($url,$port_path,'/',$env{"form.mode"},$env{"form.fieldname"},$env{"form.continue"}).'/'); + my %anchor_fields = ( + 'selectfile' => $port_path, + 'currentpath' => '/', + 'mode' => $env{"form.mode"}, + 'fieldname' => $env{"form.fieldname"}, + 'continue' => $env{"form.continue"} + ); + $r->print(''.&make_anchor($url,\%anchor_fields,$port_path).'/'); if (@tree > 1){ my $newCurrentPath = ''; for (my $i = 1; $i< @tree; $i++){ $newCurrentPath .= $tree[$i].'/'; - $r->print(&make_anchor($url,$tree[$i],'/'.$newCurrentPath, $env{"form.mode"},$env{"form.fieldname"}, $env{"form.continue"}).'/'); + my %anchor_fields = ( + 'selectfile' => $tree[$i], + 'currentpath' => '/', + 'mode' => $env{"form.mode"}, + 'fieldname' => $env{"form.fieldname"}, + 'continue' => $env{"form.continue"} + ); + $r->print(&make_anchor($url,\%anchor_fields,$tree[$i]).'/'); } } $r->print(''); @@ -149,21 +166,50 @@ TABLE 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)=@_; + $href_location, $url, $current_path, $access_admin_text, $versions)=@_; # 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($line); # contains first two cells of table + $filename = $filename; + $filename = &prepend_group($filename); + my $lock_info; + if ($$version_flag{$filename}) { # versioned can't be versioned, so TRUE when root file + $r->print(''); + $r->print(''.$$version_flag{$filename}.''); + } else { # this is a graded or handed back file + my ($user,$domain) = &get_name_dom(); + my $permissions_hash = &Apache::lonnet::get_portfile_permissions($domain,$user); + if (defined($filename) && defined($$permissions_hash{'/'.$filename})) { + foreach my $array_item (@{$$permissions_hash{'/'.$filename}}) { + if (ref($array_item) eq 'ARRAY') { + if ($$array_item[(@$array_item - 1)] eq 'handback') { + $lock_info = 'Handback'; + } elsif ($$array_item[(@$array_item - 1)] eq 'graded') { + $lock_info = 'Graded'; + } + } + } + } + if ($lock_info) { + my %anchor_fields = ( + 'lockinfo' => '/'.$filename + ); + $lock_info = &make_anchor(undef,\%anchor_fields,$lock_info); + } + $r->print(''.$lock_info.''); + } + # $r->print(''.$$version_flag{$filename}.''); + $r->print(''.&make_anchor($href_location.$filename,undef,$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.''); + my %anchor_fields = ( + 'access' => $filename, + 'currentpath' => $current_path + ); + $r->print(&make_anchor($url, \%anchor_fields, $access_admin_text).''); } $r->print(''.$/); } @@ -208,11 +254,11 @@ sub display_directory { if ($select_mode eq 'true') { $r->print('
'); $r->print(''. - ''); + ''); } else { $r->print(''); $r->print('
Select NameSizeLast Modified
Select  NameSizeLast Modified
'. - ''); + ''); } $r->print("\n".&group_form_data()."\n"); @@ -221,7 +267,7 @@ sub display_directory { my @dir_lines; my @version_lines; my %versioned; - foreach my $line (sort + foreach my $dir_line (sort { my ($afile)=split('&',$a,2); my ($bfile)=split('&',$b,2); @@ -229,7 +275,7 @@ sub display_directory { } (@$dir_list)) { #$strip holds directory/file name #$dom - my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); + my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); $filename =~ s/\s+$//; my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); if ($version) { @@ -239,8 +285,8 @@ sub display_directory { push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]); } } - foreach my $line (@dir_lines) { - my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$line; + foreach my $dir_line (@dir_lines) { + my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$dir_line; my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); if (($filename ne '.') && ($filename ne '..') && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/)) { my %version_flag; @@ -249,13 +295,21 @@ sub display_directory { $show_versions = 'true'; } if (exists($versioned{$filename})) { + my %anchor_fields = ( + 'selectfile' => $filename, + 'continue' => 'false', + 'currentpath' => $current_path, + ); if ($show_versions) { - $version_flag{$filename} = ''.&mt('opened folder').''; + $version_flag{$filename} = &make_anchor('portfolio',\%anchor_fields, + ''.&mt('opened folder').''); } else { - $version_flag{$filename} = ''.&mt('closed folder').''; + $anchor_fields{'showversions'} = $filename; + $version_flag{$filename} = &make_anchor('portfolio',\%anchor_fields, + ''.&mt('closed folder').''); } } else { - $version_flag{$filename} = ''; + $version_flag{$filename} = ' '; } if ($dirptr&$testdir) { my $colspan='colspan="2"'; @@ -264,7 +318,14 @@ sub display_directory { } $r->print(''); $r->print(''); - $r->print(''); + my %anchor_fields = ( + 'selectfile' => $filename.'/', + 'currentpath' => $current_path.$filename.'/', + 'mode' => $env{"form.mode"}, + 'fieldname' => $env{"form.fieldname"}, + 'continue' => $env{"form.continue"} + ); + $r->print(''); $r->print(''); } else { my $css_class = 'LC_browser_file'; @@ -279,7 +340,10 @@ sub display_directory { $line.=' />'; } else { if (exists $locked_files{$fullpath}) { - $line.=''; + my %anchor_fields = ( + 'lockinfo' => $current_path.$filename + ); + $line.=''; $css_class= 'LC_browser_file_locked'; } else { if (!$can_modify) { @@ -291,10 +355,15 @@ sub display_directory { $line .= ''; } if ($can_modify) { - my $cat=''.&mt('Catalog Information').
+                            my $cat='<img class='; - $line .= 'Rename'; - $line .= ''; } @@ -332,27 +401,20 @@ sub display_directory { $curr_access = join('+ ',@allaccesses); } } - &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(''); -# $r->print(''); -# $r->print(''); -# if ($select_mode ne 'true') { -# $r->print(''); -# } -# $r->print(''.$/); + &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); 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); - + foreach my $dir_line (@version_lines) { + my ($v_filename,$dom,$testdir,$size,$mtime,$obs) = @$dir_line; + my ($v_fname,$version,$v_extension) = &Apache::grades::file_name_version_ext($v_filename); + $line = ''; + if (($v_fname eq $fname)&&($v_extension eq $extension)) { + &display_directory_line($r,$select_mode,$fullpath, $v_filename, $mtime, $size, + $css_class, $line, \%access_controls, $curr_access, $now, + \%version_flag, $href_location, $url, $current_path, $access_admin_text, 1); + } + } } } } @@ -439,12 +501,12 @@ sub done { unless (defined $message) { $message='Done'; } - my $result = '

'.&mt($message).'

'; + my %anchor_fields = ( + 'currentpath' => $env{'form.currentpath'}, + 'fieldname' => $env{'form.fieldname'}, + 'mode' => $env{'form.mode'} + ); + my $result = '

'.&make_anchor($url,\%anchor_fields,&mt($message)).'

'; return $result; } @@ -579,8 +641,17 @@ 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.').'
'; + my $header = '

'.&mt('Allowing others to retrieve 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.'); + $info .= '
'; + if ($group eq '') { + $info .= (&mt("Direct others to the 'Display file listing' link (shown when there are viewable files) on your personal information page:
http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme")); + } + if ($can_setacl) { &open_form($r,$url); $r->print($header.$info); @@ -621,8 +692,10 @@ sub view_access_settings { } else { $r->print(&mt('No access control settings currently exist for this file.
' )); } - $r->print('
'.&mt('Return to directory listing').''); + my %anchor_fields = ( + 'currentpath' => $env{'form.currentpath'} + ); + $r->print('
'.&make_anchor($url, \%anchor_fields, &mt('Return to directory listing'))); return; } @@ -755,7 +828,7 @@ sub update_access { } } my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'}; - $r->print('

'.&mt('Allowing others to retrieve portfolio file: [_1]', + $r->print('

'.&mt('Allowing others to retrieve file: [_1]', $port_path.$file_name).'

'."\n"); $file_name = &prepend_group($file_name); my ($uname,$udom) = &get_name_dom(); @@ -846,12 +919,13 @@ sub update_access { } &close_form($r,$url); } else { - $r->print('
'. - &mt('Display all access settings for this file').''. - '     '. - ''.&mt('Return to directory listing').''); + my %anchor_fields = ( + 'currentpath' => $env{'form.currentpath'}, + 'access' => $env{'form.selectfile'} + ); + $r->print('
'.&make_anchor($url, \%anchor_fields, &mt('Display all access settings for this file'))); + delete $anchor_fields{'access'}; + $r->print('     '.&make_anchor($url,\%anchor_fields,&mt('Return to directory listing'))); } return; } @@ -1492,10 +1566,6 @@ sub upload { $file_name = $env{'form.currentpath'}.$file_name; $file_name = &prepend_group($file_name); $found_file = 1; - # FIXME I think this is incorrect, prepend_group took care of this? - if (defined($group)) { - $file_name = $group.'/'.$file_name; - } if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { $locked_file = 1; } @@ -1547,13 +1617,24 @@ sub lock_info { } else { $filetext = ''.$file_name.''; } - $r->print(&mt('[_1] was submitted in response to problem: ', + if ($$array_item[(@$array_item - 1)] eq 'graded') { + $r->print(&mt('[_1] was submitted in response to problem: ', + $filetext). + ''.&Apache::lonnet::gettitle($$array_item[0]). + '
'); + my %course_description = &Apache::lonnet::coursedescription($$array_item[1]); + $r->print(&mt('In the course: [_1]
', + $course_description{'description'})); + } elsif ($$array_item[(@$array_item - 1)] eq 'handback') { + $r->print(&mt('[_1] was handed back in response to problem: ', $filetext). ''.&Apache::lonnet::gettitle($$array_item[0]). '
'); - my %course_description = &Apache::lonnet::coursedescription($$array_item[1]); - $r->print(&mt('In the course: [_1]
', + my %course_description = &Apache::lonnet::coursedescription($$array_item[1]); + $r->print(&mt('In the course: [_1]
', $course_description{'description'})); + + } # $r->print('the third is '.$$array_item[2].'
'); # $r->print("item is $$array_item[0]
and $$array_item[0]"); }
Actions NameSizeLast ModifiedCurrent Access Status
Actions  NameSizeLast ModifiedCurrent Access Status
'.&mt('closed folder').'Go to ...'.$version_flag{$filename}.&make_anchor($url,$filename.'/',$current_path.$filename.'/',$env{'form.mode'},$env{"form.fieldname"},$env{'form.continue'}).'/'.$version_flag{$filename}.''.&make_anchor($url,\%anchor_fields,$filename.'/').'
Locked'.&make_anchor($url,\%anchor_fields,'Locked').''.$version_flag{$filename}.''.$cat.''; + my %anchor_fields = ( + 'rename' => $filename, + currentpath => $current_path + ); + $line .= &make_anchor($url,\%anchor_fields,'Rename'); + $line .= ''.&make_anchor($href_edit_location.$filename.'.meta',undef,$cat); + # ''.$cat.''; } $line .= '
'.$version_flag{$filename}.''. -# $filename.''.$size.''.&Apache::lonlocal::locallocaltime($mtime).''. -# &mt($curr_access).'   '); -# $r->print(''.$access_admin_text.'