--- loncom/interface/portfolio.pm 2006/07/04 23:52:10 1.129 +++ loncom/interface/portfolio.pm 2006/07/08 01:20:40 1.132 @@ -1,7 +1,7 @@ # The LearningOnline Network # portfolio browser # -# $Id: portfolio.pm,v 1.129 2006/07/04 23:52:10 banghart Exp $ +# $Id: portfolio.pm,v 1.132 2006/07/08 01:20:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,6 +36,7 @@ use Apache::lonfeedback; use Apache::lonlocal; use Apache::lonnet; use Apache::longroup; +use Apache::lonhtmlcommon; use HTML::Entities; use LONCAPA; @@ -183,6 +184,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 { @@ -196,19 +198,25 @@ sub display_directory { $filename =~ s/\s+$//; my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); if ($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 %version_flag; + my $show_versions; + if ($env{'form.showversions'} eq $filename) { + $show_versions = 'true'; + } if (exists($versioned{$filename})) { - $version_flag = ' (*) '; + $version_flag{$filename} = ''.&mt('closed folder').''; } else { - $version_flag = ''; + $version_flag{$filename} = ''; } if ($dirptr&$testdir) { my $colspan='colspan="2"'; @@ -217,7 +225,7 @@ sub display_directory { } $r->print(''.&mt('closed folder').''); $r->print('Go to ...'); - $r->print(''.&make_anchor($url,$filename.'/',$current_path.$filename.'/',$env{'form.mode'},$env{"form.fieldname"},$env{'form.continue'},$group).$version_flag.''); + $r->print(''.$version_flag{$filename}.&make_anchor($url,$filename.'/',$current_path.$filename.'/',$env{'form.mode'},$env{"form.fieldname"},$env{'form.continue'},$group).''); $r->print(''); } else { my $css_class = 'LC_browser_file'; @@ -247,7 +255,7 @@ sub display_directory { my $cat=''.&mt('Catalog Information').
                             ''; $line .= 'Rename'; - $line .= ''.$cat.''.$version_flag; + $line .= ''.$version_flag{$filename}.''.$cat.''; } $line .= ''; } @@ -288,8 +296,8 @@ sub display_directory { } } $r->print(''); - $r->print(''. - $filename.''.$version_flag.''); + $r->print(''.$version_flag{$filename}.''. + $filename.''); $r->print(''.$size.''); $r->print(''.&Apache::lonlocal::locallocaltime($mtime).''); if ($select_mode ne 'true') { @@ -1668,14 +1676,32 @@ sub missing_priv { return; } +sub coursegrp_portfolio_header { + my ($cdom,$cnum,$group,$grp_desc)=@_; + my $gpterm = &Apache::loncommon::group_term(); + my $ucgpterm = $gpterm; + $ucgpterm =~ s/^(\w)/uc($1)/e; + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"/adm/$cdom/$cnum/$group/smppg", + text=>"$ucgpterm: $grp_desc", + title=>"Go to group's home page"}, + {href=>"//?group=$group", + text=>"Group Portfolio", + title=>"Display group portfolio"},); + my $output = &Apache::lonhtmlcommon::breadcrumbs( + &mt('[_1] portfolio files - [_2]',$gpterm,$grp_desc)); + return $output; +} + + sub handler { # this handles file management my $r = shift; &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); + 'cnum','cdom','type','setroles','showversions']); + my ($uname,$udom,$portfolio_root,$url,$group,$caller,$title,$grp_desc); if ($r->uri =~ m|^(/adm/)([^/]+)|) { $url = $1.$2; $caller = $2; @@ -1699,6 +1725,9 @@ sub handler { my %curr_groups = &Apache::longroup::coursegroups($udom,$uname, $group); if (%curr_groups) { + my %grp_content = &Apache::longroup::get_group_settings( + $curr_groups{$group}); + $grp_desc = &unescape($grp_content{'description'}); if (($view_permission) || (&Apache::lonnet::allowed('rgf', $env{'request.course.id'}.'/'.$group))) { $portfolio_root = &get_portfolio_root($group); @@ -1848,6 +1877,10 @@ sub handler { if ($env{'form.currentpath'}) { $current_path = $env{'form.currentpath'}; } + if ($caller eq 'coursegrp_portfolio') { + &Apache::lonhtmlcommon::clear_breadcrumbs(); + $r->print(&coursegrp_portfolio_header($udom,$uname,$group,$grp_desc)); + } my @dir_list=&get_dir_list($portfolio_root,$group); if ($dir_list[0] eq 'no_such_dir'){ # two main reasons for this: