Diff for /loncom/interface/lonmeta.pm between versions 1.139 and 1.157

version 1.139, 2005/12/15 22:18:57 version 1.157, 2006/05/30 12:46:09
Line 39  use Apache::lonpublisher; Line 39  use Apache::lonpublisher;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonmysql;  use Apache::lonmysql;
 use Apache::lonmsg;  use Apache::lonmsg;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
   
   
 ############################################################  ############################################################
Line 71  sub get_dynamic_metadata_from_sql { Line 73  sub get_dynamic_metadata_from_sql {
     if (! defined($authordom) || ! defined($author)) {      if (! defined($authordom) || ! defined($author)) {
         return ();          return ();
     }      }
     my @Fields = ('url','count','course',      my @Fields = ('url','count','course','course_list',
                   'goto','goto_list',                    'goto','goto_list',
                   'comefrom','comefrom_list',                    'comefrom','comefrom_list',
                   'sequsage','sequsage_list',                    'sequsage','sequsage_list',
Line 108  sub get_dynamic_metadata_from_sql { Line 110  sub get_dynamic_metadata_from_sql {
             next if (! $result);              next if (! $result);
             my @Data =               my @Data = 
                 map {                   map { 
                     &Apache::lonnet::unescape($_);                       &unescape($_); 
                 } split(',',$result);                  } split(',',$result);
             my $url = $Data[0];              my $url = $Data[0];
             for (my $i=0;$i<=$#Fields;$i++) {              for (my $i=0;$i<=$#Fields;$i++) {
Line 248  sub fieldnames { Line 250  sub fieldnames {
          'notes' => 'Notes',           'notes' => 'Notes',
          'abstract' => 'Abstract',           'abstract' => 'Abstract',
          'lowestgradelevel' => 'Lowest Grade Level',           'lowestgradelevel' => 'Lowest Grade Level',
          'highestgradelevel' => 'Highest Grade Level',           'highestgradelevel' => 'Highest Grade Level');
          'courserestricted' => 'Course Restricting Metadata');      
       if (! defined($file_type) || $file_type ne 'portfolio') {
           %fields = 
       (%fields,
        'courserestricted' => 'Course Restricting Metadata');
       }
                     
     if (! defined($file_type) || $file_type ne 'portfolio') {      if (! defined($file_type) || $file_type ne 'portfolio') {
         %fields =           %fields = 
Line 290  sub fieldnames { Line 297  sub fieldnames {
     return &Apache::lonlocal::texthash(%fields);      return &Apache::lonlocal::texthash(%fields);
 }  }
   
 sub select_course {  sub portfolio_linked_path {
     my %courses;      my ($path,$group,$port_path) = @_;
     my $output;  
     my $selected;      my $start = 'portfolio';
     foreach my $key (keys (%env)) {       if ($group) {
         if ($key =~ m/\.metadata\./) {   $start = "groups/$group/".$start;
             $key =~ m/^course\.(.+)(\.metadata.+$)/;      }
             my $course = $1;      my $result = &Apache::portfolio::make_anchor($port_path,$start,'/',
             my $coursekey = 'course.'.$course.'.description';   undef,undef,undef,$group);
             my $value = $env{$coursekey};      
             $courses{$coursekey} = $value;      my $fullpath = '/';
         }      my (undef,@tree) = split('/',$path);
       my $filename = pop(@tree);
       foreach my $dir (@tree) {
    $fullpath .= $dir.'/';
    $result .= '/';
    $result .= &Apache::portfolio::make_anchor($port_path,$dir,$fullpath,
      undef,undef,undef,$group);
       }
       $result .= "/$filename";
       return $result;
   }
   
   sub get_port_path_and_group {
       my ($uri)=@_;
   
       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
   
       my ($port_path,$group);
       if ($uri =~ m{^/editupload/\Q$cdom\E/\Q$cnum\E/groups/}) {
    $group = (split('/',$uri))[5];
    $port_path = '/adm/coursegrp_portfolio';
       } else {
    $port_path = '/adm/portfolio';
       }
       return ($port_path,$group);
   }
   
   sub portfolio_display_uri {
       my ($uri,$as_links)=@_;
   
       my ($port_path,$group) = &get_port_path_and_group($uri);
   
       $uri =~ s|.*/(portfolio/.*)$|$1|;
       my ($res_uri,$meta_uri) = ($uri,$uri);
       if ($uri =~ /\.meta$/) {
    $res_uri =~ s/\.meta//;
       } else {
    $meta_uri .= '.meta';
     }      }
     my $meta_not_found = 1;  
     if ($Apache::lonpublisher::metadatafields{'courserestricted'} eq 'none') {      my ($path) = ($res_uri =~ m|^portfolio(.*/)[^/]*$|);
         $selected = ' SELECTED ';      if ($as_links) {
    $res_uri = &portfolio_linked_path($res_uri,$group,$port_path);
    $meta_uri = &portfolio_linked_path($meta_uri,$group,$port_path);
       }
       return ($res_uri,$meta_uri,$path);
   }
   
   sub pre_select_course {
       my ($r,$uri) = @_;
       my $output;
       my $fn=&Apache::lonnet::filelocation('',$uri);
       my ($res_uri,$meta_uri,$path) = &portfolio_display_uri($uri);
       %Apache::lonpublisher::metadatafields=();
       %Apache::lonpublisher::metadatakeys=();
       my $result=&Apache::lonnet::getfile($fn);
       if ($result == -1){
           $r->print(&mt('Creating new file [_1]'),$meta_uri);
     } else {      } else {
         $selected = '';          &Apache::lonpublisher::metaeval($result);
     }      }
       $r->print('<hr /><form method="post" action="" >');
       $r->print('<p>'.&mt('If you would like to associate this resource ([_1]) with a current or previous course, please select one from the list below, otherwise select, \'None\'','<tt>'.$res_uri.'</tt>').'</p>');
       $output = &select_course();
       $r->print($output.'<br /><input type="submit" name="store" value="'.
                     &mt('Associate Resource With Selected Course').'">');
       $r->print('</form>');
       
       my ($port_path,$group) = &get_port_path_and_group($uri);
       $r->print('<br /><br /><form method="POST" action="'.$port_path.'">'.
                 '<input type="hidden" name="currentpath" value="'.$path.'" />'.
         '<input type="hidden" name="group" value="'.$group.'" />'.
         '<input type="submit" name="cancel" value="'.&mt('Cancel').'">'.
         '</form>');
   
       return;
   }
   sub select_course {
       my $output=$/;
       my $current_restriction=
    $Apache::lonpublisher::metadatafields{'courserestricted'};
       my $selected = ($current_restriction eq 'none' ? 'selected="selected"' 
                                      : '');
   
     $output .= '<select name="new_courserestricted" >';      $output .= '<select name="new_courserestricted" >';
     $output .= '<option value="none" '.$selected.'>None</option>';      $output .= '<option value="none" '.$selected.'>'.
     foreach my $key (keys (%courses)) {       &mt('None').'</option>'.$/;
         $key =~ m/(^.+)\.description$/;      my %courses;
         if ($Apache::lonpublisher::metadatafields{'courserestricted'} eq $1) {      foreach my $key (keys(%env)) {
             $selected = ' SELECTED ';          if ($key !~ m/^course\.(.+)\.description$/) { next; }
         } else {   my $cid = $1;
             $selected = '';          if ($env{$key} !~ /\S/) { next; }
         }   $courses{$key} = $cid;
         $output .= '<option value="'.$1.'"'.$selected.'>';      }
         $output .= $courses{$key};      foreach my $key (sort { lc($env{$a}) cmp lc($env{$b}) } (keys(%courses))) {
         $output .= '</option>';   my $cid = 'course.'.$courses{$key};
    my $selected = ($current_restriction eq $cid ? 'selected="selected"' 
                                        : '');
           if ($env{$key} !~ /\S/) { next; }
    $output .= '<option value="'.$cid.'" '.$selected.'>';
    $output .= $env{$key};
    $output .= '</option>'.$/;
    $selected = '';
     }      }
     $output .= '</select><br />';      $output .= '</select><br />';
     return ($output);      return ($output);
Line 385  sub prettyprint { Line 476  sub prettyprint {
  ($type eq 'comefrom_list') ||   ($type eq 'comefrom_list') ||
  ($type eq 'sequsage_list') ||   ($type eq 'sequsage_list') ||
  ($type eq 'dependencies')) {   ($type eq 'dependencies')) {
  return '<ul><font size="-1">'.join("\n",map {   return '<font size="-1"><ul>'.join("\n",map {
             my $url = &Apache::lonnet::clutter($_);              my $url = &Apache::lonnet::clutter($_);
             my $title = &Apache::lonnet::gettitle($url);              my $title = &Apache::lonnet::gettitle($url);
             if ($title eq '') {              if ($title eq '') {
Line 422  sub prettyprint { Line 513  sub prettyprint {
     # List of courses      # List of courses
     if ($type=~/\_list/) {      if ($type=~/\_list/) {
         my @Courses = split(/\s*\,\s*/,$value);          my @Courses = split(/\s*\,\s*/,$value);
         my $Str;          my $Str='<font size="-1"><ul>';
         foreach my $course (@Courses) {          foreach my $course (@Courses) {
             my %courseinfo = &Apache::lonnet::coursedescription($course);              my %courseinfo =
    &Apache::lonnet::coursedescription($course,
      {'one_time' => 1});
             if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {              if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {
                 next;                  next;
             }              }
             if ($Str ne '') { $Str .= '<br />'; }              $Str .= '<li><a href="/public/'.$courseinfo{'domain'}.'/'.
             $Str .= '<a href="/public/'.$courseinfo{'domain'}.'/'.  
                 $courseinfo{'num'}.'/syllabus" target="preview">'.                  $courseinfo{'num'}.'/syllabus" target="preview">'.
                 $courseinfo{'description'}.'</a>';                  $courseinfo{'description'}.'</a></li>';
         }          }
  return $Str;   return $Str.'</ul></font>';
     }      }
     # No pretty print found      # No pretty print found
     return $value;      return $value;
Line 482  sub prettyinput { Line 574  sub prettyinput {
         $size = 80;          $size = 80;
     }      }
     my $output;      my $output;
     if (defined($course_key)) {      if (defined($course_key) 
    && exists($env{$course_key.'.metadata.'.$type.'.options'})) {
         my $stu_add;          my $stu_add;
         my $only_one;          my $only_one;
         my %meta_options;          my %meta_options;
Line 639  sub handler { Line 732  sub handler {
     #      #
     my ($resdomain,$resuser)=      my ($resdomain,$resuser)=
         (&Apache::lonnet::declutter($uri)=~/^(\w+)\/(\w+)\//);          (&Apache::lonnet::declutter($uri)=~/^(\w+)\/(\w+)\//);
     my $html=&Apache::lonxml::xmlbegin();  
     $r->print($html.'<head><title>'.  
               'Catalog Information'.  
               '</title></head>');  
     if ($uri=~m:/adm/bombs/(.*)$:) {      if ($uri=~m:/adm/bombs/(.*)$:) {
         $r->print(&Apache::loncommon::bodytag('Error Messages'));          $r->print(&Apache::loncommon::start_page('Error Messages'));
         # Looking for all bombs?          # Looking for all bombs?
         &report_bombs($r,$uri);          &report_bombs($r,$uri);
     } elsif ($uri=~/\/portfolio\//) {      } elsif ($uri=~/\/portfolio\//) {
  ($resdomain,$resuser)=      ($resdomain,$resuser)=
     (&Apache::lonnet::declutter($uri)=~m|^(\w+)/(\w+)/portfolio|);      (&Apache::lonnet::declutter($uri)=~m|^(\w+)/(\w+)/portfolio|);
         $r->print(&Apache::loncommon::bodytag          $r->print(&Apache::loncommon::start_page('Edit Portfolio File Catalog Information',
           ('Edit Portfolio File Information','','','',$resdomain));   undef,
         &present_editable_metadata($r,$uri,'portfolio');   {'domain' => $resdomain,}));
           if ($env{'form.store'}) {
               &present_editable_metadata($r,$uri,'portfolio');
           } else {
               &pre_select_course($r,$uri);
           }
     } elsif ($uri=~/^\/\~/) {       } elsif ($uri=~/^\/\~/) { 
         # Construction space          # Construction space
         $r->print(&Apache::loncommon::bodytag          $r->print(&Apache::loncommon::start_page('Edit Catalog nformation',
                   ('Edit Catalog Information','','','',$resdomain));   undef,
    {'domain' => $resdomain,}));
         &present_editable_metadata($r,$uri);          &present_editable_metadata($r,$uri);
     } else {      } else {
         $r->print(&Apache::loncommon::bodytag          $r->print(&Apache::loncommon::start_page('Catalog Information',
   ('Catalog Information','','','',$resdomain));   undef,
    {'domain' => $resdomain,}));
         &present_uneditable_metadata($r,$uri);          &present_uneditable_metadata($r,$uri);
     }      }
     $r->print('</body></html>');      $r->print(&Apache::loncommon::end_page());
     return OK;      return OK;
 }  }
   
Line 727  sub present_uneditable_metadata { Line 824  sub present_uneditable_metadata {
     my ($thisversion)=($uri=~/\.(\d+)\.(\w+)\.meta$/);      my ($thisversion)=($uri=~/\.(\d+)\.(\w+)\.meta$/);
     $uri=~s/\.meta$//;      $uri=~s/\.meta$//;
     my $disuri=&Apache::lonnet::clutter($uri);      my $disuri=&Apache::lonnet::clutter($uri);
       $disuri=~s/^\/adm\/wrapper//;
     # version      # version
     my $currentversion=&Apache::lonnet::getversion($disuri);      my $currentversion=&Apache::lonnet::getversion($disuri);
     my $versiondisplay='';      my $versiondisplay='';
Line 877  sub print_dynamic_metadata { Line 975  sub print_dynamic_metadata {
             foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) {              foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) {
                 my $data = $dynmeta{'stats'}->{$identifier};                  my $data = $dynmeta{'stats'}->{$identifier};
                 my $course = $data->{'course'};                  my $course = $data->{'course'};
                 my %courseinfo = &Apache::lonnet::coursedescription($course);                  my %courseinfo = 
       &Apache::lonnet::coursedescription($course,
          {'one_time' => 1});
                 if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {                  if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {
                     &Apache::lonnet::logthis('lookup for '.$course.' failed');                      &Apache::lonnet::logthis('lookup for '.$course.' failed');
                     next;                      next;
Line 1002  sub present_editable_metadata { Line 1102  sub present_editable_metadata {
     # Header      # Header
     my $disuri=$uri;      my $disuri=$uri;
     my $fn=&Apache::lonnet::filelocation('',$uri);      my $fn=&Apache::lonnet::filelocation('',$uri);
     $disuri=~s/^\/\~/\/priv\//;      $disuri=~s{^/\~}{/priv/};
     $disuri=~s/\.meta$//;      $disuri=~s/\.meta$//;
     $disuri=~s|^/editupload||;      my $meta_uri = $disuri;
       my $path;
       if ($disuri =~ m|/portfolio/|) {
    ($disuri, $meta_uri, $path) =  &portfolio_display_uri($disuri,1);
       }
     my $target=$uri;      my $target=$uri;
     $target=~s/^\/\~/\/res\/$env{'request.role.domain'}\//;      $target=~s{^/\~}{/res/$env{'request.role.domain'}/};
     $target=~s/\.meta$//;      $target=~s/\.meta$//;
     my $bombs=&Apache::lonmsg::retrieve_author_res_msg($target);      my $bombs=&Apache::lonmsg::retrieve_author_res_msg($target);
     if ($bombs) {      if ($bombs) {
Line 1058  ENDDEL Line 1162  ENDDEL
         %Apache::lonpublisher::metadatakeys=();          %Apache::lonpublisher::metadatakeys=();
         my $result=&Apache::lonnet::getfile($fn);          my $result=&Apache::lonnet::getfile($fn);
         if ($result == -1){          if ($result == -1){
             $r->print('Creating new '.$disuri);      $r->print(&mt('Creating new file [_1]'),$meta_uri);
         } else {          } else {
             &Apache::lonpublisher::metaeval($result);              &Apache::lonpublisher::metaeval($result);
         }          }
Line 1074  ENDEDIT Line 1178  ENDEDIT
  my @fields;   my @fields;
  if ($file_type eq 'portfolio') {   if ($file_type eq 'portfolio') {
     @fields =  ('author','title','subject','keywords','abstract','notes','lowestgradelevel',      @fields =  ('author','title','subject','keywords','abstract','notes','lowestgradelevel',
                 'highestgradelevel','standards','courserestricted');                  'highestgradelevel','standards');
  } else {   } else {
     @fields = ('author','title','subject','keywords','abstract','notes',      @fields = ('author','title','subject','keywords','abstract','notes',
                  'copyright','customdistributionfile','language',                   'copyright','customdistributionfile','language',
Line 1094  ENDEDIT Line 1198  ENDEDIT
                 $Apache::lonpublisher::metadatafields{'copyright'}=                  $Apache::lonpublisher::metadatafields{'copyright'}=
                 'default';                  'default';
         }          }
         if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') {   if ($file_type eq 'portfolio') {
             $r->print('Using: <strong> '.$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.".description"}.      if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') {
                         "</strong> metadata framework<br />");   $r->print(&mt('Associated with course [_1]','<strong>'.$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.".description"}.
         } else {        '</strong>').'<br />');
             $r->print("This resource is not associated with a metadata framework<br />");      } else {
         }   $r->print("This resource is not associated with a course.<br />");
         foreach my $field_name(@fields) {      }
    }
           foreach my $field_name (@fields) {
   
             if (defined($env{'form.new_'.$field_name})) {              if (defined($env{'form.new_'.$field_name})) {
                 $Apache::lonpublisher::metadatafields{$field_name}=                  $Apache::lonpublisher::metadatafields{$field_name}=
                     join(',',&Apache::loncommon::get_env_multiple('form.new_'.$field_name));                      join(',',&Apache::loncommon::get_env_multiple('form.new_'.$field_name));
             }              }
             if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') {              if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none'
    && exists($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'})) {
                 # handle restrictions here                  # handle restrictions here
                 if (($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) ||                  if (($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) ||
                     ($field_name eq 'courserestricted')){                      ($field_name eq 'courserestricted')){
                     $output.=('<p>'.$lt{$field_name}.': '.                      $output.=("\n".'<p>'.$lt{$field_name}.': '.
                               &prettyinput($field_name,                                &prettyinput($field_name,
    $Apache::lonpublisher::metadatafields{$field_name},     $Apache::lonpublisher::metadatafields{$field_name},
                     'new_'.$field_name,'defaultmeta',                      'new_'.$field_name,'defaultmeta',
                     undef,undef,undef,undef,                      undef,undef,undef,undef,
                     $Apache::lonpublisher::metadatafields{'courserestricted'}).'</p>');                      $Apache::lonpublisher::metadatafields{'courserestricted'}).'</p>'."\n");
                  }                   }
             } else {              } else {
   
Line 1126  ENDEDIT Line 1233  ENDEDIT
                                 
             }              }
         }          }
    if ($env{'form.store'}) {
     $r->print($output.'<br /><input type="submit" name="store" value="'.      my $mfh;
                   &mt('Store Catalog Information').'">');      my $formname='store'; 
               my $file_content;
     }      if (&Apache::loncommon::get_env_multiple('form.new_keywords')) {
     $r->print('</form>');   $Apache::lonpublisher::metadatafields{'keywords'} = 
             if ($env{'form.store'}) {      join (',', &Apache::loncommon::get_env_multiple('form.new_keywords'));
             my $mfh;      }
             my $formname='store';   
             my $file_content;      foreach (sort keys %Apache::lonpublisher::metadatafields) {
             foreach my $meta_field (keys %env) {   next if ($_ =~ /\./);
                 if (&Apache::loncommon::get_env_multiple('form.new_keywords')) {   my $unikey=$_;
                     $Apache::lonpublisher::metadatafields{'keywords'} =    $unikey=~/^([A-Za-z]+)/;
                         join (',', &Apache::loncommon::get_env_multiple('form.new_keywords'));   my $tag=$1;
                 }   $tag=~tr/A-Z/a-z/;
             }   $file_content.= "\n\<$tag";
             foreach (sort keys %Apache::lonpublisher::metadatafields) {   foreach (split(/\,/,
                 next if ($_ =~ /\./);         $Apache::lonpublisher::metadatakeys{$unikey})
                 my $unikey=$_;   ) {
                 $unikey=~/^([A-Za-z]+)/;      my $value=
                 my $tag=$1;   $Apache::lonpublisher::metadatafields{$unikey.'.'.$_};
                 $tag=~tr/A-Z/a-z/;      $value=~s/\"/\'\'/g;
                 $file_content.= "\n\<$tag";      $file_content.=' '.$_.'="'.$value.'"' ;
                 foreach (split(/\,/,      # print $mfh ' '.$_.'="'.$value.'"';
                              $Apache::lonpublisher::metadatakeys{$unikey})   }
                          ) {   $file_content.= '>'.
                     my $value=      &HTML::Entities::encode
                     $Apache::lonpublisher::metadatafields{$unikey.'.'.$_};      ($Apache::lonpublisher::metadatafields{$unikey},
                     $value=~s/\"/\'\'/g;       '<>&"').
                     $file_content.=' '.$_.'="'.$value.'"' ;       '</'.$tag.'>';
                     # print $mfh ' '.$_.'="'.$value.'"';      }
                 }      if ($fn =~ m|/portfolio/|) {
                 $file_content.= '>'.   my ($path, $new_fn) = ($fn =~ m|/(portfolio.*)/([^/]*)$|);
                     &HTML::Entities::encode   $env{'form.'.$formname}=$file_content."\n";
                     ($Apache::lonpublisher::metadatafields{$unikey},   $env{'form.'.$formname.'.filename'}=$new_fn;
                      '<>&"').   my $result =&Apache::lonnet::userfileupload($formname,'',
                      '</'.$tag.'>';      $path);
             }  
             if ($fn =~ /\/portfolio\//) {   if ($result =~ /(error|notfound)/) {
                 $fn =~ /\/portfolio\/(.*)$/;      $r->print('<p><font color="red">'.
                 my $new_fn = '/'.$1;        &mt('Could not write metadata').', '.
                 $env{'form.'.$formname}=$file_content."\n";        &mt('FAIL').'</font></p>');
                 $env{'form.'.$formname.'.filename'}=$new_fn;   } else {
                 &Apache::lonnet::userfileupload('uploaddoc','',  
          'portfolio'.$env{'form.currentpath'});  
                 if (&Apache::lonnet::userfileupload($formname,'','portfolio') eq 'error: no uploaded file') {  
                     $r->print('<p><font color="red">'.  
                       &mt('Could not write metadata').', '.  
                      &mt('FAIL').'</font></p>');  
                 } else {  
                     $r->print('<p><font color="blue">'.&mt('Wrote Metadata').  
   ' '.&Apache::lonlocal::locallocaltime(time).  
   '</font></p>');  
                 }  
             } else {  
                 if (!  ($mfh=Apache::File->new('>'.$fn))) {  
                     $r->print('<p><font color="red">'.  
                         &mt('Could not write metadata').', '.  
                         &mt('FAIL').'</font></p>');  
                 } else {  
                     print $mfh $file_content;  
     $r->print('<p><font color="blue">'.&mt('Wrote Metadata').      $r->print('<p><font color="blue">'.&mt('Wrote Metadata').
       ' '.&Apache::lonlocal::locallocaltime(time).        ' '.&Apache::lonlocal::locallocaltime(time).
       '</font></p>');        '</font></p>');
                 }   }
             }      } else {
         }   if (!  ($mfh=Apache::File->new('>'.$fn))) {
       $r->print('<p><font color="red">'.
         &mt('Could not write metadata').', '.
         &mt('FAIL').'</font></p>');
    } else {
       print $mfh $file_content;
       $r->print('<p><font color="blue">'.&mt('Wrote Metadata').
         ' '.&Apache::lonlocal::locallocaltime(time).
         '</font></p>');
    }
       }
    }
   
    $r->print($output.'<br /><input type="submit" name="store" value="'.
                     &mt('Store Catalog Information').'">');
   
    if ($file_type eq 'portfolio') {
       my ($port_path,$group) = &get_port_path_and_group($uri);
       $r->print('</form>
                  <br /><br /><form method="POST" action="'.$port_path.'">'.
         '<input type="hidden" name="group" value="'.$group.'" />'.
         '<input type="hidden" name="currentpath" value="'.$path.'" />'.
         '<input type="submit" name="cancel" value="'.&mt('Discard Edits and Return to Portfolio').'">');
    }
       }
       
       $r->print('</form>');
   
     return;      return;
 }  }
   

Removed from v.1.139  
changed lines
  Added in v.1.157


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.