--- loncom/interface/portfolio.pm 2008/11/28 17:04:25 1.198
+++ loncom/interface/portfolio.pm 2010/02/12 19:19:21 1.212.2.4
@@ -1,7 +1,7 @@
# The LearningOnline Network
# portfolio browser
#
-# $Id: portfolio.pm,v 1.198 2008/11/28 17:04:25 bisitz Exp $
+# $Id: portfolio.pm,v 1.212.2.4 2010/02/12 19:19:21 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -80,78 +80,77 @@ sub make_anchor {
my $dirptr=16384;
sub display_common {
- my ($r,$url,$current_path,$is_empty,$dir_list,$can_upload)=@_;
+ my ($r,$url,$current_path,$is_empty,$dir_list,$can_upload,$group)=@_;
my $namespace = &get_namespace();
my $port_path = &get_port_path();
if ($can_upload) {
my $groupitem = &group_form_data();
my $iconpath= $r->dir_config('lonIconsURL') . "/";
- my %text=&Apache::lonlocal::texthash(
- 'upload' => 'Upload',
- 'upload_label' =>
- 'Upload file to current directory:',
- 'createdir' => 'Create Subdirectory',
- 'createdir_label' =>
- 'Create subdirectory in current directory:',
- 'parse' => 'If HTML file, upload embedded images/multimedia/css/linked files'
- );
+ my %lt=&Apache::lonlocal::texthash(
+ 'upload' => 'Upload',
+ 'upload_label' => 'Upload file to current directory',
+ 'createdir' => 'Create Subdirectory',
+ 'createdir_label' => 'Create subdirectory in current directory',
+ 'parse' => 'Upload embedded images/multimedia/css/linked files if HTML file',
+ );
+
my $escuri = &HTML::Entities::encode($r->uri,'&<>"');
my $help_fileupload = &Apache::loncommon::help_open_topic('Portfolio AddFiles');
my $help_createdir = &Apache::loncommon::help_open_topic('Portfolio CreateDirectory');
-
- # FIXME: This line should be deleted once Portfolio uses breadcrumbs
- $r->print(&Apache::loncommon::help_open_topic('Portfolio About', &mt('Help on the portfolio')));
-
+ my $help_portfolio = &Apache::loncommon::help_open_topic('Portfolio About', &mt('Help on the portfolio'));
+ $r->print(&display_usage($group));
my $parse_check;
if (!&suppress_embed_prompt()) {
$parse_check = <<"END";
- $text{'parse'}
-
+
+
+ $lt{'parse'}
END
}
- $r->print(<<"TABLE");
-
-
-
- $text{'upload_label'}
-
-
-
-
-
-
-
- $text{'createdir_label'}
-
-
-
-
-
-
-TABLE
- }
+
+ $r->print(''.$help_portfolio);
+ # Upload File
+ $r->print('
'
+ .''
+ .'
'
+ );
+ # Create Subdirectory
+ $r->print('
'
+ .''
+ .'
'
+ );
+ $r->print('
');
+ } # end "if can_upload"
+
my @tree = split (/\//,$current_path);
my %anchor_fields = (
'selectfile' => $port_path,
@@ -160,6 +159,7 @@ TABLE
'fieldname' => $env{"form.fieldname"},
'continue' => $env{"form.continue"}
);
+ $r->print(' ');
$r->print(''.&make_anchor($url,\%anchor_fields,$port_path).'/');
if (@tree > 1){
my $newCurrentPath = '/';
@@ -185,6 +185,48 @@ TABLE
$r->print("");
}
+sub display_usage {
+ my ($group) = @_;
+ my $disk_quota = &get_quota($group);
+ my $getpropath = 1;
+ my $portfolio_root = &get_portfolio_root();
+ my ($uname,$udom) = &get_name_dom($group);
+ my $current_disk_usage =
+ &Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath);
+ my $usage = $current_disk_usage/1000;
+ my $quota = $disk_quota/1000;
+ my $percent;
+ if ($disk_quota == 0) {
+ $percent = 100.0;
+ } else {
+ $percent = 100*($current_disk_usage/$disk_quota);
+ }
+ $usage = sprintf("%.2f",$usage);
+ $quota = sprintf("%.2f",$quota);
+ $percent = sprintf("%.0f",$percent);
+ my ($color,$cssclass);
+ if ($percent <= 60) {
+ $color = '#00A000';
+ } elsif ($percent > 60 && $percent < 90) {
+ $color = '#FFD300';
+ $cssclass = 'class="LC_warning"';
+ } elsif( $percent >= 90) {
+ $color = '#FF0000';
+ $cssclass = 'class="LC_error"';
+ }
+ my $prog_width = $percent;
+ if ($prog_width > 100) {
+ $prog_width = 100;
+ }
+ my $disk_meter = '
+ '.&mt('Currently using [_1] of the [_2] available.',$usage.' MB
('.$percent.'%) ',$quota.' MB')."\n".
+'
'."\n".
+'
';
+ return $disk_meter;
+}
+
sub display_directory_line {
my ($r,$select_mode, $filename, $mtime, $size, $css_class,
$line, $access_controls, $curr_access, $now, $version_flag,
@@ -271,7 +313,9 @@ sub display_directory {
$display_out = '';
@@ -410,8 +454,7 @@ sub display_directory {
$line .= ' ';
}
if ($can_modify) {
- my $cat=' ';
+ my $cat=' ';
my %anchor_fields = (
'rename' => $filename,
currentpath => $current_path
@@ -479,7 +522,7 @@ sub display_directory {
-
+
');
@@ -487,8 +530,10 @@ sub display_directory {
$r->print(&Apache::loncommon::end_data_table());
if ($can_delete) {
$r->print('
+
'.
&Apache::loncommon::help_open_topic('Portfolio DeleteFile').'
+
'
@@ -690,7 +735,7 @@ sub rename {
} else {
&open_form($r,$url);
$r->print(''.&mt('Rename [_1] to [_2]?', &display_file()
- , ' ').'
');
+ , ' ').'');
&close_form($r,$url);
}
}
@@ -797,13 +842,13 @@ sub display_access {
$info .= ''.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.');
$info .= ' '.&explain_conditionals();
$info .= ' '.
- &mt('A listing of files viewable without log-in is available at: ')."http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme/portfolio . ";
+ &mt('A listing of files viewable without log-in is available at: ')."".&Apache::lonnet::absolute_url($ENV{'SERVER_NAME'})."/adm/$udom/$uname/aboutme/portfolio . ";
if ($group eq '') {
$info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on your personal information page:");
} else {
$info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on the course information page:");
}
- $info .= "http://$ENV{'SERVER_NAME'}/adm/$udom/$uname/aboutme ";
+ $info .= "".&Apache::lonnet::absolute_url($ENV{'SERVER_NAME'})."/adm/$udom/$uname/aboutme ";
if ($group ne '') {
$info .= &mt("Users with privileges to edit course contents may add a course information page to a course using the 'Course Info' button in DOCS").' ';
}
@@ -1313,7 +1358,7 @@ sub standard_settings {
&build_access_summary($r,$count,$chg,%conditionals);
$r->print(&Apache::loncommon::end_data_table());
} else {
- $r->print(&make_anchor($url,\%anchor_fields,&mt('Add conditional access')).' '.&mt('based on domain, username, or course affiliation.'));
+ $r->print(&make_anchor($url,\%anchor_fields,&mt('Add conditional access')).' '.&mt('based on domain, username, or course/community affiliation.'));
}
}
@@ -1496,18 +1541,18 @@ sub course_row {
}
$max_id ++;
my $role_selects = &role_selectors($num,$role_id,$type,$content,'display');
- $r->print(' '.&mt('Delete').' '.$role_selects.' ');
+ $r->print(' '.&mt('Delete').' '.$role_selects.' ');
}
$r->print('');
}
$r->print(' '.&mt('Add a roles-based condition').
- ' {'domain'}','$content->{'number'}',
'$uctype'".')" value="" />');
$newrole_id = $max_id;
} else {
- $r->print(' ');
+ $r->print(' ');
}
$r->print(&add_course_role($num,$newrole_id));
$r->print('');
@@ -1528,14 +1573,14 @@ sub domains_row {
my ($r,$status,$item,$all_doms,$access_controls,$now,$then) = @_;
my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then,
'domains');
- my $dom_select = ''.
+ my $dom_select = ''.
' '.&mt('Please select').' ';
if ($status eq 'old') {
my $content = $$access_controls{$item};
foreach my $dom (@{$all_doms}) {
if ((@{$content->{'dom'}} > 0)
&& (grep(/^\Q$dom\E$/,@{$content->{'dom'}}))) {
- $dom_select .= ''.
+ $dom_select .= ' '.
$dom.' ';
} else {
$dom_select .= ''.$dom.' ';
@@ -1571,7 +1616,7 @@ sub additional_item {
sub actionbox {
my ($status,$num,$scope) = @_;
- my $output = '';
+ my $output = '';
if ($status eq 'new') {
my $checkstate;
if ($scope eq 'domains' || $scope eq 'users' || $scope eq 'course') {
@@ -1582,7 +1627,7 @@ sub actionbox {
&mt('Activate');
} else {
$output .= ' '.&mt('Delete').' '.
+ '" />'.&mt('Delete').' '.
' '.&mt('Update');
}
@@ -1601,7 +1646,7 @@ sub dateboxes {
undef,undef,1);
my $enddate = &Apache::lonhtmlcommon::date_setter('portform',
'enddate_'.$num,$end,undef,undef,undef,1,undef,
- undef,undef,1). ' '.
+ undef,undef,1). ' '.
' '.&mt('No end date').
' ';
@@ -1672,12 +1717,12 @@ sub role_selectors {
'group' => $groups,
);
foreach my $item ('role','access','section','group') {
- $output .= ''."\n";
+ $output .= ''."\n";
foreach my $entry (@{$allitems{$item}}) {
if ($caller eq 'display') {
if ((@{$$content{'roles'}{$role_id}{$item}} > 0) &&
(grep(/^\Q$entry\E$/,@{$$content{'roles'}{$role_id}{$item}}))) {
- $output .= ' '.
+ $output .= ' '.
$lookup{$item}{$entry}.' ';
next;
}
@@ -2093,7 +2138,7 @@ sub missing_priv {
$r->print(&mt('You do not have sufficient privileges to [_1] ',
$longtext->{$priv}));
if (defined($env{'form.group'})) {
- $r->print(&mt("in the group's file repository."));
+ $r->print(&mt("in the group's group portfolio."));
$rtnlink .= &group_args()
} else {
$r->print(&mt('in this portfolio.'));
@@ -2201,7 +2246,7 @@ sub handler {
$r->print(&mt('Not a valid group for this course'));
$earlyout = 1;
}
- $title = &mt('Group files for [_1]', $group);
+ $title = &mt('Group portfolio for [_1]', $group);
} else {
$r->print(&mt('Invalid group'));
$earlyout = 1;
@@ -2241,14 +2286,28 @@ sub handler {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
# Give the LON-CAPA page header
+ my $brcrum = [{href=>"/adm/portfolio",text=>"Portfolio Manager"}];
+
if ($env{"form.mode"} eq 'selectfile'){
$r->print(&Apache::loncommon::start_page($title,undef,
{'only_body' => 1}));
} elsif ($env{'form.action'} eq 'rolepicker') {
$r->print(&Apache::loncommon::start_page('New role-based condition',undef,
{'no_nav_bar' => 1, }));
- } else {
+ } elsif ($caller eq 'coursegrp_portfolio') {
$r->print(&Apache::loncommon::start_page($title));
+ } else {
+ $r->print(&Apache::loncommon::start_page($title,undef,
+ {'bread_crumbs' => $brcrum}));
+ if (!&Apache::lonnet::usertools_access($uname,$udom,'portfolio')) {
+ $r->print(''.&mt('No user portfolio available') .' '.
+ &mt('This is a result of one of the following:').''.
+ ''.&mt('The administrator of this domain has disabled portfolio functionality for this specific user.').' '.
+ ''.&mt('The domain has been configured to disable, by default, portfolio functionality for all users in the domain.').' '.
+ ' ');
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
+ }
}
$r->rflush();
my ($blocked,$blocktext) =
@@ -2386,7 +2445,7 @@ sub handler {
# need to know if directory is empty so it can be removed if desired
my $is_empty=(@dir_list == 2);
&display_common($r,$url,$current_path,$is_empty,\@dir_list,
- $can_upload);
+ $can_upload,$group);
&display_directory($r,$url,$current_path,$is_empty,\@dir_list,$group,
$can_upload,$can_modify,$can_delete,$can_setacl);
$r->print(&Apache::loncommon::end_page());