--- loncom/interface/portfolio.pm 2006/06/22 13:27:13 1.108 +++ loncom/interface/portfolio.pm 2006/06/22 19:01:30 1.116 @@ -31,7 +31,7 @@ use Apache::lonfeedback; use Apache::lonlocal; use Apache::lonnet; use Apache::longroup; -use lib '/home/httpd/lib/perl'; +use HTML::Entities; use LONCAPA; # receives a file name and path stub from username/userfiles/portfolio/ @@ -40,9 +40,9 @@ sub make_anchor { my ($url, $filename, $current_path, $current_mode, $field_name, $continue_select,$group) = @_; if ($continue_select ne 'true') {$continue_select = 'false'}; - my $anchor = ''.$filename.''; return $anchor; @@ -63,38 +63,39 @@ sub display_common { 'createdir' => 'Create Subdirectory', 'createdir_label' => 'Create subdirectory in current directory:'); + my $escuri = &HTML::Entities::encode($r->uri,'&<>"'); $r->print(<<"TABLE"); - - - - - '); } elsif ($status eq 'new') { my $role_id = 1; my $role_selects = &role_selectors($num,$role_id,$status,$type,undef,'display'); $r->print(''.$role_selects); $r->print('
- $text{'upload_label'} - $groupitem + + + + - - - - - - + + + + - - + + +
+ $text{'upload_label'} + $groupitem + -
- $text{'createdir_label'} - + +
+ $text{'createdir_label'} + +
$groupitem -
TABLE my @tree = split (/\//,$current_path); @@ -108,9 +109,9 @@ TABLE } $r->print(''); &Apache::lonhtmlcommon::store_recent($namespace,$current_path,$current_path); - $r->print('
'. &Apache::lonhtmlcommon::select_recent($namespace,'currentpath', @@ -153,13 +154,13 @@ sub display_directory { return; } if ($select_mode eq 'true') { - $r->print(''. - ''); $r->print(''); + $r->print('
Select NameSizeLast Modified
'. + ''); } else { - $r->print('
Select NameSizeLast Modified
'. - ''); $r->print(''); + $r->print('
Actions NameSizeLast ModifiedCurrent Access Status
'. + ''); } if (defined($group)) { $r->print("\n".$groupitem."\n"); @@ -189,16 +190,17 @@ sub display_directory { my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); if (($filename ne '.') && ($filename ne '..') && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/)) { if ($dirptr&$testdir) { + my $colspan='colspan="2"'; if ($select_mode eq 'true'){ - $r->print(''); - } else { - $r->print(''); + undef($colspan); } + $r->print(''); $r->print(''); $r->print(''); $r->print(''); } else { - $r->print(''); + my $css_class = 'LC_browser_file'; + my $line; my $version_flag; if (exists($versioned{$fname})) { $version_flag = "*"; @@ -208,22 +210,25 @@ sub display_directory { my $fullpath = $current_path.$filename; $fullpath = &prepend_group($fullpath,$group); if ($select_mode eq 'true'){ - $r->print(''); + $line.=' />'; } else { if (exists $locked_files{$fullpath}) { - $r->print(''); + $line.=''; + $css_class= 'LC_browser_file_locked'; } else { my $cat=''.&mt('Catalog Information').
 			    ''; - $r->print(''); + '; } + $r->print(''); + $r->print($line); } my $curr_access; my $pub_access = 0; @@ -256,15 +261,15 @@ sub display_directory { } $curr_access = join('+ ',@allaccesses); } - $r->print(''); + $r->print(''); $r->print(''); $r->print(''); $r->print(''); - $r->print(''); + '">'.&mt('View/Change').''); $r->print(''); } } @@ -316,7 +321,7 @@ sub close_form { $group.'" />'); } $r->print('

'); - $r->print(' + $r->print('

'); @@ -331,16 +336,20 @@ sub close_form { sub display_file { my ($path,$filename)=@_; my $display_file_text; + my $file_start=''; + my $file_end=''; if (!defined($path)) { $path=$env{'form.currentpath'}; } if (!defined($filename)) { $filename=$env{'form.selectfile'}; - $display_file_text = ''.$path.$filename.''; + $display_file_text = $file_start.$path.$filename.$file_end; } elsif (ref($filename) eq "ARRAY") { - foreach (@$filename) { - $display_file_text .= ''.$path.$_.'
'; + foreach my $file (@$filename) { + $display_file_text .= $file_start.$path.$file.$file_end.'
'; } } elsif (ref($filename) eq "SCALAR") { - $display_file_text = ''.$path.$filename.''; + $display_file_text = $file_start.$path.$$filename.$file_end; + } else { + $display_file_text = $file_start.$path.$filename.$file_end; } return $display_file_text; } @@ -394,8 +403,8 @@ sub delete_confirmed { $env{'form.currentpath'}. $delete_file); if ($result ne 'ok') { - $r->print(' An error occured ('.$result. - ') while trying to delete '.&display_file(undef, $delete_file).'
'); + $r->print(' An error occured ('.$result. + ') while trying to delete '.&display_file(undef, $delete_file).'
'); } } $r->print(&done(undef,$url,$group)); @@ -419,8 +428,8 @@ sub delete_dir_confirmed { $directory_name); if ($result ne 'ok') { - $r->print(' An error occured (dir) ('.$result. - ') while trying to delete '.$directory_name.'
'); + $r->print(' An error occured (dir) ('.$result. + ') while trying to delete '.$directory_name.'
'); } else { # now remove from recent # $r->print('
removing '.$directory_name.'
print(''. + $r->print(''. &mt("Error: no valid filename was provided to rename to."). - '
'); + '
'); $r->print(&done(undef,$url,$group)); return; } @@ -470,12 +479,15 @@ sub rename_confirmed { $port_path.$env{'form.currentpath'}.$env{'form.selectfile'}, $port_path.$env{'form.currentpath'}.$filenewname); if ($result ne 'ok') { - $r->print(' An errror occured ('.$result. - ') while trying to rename '.&display_file().' to '. - &display_file(undef,$filenewname).'
'); + $r->print(''. + &mt('An errror occured ([_1]) while trying to rename [_2]' + .' to [_3]',$result,&display_file(), + &display_file('',$filenewname)).'
'); } if ($filenewname ne $env{'form.filenewname'}) { - $r->print("The new file name was changed from:
".$env{'form.filenewname'}." to $filenewname "); + $r->print(&mt("The new file name was changed from:
[_1] to [_2]", + ''.&display_file('',$env{'form.filenewname'}).'', + ''.&display_file('',$filenewname).'')); } $r->print(&done(undef,$url,$group)); } @@ -539,23 +551,26 @@ sub update_access { } my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom, $uname); - my %access_controls = &Apache::lonnet::get_access_controls( - $current_permissions,$group,$file_name); + my %access_controls = + &Apache::lonnet::get_access_controls($current_permissions, + $group,$file_name); if ($totalprocessed) { if ($outcome eq 'ok') { my $updated_controls = $access_controls{$file_name}; my ($showstart,$showend); $r->print(&Apache::loncommon::start_data_table()); - $r->print(&Apache::loncommon::start_data_table_row()); + $r->print(&Apache::loncommon::start_data_table_header_row()); $r->print('

'); - $r->print(&Apache::loncommon::end_data_table_row()); + $r->print(&Apache::loncommon::end_data_table_header_row()); foreach my $chg (sort(keys(%processing))) { if (@{$processing{$chg}} > 0) { if ($chg eq 'delete') { if (!($deloutcome eq 'ok')) { - $errors .= &mt('A problem occurred deleting access controls: [_1]',$deloutcome); + $errors .=''. + &mt('A problem occurred deleting access controls: [_1]',$deloutcome). + ''; next; } } @@ -573,8 +588,7 @@ sub update_access { if ($chg eq 'activate') { $newkey =~ s/^(\d+)/$$translation{$1}/; } - my %content = &Apache::lonnet::parse_access_controls( - $$updated_controls{$newkey}); + my $content = $$updated_controls{$newkey}; if ($chg eq 'delete') { $showstart = &mt('Deleted'); $showend = $showstart; @@ -589,7 +603,7 @@ sub update_access { $r->print(''); + $r->print('
Actions NameSizeLast ModifiedCurrent Access Status
'.&mt('closed folder').'Go to ...'.&make_anchor($url,$filename.'/',$current_path.$filename.'/',$env{'form.mode'},$env{"form.fieldname"},$env{'form.continue'},$group).'
print("CHECKED"); + $line='print('>LockedLocked + $line.=' Rename '.$cat.' -
'. $filename.''.$size.''.&Apache::lonlocal::locallocaltime($mtime).''.&mt($curr_access).'   '. + $r->print(''.&mt($curr_access).'   '. ''.&mt('View/Change').'
'.&mt('Type of change').''. &mt('Access control').''.&mt('Dates available'). ''.&mt('Additional information').''.&mt($scope)); if (($scope eq 'course') || ($scope eq 'group')) { if ($chg ne 'delete') { - my $cid = $content{'domain'}.'_'.$content{'number'}; + my $cid = $content->{'domain'}.'_'.$content->{'number'}; my %course_description = &Apache::lonnet::coursedescription($cid); $r->print('
('.$course_description{'description'}.')'); } @@ -598,7 +612,7 @@ sub update_access { '
'.&mt('End: ').$showend.'
'); if ($chg ne 'delete') { if ($scope eq 'guest') { - $r->print(&mt('Password').': '.$content{'password'}); + $r->print(&mt('Password').': '.$content->{'password'}); } elsif ($scope eq 'course' || $scope eq 'group') { $r->print(''); @@ -611,7 +625,7 @@ sub update_access { $r->print(''); } $r->print(''); - foreach my $id (sort(keys(%{$content{'roles'}}))) { + foreach my $id (sort(keys(%{$content->{'roles'}}))) { $r->print(''); foreach my $item ('role','access','section','group') { $r->print(''); } @@ -639,9 +653,9 @@ sub update_access { $r->print(&Apache::loncommon::end_data_table_row()); $r->print(&Apache::loncommon::end_data_table()); } elsif ($scope eq 'domains') { - $r->print(&mt('Domains: ').join(',',@{$content{'dom'}})); + $r->print(&mt('Domains: ').join(',',@{$content->{'dom'}})); } elsif ($scope eq 'users') { - my $curr_user_list = &sort_users($content{'users'}); + my $curr_user_list = &sort_users($content->{'users'}); $r->print(&mt('Users: ').$curr_user_list); } else { $r->print(' '); @@ -658,7 +672,9 @@ sub update_access { $r->print(&Apache::loncommon::end_data_table()); } else { if ((@{$processing{'activate'}} > 0) || (@{$processing{'update'}} > 0)) { - $errors .= &mt('A problem occurred storing access control settings: [_1]',$outcome); + $errors .= ''. + &mt('A problem occurred storing access control settings: [_1]',$outcome). + ''; } } if ($errors) { @@ -693,7 +709,7 @@ sub update_access { &close_form($r,$url,$group); } else { $r->print('
'. + '&currentpath='.$env{'form.currentpath'}.'">'. &mt('Display all access settings for this file').''); } return; @@ -701,95 +717,73 @@ sub update_access { sub build_access_record { my ($num,$scope,$start,$end,$chg) = @_; - my $record = ''.$start.''. - $end.''; - if ($scope eq 'guest') { - $record .= ''.$env{'form.password'}.''; + my $record = { + type => $scope, + time => { + start => $start, + end => $end + }, + }; + + if ($scope eq 'guest') { + $record->{'password'} = $env{'form.password'}; } elsif (($scope eq 'course') || ($scope eq 'group')) { - $record .= ''.$env{'form.crsdom_'.$num}.''. - $env{'form.crsnum_'.$num}.''; + $record->{'domain'} = $env{'form.crsdom_'.$num}; + $record->{'number'} = $env{'form.crsnum_'.$num}; my @role_ids; - my @delete_role_ids; - if (exists($env{'form.delete_role_'.$num})) { - @delete_role_ids = &Apache::loncommon::get_env_multiple('form.delete_role_'.$num); - } - if (exists($env{'form.preserve_role_'.$num})) { - my @preserves = &Apache::loncommon::get_env_multiple('form.preserve_role_'.$num); - if (@delete_role_ids > 0) { - foreach my $id (@preserves) { - if (grep/^\Q$id\E$/,@delete_role_ids) { - next; - } - push(@role_ids,$id); - } - } else { - push(@role_ids,@preserves); - } - } - my $next_id = ''; - if (exists($env{'form.add_role_'.$num})) { - $next_id = $env{'form.add_role_'.$num}; - if ($next_id) { - push(@role_ids,$next_id); - } - } + my @delete_role_ids = + &Apache::loncommon::get_env_multiple('form.delete_role_'.$num); + my @preserves = + &Apache::loncommon::get_env_multiple('form.preserve_role_'.$num); + if (@delete_role_ids) { + foreach my $id (@preserves) { + if (grep {$_ = $id} (@delete_role_ids)) { + next; + } + push(@role_ids,$id); + } + } else { + push(@role_ids,@preserves); + } + + my $next_id = $env{'form.add_role_'.$num}; + if ($next_id) { + push(@role_ids,$next_id); + } + foreach my $id (@role_ids) { my (@roles,@accesses,@sections,@groups); if (($id == $next_id) && ($chg eq 'update')) { - @roles = split(/,/,$env{'form.role_'.$num.'_'.$next_id}); + @roles = split(/,/,$env{'form.role_'.$num.'_'.$next_id}); @accesses = split(/,/,$env{'form.access_'.$num.'_'.$next_id}); @sections = split(/,/,$env{'form.section_'.$num.'_'.$next_id}); - @groups = split(/,/,$env{'form.group_'.$num.'_'.$next_id}); + @groups = split(/,/,$env{'form.group_'.$num.'_'.$next_id}); } else { @roles = &Apache::loncommon::get_env_multiple('form.role_'.$num.'_'.$id); @accesses = &Apache::loncommon::get_env_multiple('form.access_'.$num.'_'.$id); @sections = &Apache::loncommon::get_env_multiple('form.section_'.$num.'_'.$id); @groups = &Apache::loncommon::get_env_multiple('form.group_'.$num.'_'.$id); } - $record .= ''; - foreach my $role (@roles) { - $record .= ''.$role.''; - } - foreach my $access (@accesses) { - $record .= ''.$access.''; - } - foreach my $section (@sections) { - $record .= '
'.$section.'
'; - } - foreach my $group (@groups) { - $record .= ''.$group.''; - } - $record .= '
'; + $record->{'roles'}{$id}{'role'} = \@roles; + $record->{'roles'}{$id}{'access'} = \@accesses; + $record->{'roles'}{$id}{'section'} = \@sections; + $record->{'roles'}{$id}{'group'} = \@groups; } } elsif ($scope eq 'domains') { my @doms = &Apache::loncommon::get_env_multiple('form.dom_'.$num); - foreach my $dom (@doms) { - if ($dom ne '') { - $record .= ''.$dom.''; - } - } + $record->{'dom'} = \@doms; } elsif ($scope eq 'users') { my $userlist = $env{'form.users_'.$num}; - $userlist =~ s/[\r\n\f]+//g; - $userlist =~ s/\s+//g; - my @users = split/,/,$userlist; - my %userhash; - my @unique_users; - foreach my $user (@users) { - if (!exists($userhash{$user})) { - $userhash{$user} = 1; - push(@unique_users,$user); - } - } - $record .= ''; - foreach my $user (@unique_users) { + $userlist =~ s/\s+//sg; + my %userhash = map { ($_,1) } (split(/,/,$userlist)); + foreach my $user (keys(%userhash)) { my ($uname,$udom) = split(/:/,$user); - $record .= ''.$uname.''.$udom. - ''; - } - $record .= ''; + push(@{$record->{'users'}}, { + 'uname' => $uname, + 'udom' => $udom + }); + } } - $record .= '
'; return $record; } @@ -806,12 +800,11 @@ sub get_dates_from_form { } sub sort_users { - my ($users_hash) = @_; - my @curr_users; - foreach my $user (keys(%{$users_hash})) { - $curr_users[$$users_hash{$user}] = $user; - } - my $curr_user_list = join(",\n",@curr_users); + my ($users) = @_; + my @curr_users = map { + $_->{'uname'}.':'.$_->{'udom'} + } (@{$users}); + my $curr_user_list = join(",\n",sort(@curr_users)); return $curr_user_list; } @@ -853,9 +846,9 @@ sub access_setting_table { $r->print('
'.&mt('Teams').'
'); @@ -619,7 +633,7 @@ sub update_access { my $ucscope = $scope; $ucscope =~ s/^(\w)/uc($1)/; my $role_output; - foreach my $role (@{$content{'roles'}{$id}{$item}}) { + foreach my $role (@{$content->{'roles'}{$id}{$item}}) { if ($role eq 'all') { $role_output .= $role.','; } elsif ($role =~ /^cr/) { @@ -631,7 +645,7 @@ sub update_access { $role_output =~ s/,$//; $r->print($role_output); } else { - $r->print(join(',',@{$content{'roles'}{$id}{$item}})); + $r->print(join(',',@{$content->{'roles'}{$id}{$item}})); } $r->print('
'); - $r->print(&Apache::loncommon::end_data_table_row()); + $r->print(&Apache::loncommon::end_data_table_header_row()); $r->print(&Apache::loncommon::start_data_table_row()); if ($public) { $r->print(''); - $r->print(&Apache::loncommon::end_data_table_row()); + $r->print(&Apache::loncommon::end_data_table_header_row()); $r->print(&Apache::loncommon::start_data_table_row()); my $passwd; if ($guest) { - my %content = &Apache::lonnet::parse_access_controls( - $$access_controls{$guest}); - $passwd = $content{'password'}; + $passwd = $$access_controls{$guest}{'password'}; $r->print(''); } else { @@ -951,8 +942,8 @@ sub display_access_row { my $uctype = $type; $uctype =~ s/^(\w)/uc($1)/e; $r->print(&Apache::loncommon::start_data_table()); - $r->print(&Apache::loncommon::start_data_table_row()); - $r->print(''); if (($type eq 'course') || ($type eq 'group')) { $r->print(''); + $r->print(&Apache::loncommon::end_data_table_row()); } $r->print(&Apache::loncommon::end_data_table()); } else { @@ -989,17 +982,8 @@ sub display_access_row { return; } -sub course_row { - my ($r,$status,$type,$item,$access_controls,$tablecolor,$now,$then) = @_; - my %content; - my $defdom = $env{'user.domain'}; - if ($status eq 'old') { - %content = &Apache::lonnet::parse_access_controls( - $$access_controls{$item}); - $defdom = $content{'domain'}; - } - $r->print(&Apache::loncommon::coursebrowser_javascript($defdom)); - $r->print(qq| +sub course_js { + return qq| -|); - $r->print(&Apache::loncommon::start_data_table_row()); +|; +} + +sub course_row { + my ($r,$status,$type,$item,$access_controls,$tablecolor,$now,$then) = @_; + my $content; + my $defdom = $env{'user.domain'}; + if ($status eq 'old') { + $content = $$access_controls{$item}; + $defdom = $content->{'domain'}; + } + my $js = &Apache::loncommon::coursebrowser_javascript($defdom) + .&course_js(); my $crsgrptext = 'Groups'; if ($type eq 'group') { $crsgrptext = 'Teams'; } my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then, $type); - $r->print(''); + $r->print(''); if ($status eq 'old') { - my $cid = $content{'domain'}.'_'.$content{'number'}; + my $cid = $content->{'domain'}.'_'.$content->{'number'}; my %course_description = &Apache::lonnet::coursedescription($cid); - $r->print(''); + $r->print(''); } elsif ($status eq 'new') { my $uctype = $type; $uctype =~ s/^(\w)/uc($1)/e; @@ -1063,39 +1058,35 @@ function getIndex(name,value) { &mt($crsgrptext).''); if ($status eq 'old') { my $max_id = 0; - foreach my $role_id (sort(keys(%{$content{'roles'}}))) { + foreach my $role_id (sort(keys(%{$content->{'roles'}}))) { if ($role_id > $max_id) { $max_id = $role_id; } $max_id ++; - my $role_selects = &role_selectors($num,$role_id,$status,$type,\%content,'display'); - $r->print(''.$role_selects.''); + my $role_selects = &role_selectors($num,$role_id,$status,$type,$content,'display'); + $r->print(''.$role_selects.''); } - $r->print('
'); $r->print('

'.&mt('Public access:').' '.$publictext.'

'); $r->print(&Apache::loncommon::start_data_table()); - $r->print(&Apache::loncommon::start_data_table_row()); + $r->print(&Apache::loncommon::start_data_table_header_row()); $r->print('
'.&mt('Action').''.&mt('Dates available').''.&actionbox('old',$publicnum,'public').''. @@ -869,16 +862,14 @@ sub access_setting_table { $r->print(' '); $r->print('

'.&mt('Password-protected access:').' '.$guesttext.'

'); $r->print(&Apache::loncommon::start_data_table()); - $r->print(&Apache::loncommon::start_data_table_row()); + $r->print(&Apache::loncommon::start_data_table_header_row()); $r->print('
'.&mt('Action').''.&mt('Dates available'). ''. &mt('Password').''.&actionbox('old',$guestnum,'guest').''. &dateboxes($guestnum,$start{$guest},$end{$guest}).''.&mt('Action?').''.&mt($uctype).''. + $r->print(&Apache::loncommon::start_data_table_header_row()); + $r->print(''.&mt('Action?').''.&mt($uctype).''. &mt('Dates available').''.&mt('Allowed [_1] member affiliations',$type). @@ -963,7 +954,8 @@ sub display_access_row { } elsif ($type eq 'domains') { @all_doms = &Apache::loncommon::get_domains(); } - $r->print(&Apache::loncommon::end_data_table_row()); + $r->print(&Apache::loncommon::end_data_table_header_row()); + $r->print(&Apache::loncommon::start_data_table_row()); foreach my $key (@{$items}) { if (($type eq 'course') || ($type eq 'group')) { &course_row($r,$status,$type,$key,$access_controls, @@ -976,10 +968,11 @@ sub display_access_row { } } $r->print(&Apache::loncommon::end_data_table_row()); - $r->print(&Apache::loncommon::start_data_table_row()); if ($status eq 'old') { + $r->print(&Apache::loncommon::start_data_table_row()); $r->print(''.&additional_item($type). ''.&actionbox($status,$num,$scope).''.$js.&actionbox($status,$num,$scope).''.$course_description{'description'}.''.$course_description{'description'}.'



'.&mt('Add a roles-based condition').' 

'.&mt('Add a roles-based condition').' {'domain'}','$content->{'number'}','Course'".')" value="'.$max_id.'" />
'.&mt('Add').'
'); } - $r->print(&Apache::loncommon::end_data_table_row()); return; } sub domains_row { my ($r,$status,$item,$all_doms,$access_controls,$now,$then) = @_; - $r->print(&Apache::loncommon::start_data_table_row()); my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then, 'domains'); - my $dom_select = ''. ' '; - $r->print(&Apache::loncommon::start_data_table_row()); if ($status eq 'old') { - my %content = &Apache::lonnet::parse_access_controls( - $$access_controls{$item}); - my @curr_doms = @{$content{'dom'}}; - foreach my $dom (@{$all_doms}) { - if ((@{$content{'dom'}} > 0) && (grep(/^\Q$dom\E$/,@{$content{'dom'}}))) { + my $content = $$access_controls{$item}; + foreach my $dom (@{$all_doms}) { + if ((@{$content->{'dom'}} > 0) + && (grep(/^\Q$dom\E$/,@{$content->{'dom'}}))) { $dom_select .= ''; } else { @@ -1107,25 +1098,21 @@ sub domains_row { $dom_select .= ''; } } + $dom_select .= ''; $r->print(''.&actionbox($status,$num,$scope).''.$dom_select. ''.&dateboxes($num,$start,$end).''); - $r->print(&Apache::loncommon::end_data_table_row()); - $r->print(&Apache::loncommon::start_data_table_row()); } sub users_row { my ($r,$status,$item,$access_controls,$now,$then) = @_; - $r->print(&Apache::loncommon::start_data_table_row()); my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then, 'users'); my $curr_user_list; if ($status eq 'old') { - my %content = &Apache::lonnet::parse_access_controls( - $$access_controls{$item}); - $curr_user_list = &sort_users($content{'users'}); + my $content = $$access_controls{$item}; + $curr_user_list = &sort_users($content->{'users'}); } $r->print(''.&actionbox($status,$num,$scope).''.&mt("Format for users' username:domain information:").'
sparty:msu,illini:uiuc ... etc.
'.&dateboxes($num,$start,$end).''); - $r->print(&Apache::loncommon::end_data_table_row()); } sub additional_item { @@ -1136,17 +1123,17 @@ sub additional_item { sub actionbox { my ($status,$num,$scope) = @_; - my $output = ''. + '" />'.&mt('Delete').'
'. '
'; + $output .= ''; return $output; } @@ -1161,10 +1148,10 @@ sub dateboxes { undef,undef,1); my $enddate = &Apache::lonhtmlcommon::date_setter('portform', 'enddate_'.$num,$end,undef,undef,undef,1,undef, - undef,undef,1). '  '; + ''; my $output = &mt('Start: ').$startdate.'
'.&mt('End: ').$enddate; return $output; @@ -1307,7 +1294,7 @@ sub select_files { $java_files.=','; } my $javascript =(< +