'.&mt('Evaluation Comments').' ('.
&mt('visible to author and co-authors only').
@@ -884,6 +939,8 @@ sub print_dynamic_metadata {
return;
}
+
+
#####################################################
#####################################################
### ###
@@ -899,25 +956,47 @@ sub present_editable_metadata {
my $fn=&Apache::lonnet::filelocation('',$uri);
$disuri=~s/^\/\~/\/priv\//;
$disuri=~s/\.meta$//;
+ $disuri=~s|^/editupload||;
my $target=$uri;
- $target=~s/^\/\~/\/res\/$ENV{'request.role.domain'}\//;
+ $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'}) {
+ my $showdel=1;
+ if ($env{'form.delmsg'}) {
if (&Apache::lonmsg::del_url_author_res_msg($target) eq 'ok') {
$bombs=&mt('Messages deleted.');
+ $showdel=0;
} else {
$bombs=&mt('Error deleting messages');
}
}
- my $del=&mt('Delete Messages');
+ if ($env{'form.clearmsg'}) {
+ my $cleardir=$target;
+ $cleardir=~s/\/[^\/]+$/\//;
+ if (&Apache::lonmsg::clear_author_res_msg($cleardir) eq 'ok') {
+ $bombs=&mt('Messages cleared.');
+ $showdel=0;
+ } else {
+ $bombs=&mt('Error clearing messages');
+ }
+ }
+ my $del=&mt('Delete Messages for this Resource');
+ my $clear=&mt('Clear all Messages in Subdirectory');
+ my $goback=&mt('Back to Source File');
$r->print(<$disuri
-
- $bombs
ENDBOMBS
+ if ($showdel) {
+ $r->print(<
+
+ENDDEL
+ } else {
+ $r->print(''.$goback.'');
+ }
+ $r->print(' '.$bombs);
} else {
my $displayfile='Catalog Information for '.$disuri;
if ($disuri=~/\/default$/) {
@@ -929,7 +1008,12 @@ ENDBOMBS
}
%Apache::lonpublisher::metadatafields=();
%Apache::lonpublisher::metadatakeys=();
- &Apache::lonpublisher::metaeval(&Apache::lonnet::getfile($fn));
+ my $result=&Apache::lonnet::getfile($fn);
+ if ($result == -1){
+ $r->print('Creating new '.$disuri);
+ } else {
+ &Apache::lonpublisher::metaeval($result);
+ }
$r->print(<$displayfile
@@ -951,9 +1035,9 @@ ENDEDIT
'obsolete','obsoletereplacement');
}
foreach (@fields) {
- if (defined($ENV{'form.new_'.$_})) {
+ if (defined($env{'form.new_'.$_})) {
$Apache::lonpublisher::metadatafields{$_}=
- $ENV{'form.new_'.$_};
+ $env{'form.new_'.$_};
}
if (! $Apache::lonpublisher::metadatafields{'copyright'}) {
$Apache::lonpublisher::metadatafields{'copyright'}=
@@ -963,38 +1047,101 @@ ENDEDIT
&prettyinput($_,
$Apache::lonpublisher::metadatafields{$_},
'new_'.$_,'defaultmeta').'');
+ if ($env{'form.metacourse'}) {
+ $r->print('This is the instructor metadata area ');
+ # have to find all the metadata items, so we'll loop through and find them
+ $r->print('
');
+ $r->print('The course is: '.$env{'form.metacourse'}.' ');
+ foreach my $key (sort keys %env) {
+ if ($key=~m/^($env{'form.metacourse'}\.metadata\.)(\d+)\.title/) {
+ my $key_base = $1;
+ my $item_num = $2;
+ # found one, so let's display it
+ my $title = $env{$key_base.$item_num.'.title'};
+ my $type = $env{$key_base.$item_num.'.type'};
+ my @choices = sort(split /, /,$env{$key_base.$item_num.'.values'});
+ $r->print($title.' ');
+ $r->print($type.' ');
+
+ foreach my $word (@choices) {
+ my $checked;
+ if ($Apache::lonpublisher::metadatafields{'coursekeyword'}=~ m/$word/) {
+ $checked = 1;
+ } else {
+ undef($checked);
+ }
+ $r->print(&Apache::lonhtmlcommon::checkbox('instmeta_'.$env{'form.metacourse'}.'_'.$item_num,$checked,$word).$word.' ');
+ }
}
- if ($ENV{'form.store'}) {
+ }
+ $r->print(' ');
+ $r->print('
');
+ return 'ok';
+ }
+ }
+ if ($env{'form.store'}) {
my $mfh;
- if (! ($mfh=Apache::File->new('>'.$fn))) {
- $r->print('
'.
- &mt('Could not write metadata').', '.
- &mt('FAIL').'
');
+ my $formname='store';
+ my $file_content;
+ foreach my $meta_field (keys %env) {
+ if ($meta_field=~m/^form.instmeta_(.+)_(\d+)$/) {
+ $r->print('Found a field ');
+ }
+ if (&Apache::loncommon::get_env_multiple('form.keywords')) {
+ $Apache::lonpublisher::metadatafields{'coursekeyword'} =
+ join (', ', &Apache::loncommon::get_env_multiple('form.keywords'));
+ }
+ }
+ 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.'>';
+ }
+ if ($fn =~ /\/portfolio\//) {
+ $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('
'.
+ &mt('Could not write metadata').', '.
+ &mt('FAIL').'