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

banghart lon-capa-cvs@mail.lon-capa.org
Sat, 13 Aug 2005 19:32:31 -0000


banghart		Sat Aug 13 15:32:31 2005 EDT

  Modified files:              
    /loncom/interface	lonmeta.pm 
  Log:
  	Saving instructor metadata associated with portfolio files.
  	sub save_instructor_metadata 
  	still lots to do
  
  
Index: loncom/interface/lonmeta.pm
diff -u loncom/interface/lonmeta.pm:1.104 loncom/interface/lonmeta.pm:1.105
--- loncom/interface/lonmeta.pm:1.104	Mon Aug  8 20:24:55 2005
+++ loncom/interface/lonmeta.pm	Sat Aug 13 15:32:28 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Metadata display handler
 #
-# $Id: lonmeta.pm,v 1.104 2005/08/09 00:24:55 banghart Exp $
+# $Id: lonmeta.pm,v 1.105 2005/08/13 19:32:28 banghart Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -923,11 +923,61 @@
 }
 sub save_instructor_metadata {
     my ($r) = @_;
-    $r->print('This is the save instructor metadata area<br />');
+    my $uri=$r->uri;
+    my $fn=&Apache::lonnet::filelocation('',$uri);
     my @words =  &Apache::loncommon::get_env_multiple('form.keywords');
+    $r->print('This is the save instructor metadata area<br />');
+    my $mfh;
+    my $formname='store';
+    my $file_content;
+    foreach (sort keys %Apache::lonpublisher::metadatafields) {
+        next if ($_ =~ /\./);
+        my $unikey=$_;
+        $unikey=~/^([A-Za-z]+)/;
+        my $tag=$1;
+        $tag=~tr/A-Z/a-z/;
+        $file_content.= "\n\<$tag";
+        foreach (split(/\,/,
+                  $Apache::lonpublisher::metadatakeys{$unikey})
+                 ) {
+            my $value=$Apache::lonpublisher::metadatafields{$unikey.'.'.$_};
+            $value=~s/\"/\'\'/g;
+            $file_content.=' '.$_.'="'.$value.'"' ;
+                    # print $mfh ' '.$_.'="'.$value.'"';
+        }
+        $file_content.= '>'.
+        &HTML::Entities::encode
+              ($Apache::lonpublisher::metadatafields{$unikey},
+                     '<>&"').
+                     '</'.$tag.'>';
+    }
+
     foreach my $word (@words) {
         $r->print('You entered:'.$word.'<br />');
     }
+    my $tag = 'keywords';
+    $file_content.= "\n\<$tag";
+    $file_content.= '>'.
+        &HTML::Entities::encode
+              (join(', ',@words),
+                     '<>&"').
+                     '</keywords>';
+    $fn =~ /\/portfolio\/(.*)$/;
+    my $new_fn = '/'.$1;
+    $env{'form.'.$formname}=$file_content;
+    $env{'form.'.$formname.'.filename'}=$new_fn;
+    &Apache::lonnet::userfileupload('uploaddoc','',
+	        'portfolio'.$env{'form.currentpath'});
+    my $status =&Apache::lonnet::userfileupload($formname,'','portfolio');
+    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>');
+    }
     return 'ok';
 }
 sub present_instructor_metadata {