[LON-CAPA-cvs] cvs: loncom /interface lonmeta.pm

matthew lon-capa-cvs@mail.lon-capa.org
Tue, 13 Apr 2004 16:03:46 -0000


This is a MIME encoded message

--matthew1081872226
Content-Type: text/plain

matthew		Tue Apr 13 12:03:46 2004 EDT

  Modified files:              
    /loncom/interface	lonmeta.pm 
  Log:
  Break &handler into 3 subs, &report_bombs, &present_uneditable_metadata,
  and &present_editable_metadata.
  
  
--matthew1081872226
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20040413120346.txt"

Index: loncom/interface/lonmeta.pm
diff -u loncom/interface/lonmeta.pm:1.65 loncom/interface/lonmeta.pm:1.66
--- loncom/interface/lonmeta.pm:1.65	Tue Apr 13 11:41:19 2004
+++ loncom/interface/lonmeta.pm	Tue Apr 13 12:03:46 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Metadata display handler
 #
-# $Id: lonmeta.pm,v 1.65 2004/04/13 15:41:19 matthew Exp $
+# $Id: lonmeta.pm,v 1.66 2004/04/13 16:03:46 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -146,7 +146,10 @@
     return $output;
 }
 
+#
 # Turn MySQL row into hash
+#     This routine is here for historic reasons.  Probably should be moved to 
+#     a more generic place since it has nothing to do with metadata
 sub metadata_col_to_hash {
     my @cols=@_;
     my %hash=();
@@ -396,107 +399,125 @@
     #
     my $uri=$r->uri;
     #
-    # Looking for all bombs?
-    if ($uri=~/\/adm\/bombs\/(.*)$/) {
-        # Set document type
-        $uri=&Apache::lonnet::declutter($1);
-        &Apache::loncommon::content_type($r,'text/html');
-        $r->send_http_header;
-        #
-        return OK if $r->header_only;
-        $r->print(&Apache::loncommon::bodytag('Error Messages'));
-        $r->print('<h1>'.&Apache::lonnet::clutter($uri).'</h1>');
-        my ($domain,$author)=($uri=~/^(\w+)\/(\w+)\//);
-        if (&Apache::loncacc::constructaccess('/~'.$author.'/',$domain)) {
-            my %brokenurls=&Apache::lonmsg::all_url_author_res_msg($author,
-                                                                   $domain);
-            foreach (sort keys %brokenurls) {
-                if ($_=~/^\Q$uri\E/) {
-                    $r->print(&Apache::lonhtmlcommon::crumbs
-                              (&Apache::lonnet::clutter($_)).
-                              &Apache::lonmsg::retrieve_author_res_msg($_).
-                              '<hr />');
-                }
+    if ($uri=~m:/adm/bombs/(.*)$:) {
+        # Looking for all bombs?
+        &report_bombs($r,$uri);
+    } elsif ($uri=~/^\/\~/) { 
+        # Construction space
+        &present_editable_metadata($r,$uri);
+    } else {
+        &present_uneditable_metadata($r,$uri);
+    }
+    return OK;
+}
+
+sub report_bombs {
+    my ($r,$uri) = @_;
+    # Set document type
+    $uri=~ s:/adm/bombs/::;
+    $uri=&Apache::lonnet::declutter($uri);
+    &Apache::loncommon::content_type($r,'text/html');
+    $r->send_http_header;
+    #
+    return OK if $r->header_only;
+    $r->print(&Apache::loncommon::bodytag('Error Messages'));
+    $r->print('<h1>'.&Apache::lonnet::clutter($uri).'</h1>');
+    my ($domain,$author)=($uri=~/^(\w+)\/(\w+)\//);
+    if (&Apache::loncacc::constructaccess('/~'.$author.'/',$domain)) {
+        my %brokenurls=&Apache::lonmsg::all_url_author_res_msg($author,
+                                                               $domain);
+        foreach (sort keys %brokenurls) {
+            if ($_=~/^\Q$uri\E/) {
+                $r->print(&Apache::lonhtmlcommon::crumbs
+                          (&Apache::lonnet::clutter($_)).
+                          &Apache::lonmsg::retrieve_author_res_msg($_).
+                          '<hr />');
             }
-        } else {
-            $r->print(&mt('Not authorized'));
-        }
-        $r->print('</body></html>');
-    } elsif ($uri!~/^\/\~/) { 
-        # This is not in construction space
-        my ($resdomain,$resuser)=
-            (&Apache::lonnet::declutter($uri)=~/^(\w+)\/(\w+)\//);
-        $loaderror=&Apache::lonnet::overloaderror
-            ($r,
-             &Apache::lonnet::homeserver($resuser,$resdomain));
-        if ($loaderror) { return $loaderror; }
-        #
-        my %content=();
-        # Set document type
-        &Apache::loncommon::content_type($r,'text/html');
-        $r->send_http_header;
-        return OK if $r->header_only;
-        # Read file
-        foreach (split(/\,/,&Apache::lonnet::metadata($uri,'keys'))) {
-            $content{$_}=&Apache::lonnet::metadata($uri,$_);
-        }
-        # Render Output
-        # displayed url
-        my ($thisversion)=($uri=~/\.(\d+)\.(\w+)\.meta$/);
-        $uri=~s/\.meta$//;
-        my $disuri=&Apache::lonnet::clutter($uri);
-        # version
-        my $currentversion=&Apache::lonnet::getversion($disuri);
-        my $versiondisplay='';
-        if ($thisversion) {
-            $versiondisplay=&mt('Version').': '.$thisversion.
-                ' ('.&mt('most recent version').': '.
-                ($currentversion>0 ? 
-                 $currentversion   :
-                 &mt('information not available')).')';
-        } else {
-            $versiondisplay='Version: '.$currentversion;
-        }
-        # crumbify displayed URL
-        $disuri=&Apache::lonhtmlcommon::crumbs($disuri);
-        # obsolete
-        my $obsolete=$content{'obsolete'};
-        my $obsoletewarning='';
-        if (($obsolete) && ($ENV{'user.adv'})) {
-            $obsoletewarning='<p><font color="red">'.
-                &mt('This resource has been marked obsolete by the author(s)').
-                '</font></p>';
-        }
-        #
-        my %lt=&fieldnames();
-        my $table='';
-        my $bodytag=&Apache::loncommon::bodytag
-            ('Catalog Information','','','',$resdomain);
-        foreach ('title', 
-                 'author', 
-                 'subject', 
-                 'keywords', 
-                 'notes', 
-                 'abstract',
-                 'lowestgradelevel',
-                 'highestgradelevel',
-                 'standards', 
-                 'mime', 
-                 'language', 
-                 'creationdate', 
-                 'lastrevisiondate', 
-                 'owner', 
-                 'copyright', 
-                 'customdistributionfile', 
-                 'obsolete', 
-                 'obsoletereplacement') {
-            $table.='<tr><td bgcolor="#AAAAAA">'.$lt{$_}.
-	        '</td><td bgcolor="#CCCCCC">'.
-                &prettyprint($_,$content{$_}).'</td></tr>';
-            delete $content{$_};
         }
-        #
-        $r->print(<<ENDHEAD);
+    } else {
+        $r->print(&mt('Not authorized'));
+    }
+    $r->print('</body></html>');
+    return;
+}
+
+sub present_uneditable_metadata {
+    my ($r,$uri) = @_;
+    my ($resdomain,$resuser)=
+        (&Apache::lonnet::declutter($uri)=~/^(\w+)\/(\w+)\//);
+    my $loaderror=&Apache::lonnet::overloaderror
+        ($r,
+         &Apache::lonnet::homeserver($resuser,$resdomain));
+    if ($loaderror) { 
+        return $loaderror;
+    }
+    #
+    my %content=();
+    # Set document type
+    &Apache::loncommon::content_type($r,'text/html');
+    $r->send_http_header;
+    return OK if $r->header_only;
+    # Read file
+    foreach (split(/\,/,&Apache::lonnet::metadata($uri,'keys'))) {
+        $content{$_}=&Apache::lonnet::metadata($uri,$_);
+    }
+    # Render Output
+    # displayed url
+    my ($thisversion)=($uri=~/\.(\d+)\.(\w+)\.meta$/);
+    $uri=~s/\.meta$//;
+    my $disuri=&Apache::lonnet::clutter($uri);
+    # version
+    my $currentversion=&Apache::lonnet::getversion($disuri);
+    my $versiondisplay='';
+    if ($thisversion) {
+        $versiondisplay=&mt('Version').': '.$thisversion.
+            ' ('.&mt('most recent version').': '.
+            ($currentversion>0 ? 
+             $currentversion   :
+             &mt('information not available')).')';
+    } else {
+        $versiondisplay='Version: '.$currentversion;
+    }
+    # crumbify displayed URL
+    $disuri=&Apache::lonhtmlcommon::crumbs($disuri);
+    # obsolete
+    my $obsolete=$content{'obsolete'};
+    my $obsoletewarning='';
+    if (($obsolete) && ($ENV{'user.adv'})) {
+        $obsoletewarning='<p><font color="red">'.
+            &mt('This resource has been marked obsolete by the author(s)').
+            '</font></p>';
+    }
+    #
+    my %lt=&fieldnames();
+    my $table='';
+    my $bodytag=&Apache::loncommon::bodytag
+        ('Catalog Information','','','',$resdomain);
+    foreach ('title', 
+             'author', 
+             'subject', 
+             'keywords', 
+             'notes', 
+             'abstract',
+             'lowestgradelevel',
+             'highestgradelevel',
+             'standards', 
+             'mime', 
+             'language', 
+             'creationdate', 
+             'lastrevisiondate', 
+             'owner', 
+             'copyright', 
+             'customdistributionfile', 
+             'obsolete', 
+             'obsoletereplacement') {
+        $table.='<tr><td bgcolor="#AAAAAA">'.$lt{$_}.
+            '</td><td bgcolor="#CCCCCC">'.
+            &prettyprint($_,$content{$_}).'</td></tr>';
+        delete $content{$_};
+    }
+    #
+    $r->print(<<ENDHEAD);
 <html><head><title>Catalog Information</title></head>
 $bodytag
 <h2>$content{'title'}</h2>
@@ -507,117 +528,119 @@
 $table
 </table>
 ENDHEAD
-        if ($ENV{'user.adv'}) {
-            # Dynamic Metadata
+    if ($ENV{'user.adv'}) {
+        # Dynamic Metadata
+        $r->print(
+                  '<h3>'.&mt('Dynamic Metadata').' ('.
+                  &mt('updated periodically').')</h3>'.&mt('Processing').
+                  ' ...<br />');
+        $r->rflush();
+        my %items=&fieldnames();
+        my %dynmeta=&dynamicmeta($uri);
+        # General Access and Usage Statistics
+        $r->print('<h4>'.&mt('Access and Usage Statistics').'</h4>'.
+                  '<table cellspacing=2 border=0>');
+        foreach ('count',
+                 'sequsage','sequsage_list',
+                 'comefrom','comefrom_list',
+                 'goto','goto_list',
+                 'course','course_list') {
+            $r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'.
+                      '<td bgcolor="#CCCCCC">'.
+                      &prettyprint($_,$dynmeta{$_})."</td></tr>\n");
+        }
+        $r->print('</table>');
+        if ($uri=~/\.(problem|exam|quiz|assess|survey|form)\.meta$/) {
+            # This is an assessment, print assessment data
             $r->print(
-                      '<h3>'.&mt('Dynamic Metadata').' ('.
-                      &mt('updated periodically').')</h3>'.&mt('Processing').
-                      ' ...<br />');
-            $r->rflush();
-            my %items=&fieldnames();
-            my %dynmeta=&dynamicmeta($uri);
-            # General Access and Usage Statistics
-            $r->print('<h4>'.&mt('Access and Usage Statistics').'</h4>'.
+                      '<h4>'.&mt('Assessment Statistical Data').'</h4>'.
                       '<table cellspacing=2 border=0>');
-            foreach ('count',
-                     'sequsage','sequsage_list',
-                     'comefrom','comefrom_list',
-                     'goto','goto_list',
-                     'course','course_list') {
+            foreach ('stdno','avetries','difficulty') {
                 $r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'.
                           '<td bgcolor="#CCCCCC">'.
                           &prettyprint($_,$dynmeta{$_})."</td></tr>\n");
             }
-            $r->print('</table>');
-            if ($uri=~/\.(problem|exam|quiz|assess|survey|form)\.meta$/) {
-                # This is an assessment, print assessment data
-                $r->print(
-                          '<h4>'.&mt('Assessment Statistical Data').'</h4>'.
-                          '<table cellspacing=2 border=0>');
-                foreach ('stdno','avetries','difficulty') {
-                    $r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'.
-                              '<td bgcolor="#CCCCCC">'.
-                              &prettyprint($_,$dynmeta{$_})."</td></tr>\n");
-                }
-                $r->print('</table>');    
-            }
-            $r->print('<h4>'.&mt('Evaluation Data').'</h4>'.
-                      '<table cellspacing=2 border=0>');
-            foreach ('clear','depth','helpful','correct','technical') {
-                $r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'.
-                          '<td bgcolor="#CCCCCC">'.
-                          &prettyprint($_,$dynmeta{$_})."</td></tr>\n");
-            }
-            $r->print('</table>');
-            $uri=~/^\/res\/(\w+)\/(\w+)\//; 
-            if ((($ENV{'user.domain'} eq $1) && ($ENV{'user.name'} eq $2))
-                || ($ENV{'user.role.ca./'.$1.'/'.$2})) {
-                $r->print('<h4>'.&mt('Evaluation Comments').' ('.
-                          &mt('visible to author and co-authors only').
-                          ')</h4>'.
-                          '<blockquote>'.$dynmeta{'comments'}.'</blockquote>');
-                $r->print('<a name="bombs" /><h4>'.&mt('Error Messages').' ('.
-                          &mt('visible to author and co-authors only').')'.
-                          '</h4>'.
-                          &Apache::lonmsg::retrieve_author_res_msg($uri));
-            }
-            # All other stuff
-            $r->print('<h3>'.
-                &mt('Additional Metadata (non-standard, parameters, exports)').
-                      '</h3>');
-            foreach (sort keys %content) {
-                my $name=$_;
-                if ($name!~/\.display$/) {
-                    my $display=&Apache::lonnet::metadata($uri,
-                                                          $name.'.display');
-                    if (! $display) { 
-                        $display=$name;
-                    };
-                    my $otherinfo='';
-                    foreach ('name','part','type','default') {
-                        if (defined(&Apache::lonnet::metadata($uri,
-                                                              $name.'.'.$_))) {
-                            $otherinfo.=' '.$_.'='.
-                                &Apache::lonnet::metadata($uri,
-                                                          $name.'.'.$_).'; ';
-                        }
-                    }
-                    $r->print('<b>'.$display.':</b> '.$content{$name});
-                    if ($otherinfo) {
-                        $r->print(' ('.$otherinfo.')');
+            $r->print('</table>');    
+        }
+        $r->print('<h4>'.&mt('Evaluation Data').'</h4>'.
+                  '<table cellspacing=2 border=0>');
+        foreach ('clear','depth','helpful','correct','technical') {
+            $r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'.
+                      '<td bgcolor="#CCCCCC">'.
+                      &prettyprint($_,$dynmeta{$_})."</td></tr>\n");
+        }
+        $r->print('</table>');
+        $uri=~/^\/res\/(\w+)\/(\w+)\//; 
+        if ((($ENV{'user.domain'} eq $1) && ($ENV{'user.name'} eq $2))
+            || ($ENV{'user.role.ca./'.$1.'/'.$2})) {
+            $r->print('<h4>'.&mt('Evaluation Comments').' ('.
+                      &mt('visible to author and co-authors only').
+                      ')</h4>'.
+                      '<blockquote>'.$dynmeta{'comments'}.'</blockquote>');
+            $r->print('<a name="bombs" /><h4>'.&mt('Error Messages').' ('.
+                      &mt('visible to author and co-authors only').')'.
+                      '</h4>'.
+                      &Apache::lonmsg::retrieve_author_res_msg($uri));
+        }
+        # All other stuff
+        $r->print('<h3>'.
+                  &mt('Additional Metadata (non-standard, parameters, exports)').
+                  '</h3>');
+        foreach (sort keys %content) {
+            my $name=$_;
+            if ($name!~/\.display$/) {
+                my $display=&Apache::lonnet::metadata($uri,
+                                                      $name.'.display');
+                if (! $display) { 
+                    $display=$name;
+                };
+                my $otherinfo='';
+                foreach ('name','part','type','default') {
+                    if (defined(&Apache::lonnet::metadata($uri,
+                                                          $name.'.'.$_))) {
+                        $otherinfo.=' '.$_.'='.
+                            &Apache::lonnet::metadata($uri,
+                                                      $name.'.'.$_).'; ';
                     }
-                    $r->print("<br />\n");
                 }
+                $r->print('<b>'.$display.':</b> '.$content{$name});
+                if ($otherinfo) {
+                    $r->print(' ('.$otherinfo.')');
+                }
+                $r->print("<br />\n");
             }
         }
-        # End Resource Space Call
-    } else {
-        # Construction Space Call
-        # Set document type
-        &Apache::loncommon::content_type($r,'text/html');
-        $r->send_http_header;
-        #
-        return OK if $r->header_only;
-        # Header
-        my $disuri=$uri;
-        my $fn=&Apache::lonnet::filelocation('',$uri);
-        $disuri=~s/^\/\~/\/priv\//;
-        $disuri=~s/\.meta$//;
-        my $target=$uri;
-        $target=~s/^\/\~/\/res\/$ENV{'request.role.domain'}\//;
-        $target=~s/\.meta$//;
-        my $bombs=&Apache::lonmsg::retrieve_author_res_msg($target);
-        if ($bombs) {
-            if ($ENV{'form.delmsg'}) {
-                if (&Apache::lonmsg::del_url_author_res_msg($target) eq 'ok') {
-                    $bombs=&mt('Messages deleted.');
-                } else {
-                    $bombs=&mt('Error deleting messages');
-                }
+    }
+}
+
+sub present_editable_metadata {
+    my ($r,$uri) = @_;
+    # Construction Space Call
+    # Set document type
+    &Apache::loncommon::content_type($r,'text/html');
+    $r->send_http_header;
+    #
+    return OK if $r->header_only;
+    # Header
+    my $disuri=$uri;
+    my $fn=&Apache::lonnet::filelocation('',$uri);
+    $disuri=~s/^\/\~/\/priv\//;
+    $disuri=~s/\.meta$//;
+    my $target=$uri;
+    $target=~s/^\/\~/\/res\/$ENV{'request.role.domain'}\//;
+    $target=~s/\.meta$//;
+    my $bombs=&Apache::lonmsg::retrieve_author_res_msg($target);
+    if ($bombs) {
+        if ($ENV{'form.delmsg'}) {
+            if (&Apache::lonmsg::del_url_author_res_msg($target) eq 'ok') {
+                $bombs=&mt('Messages deleted.');
+            } else {
+                $bombs=&mt('Error deleting messages');
             }
-            my $bodytag=&Apache::loncommon::bodytag('Error Messages');
-            my $del=&mt('Delete Messages');
-            $r->print(<<ENDBOMBS);
+        }
+        my $bodytag=&Apache::loncommon::bodytag('Error Messages');
+        my $del=&mt('Delete Messages');
+        $r->print(<<ENDBOMBS);
 <html><head><title>Edit Catalog Information</title></head>
 $bodytag
 <h1>$disuri</h1>
@@ -628,84 +651,85 @@
 </body>
 </html>
 ENDBOMBS
-        } else {
-            my $displayfile='Catalog Information for '.$disuri;
-            if ($disuri=~/\/default$/) {
-                my $dir=$disuri;
-                $dir=~s/default$//;
-                $displayfile=
-                    &mt('Default Cataloging Information for Directory').' '.
-                    $dir;
-            }
-            my $bodytag=
-                &Apache::loncommon::bodytag('Edit Catalog Information');
-            %Apache::lonpublisher::metadatafields=();
-            %Apache::lonpublisher::metadatakeys=();
-            &Apache::lonpublisher::metaeval(&Apache::lonnet::getfile($fn));
-            $r->print(<<ENDEDIT);
+    } else {
+        my $displayfile='Catalog Information for '.$disuri;
+        if ($disuri=~/\/default$/) {
+            my $dir=$disuri;
+            $dir=~s/default$//;
+            $displayfile=
+                &mt('Default Cataloging Information for Directory').' '.
+                $dir;
+        }
+        my $bodytag=
+            &Apache::loncommon::bodytag('Edit Catalog Information');
+        %Apache::lonpublisher::metadatafields=();
+        %Apache::lonpublisher::metadatakeys=();
+        &Apache::lonpublisher::metaeval(&Apache::lonnet::getfile($fn));
+        $r->print(<<ENDEDIT);
 <html><head><title>Edit Catalog Information</title></head>
 $bodytag
 <h1>$displayfile</h1>
 <form method="post" name="defaultmeta">
 ENDEDIT
-            $r->print('<script language="JavaScript">'.
-                      &Apache::loncommon::browser_and_searcher_javascript.
-                      '</script>');
-            my %lt=&fieldnames();
-            foreach ('author','title','subject','keywords','abstract','notes',
-                     'copyright','customdistributionfile','language',
-                     'standards',
-                     'lowestgradelevel','highestgradelevel',
-                     'obsolete','obsoletereplacement') {
-                if (defined($ENV{'form.new_'.$_})) {
-                    $Apache::lonpublisher::metadatafields{$_}=
-                        $ENV{'form.new_'.$_};
-                }
-                if (! $Apache::lonpublisher::metadatafields{'copyright'}) {
-                    $Apache::lonpublisher::metadatafields{'copyright'}=
-                        'default';
-                }
-                $r->print('<p>'.$lt{$_}.': '.
-                          &prettyinput
-                          ($_,$Apache::lonpublisher::metadatafields{$_},
-                           'new_'.$_,'defaultmeta').'</p>');
+        $r->print('<script language="JavaScript">'.
+                  &Apache::loncommon::browser_and_searcher_javascript.
+                  '</script>');
+        my %lt=&fieldnames();
+        foreach ('author','title','subject','keywords','abstract','notes',
+                 'copyright','customdistributionfile','language',
+                 'standards',
+                 'lowestgradelevel','highestgradelevel',
+                 'obsolete','obsoletereplacement') {
+            if (defined($ENV{'form.new_'.$_})) {
+                $Apache::lonpublisher::metadatafields{$_}=
+                    $ENV{'form.new_'.$_};
             }
-            if ($ENV{'form.store'}) {
-                my $mfh;
-                if (!  ($mfh=Apache::File->new('>'.$fn))) {
-                    $r->print('<p><font color=red>'.
-                              &mt('Could not write metadata').', '.
-                              &mt('FAIL').'</font>');
-                } else {
-                    foreach (sort keys %Apache::lonpublisher::metadatafields) {
-                        if ($_!~/\./) {
-                            my $unikey=$_;
-                            $unikey=~/^([A-Za-z]+)/;
-                            my $tag=$1;
-                            $tag=~tr/A-Z/a-z/;
-                            print $mfh "\n\<$tag";
-                            foreach (split(/\,/,
+            if (! $Apache::lonpublisher::metadatafields{'copyright'}) {
+                $Apache::lonpublisher::metadatafields{'copyright'}=
+                    'default';
+            }
+            $r->print('<p>'.$lt{$_}.': '.
+                      &prettyinput
+                      ($_,$Apache::lonpublisher::metadatafields{$_},
+                       'new_'.$_,'defaultmeta').'</p>');
+        }
+        if ($ENV{'form.store'}) {
+            my $mfh;
+            if (!  ($mfh=Apache::File->new('>'.$fn))) {
+                $r->print('<p><font color=red>'.
+                          &mt('Could not write metadata').', '.
+                          &mt('FAIL').'</font>');
+            } else {
+                foreach (sort keys %Apache::lonpublisher::metadatafields) {
+                    if ($_!~/\./) {
+                        my $unikey=$_;
+                        $unikey=~/^([A-Za-z]+)/;
+                        my $tag=$1;
+                        $tag=~tr/A-Z/a-z/;
+                        print $mfh "\n\<$tag";
+                        foreach (split(/\,/,
                                  $Apache::lonpublisher::metadatakeys{$unikey})
-                                     ) {
-                                my $value=
+                                 ) {
+                            my $value=
                         $Apache::lonpublisher::metadatafields{$unikey.'.'.$_};
-                                $value=~s/\"/\'\'/g;
-                                print $mfh ' '.$_.'="'.$value.'"';
-                            }
-                            print $mfh '>'.
-                                &HTML::Entities::encode($Apache::lonpublisher::metadatafields{$unikey},'<>&"').
-                                '</'.$tag.'>';
+                            $value=~s/\"/\'\'/g;
+                            print $mfh ' '.$_.'="'.$value.'"';
                         }
+                        print $mfh '>'.
+                            &HTML::Entities::encode
+                            ($Apache::lonpublisher::metadatafields{$unikey},
+                             '<>&"').
+                             '</'.$tag.'>';
                     }
-                    $r->print('<p>'.&mt('Wrote Metadata'));
                 }
+                $r->print('<p>'.&mt('Wrote Metadata'));
             }
-            $r->print('<br /><input type="submit" name="store" value="'.
-                      &mt('Store Catalog Information').'"></form>'.
-                      '</body></html>');
         }
+        $r->print('<br /><input type="submit" name="store" value="'.
+                  &mt('Store Catalog Information').'"></form>'.
+                  '</body></html>');
     }
-    return OK;
+    return;
 }
 
 # BEGIN Block

--matthew1081872226--