--- loncom/interface/lonmeta.pm 2005/03/16 22:52:04 1.93
+++ loncom/interface/lonmeta.pm 2005/08/13 19:32:28 1.105
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Metadata display handler
#
-# $Id: lonmeta.pm,v 1.93 2005/03/16 22:52:04 matthew Exp $
+# $Id: lonmeta.pm,v 1.105 2005/08/13 19:32:28 banghart Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -17,7 +17,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License
+# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
@@ -31,9 +31,9 @@ package Apache::lonmeta;
use strict;
use LONCAPA::lonmetadata();
use Apache::Constants qw(:common);
-use Apache::lonnet();
+use Apache::lonnet;
use Apache::loncommon();
-use Apache::lonhtmlcommon();
+use Apache::lonhtmlcommon();
use Apache::lonmsg;
use Apache::lonpublisher;
use Apache::lonlocal;
@@ -288,6 +288,36 @@ sub fieldnames {
return &Apache::lonlocal::texthash(%fields);
}
+sub select_course {
+ my ($r)=@_;
+ $r->print('
Instructor Selected Meta-Data ');
+ $r->print('
+ENDCLEAR
my %brokenurls =
&Apache::lonmsg::all_url_author_res_msg($author,$domain);
foreach (sort(keys(%brokenurls))) {
@@ -632,7 +680,7 @@ sub present_uneditable_metadata {
# obsolete
my $obsolete=$content{'obsolete'};
my $obsoletewarning='';
- if (($obsolete) && ($ENV{'user.adv'})) {
+ if (($obsolete) && ($env{'user.adv'})) {
$obsoletewarning=''.
&mt('This resource has been marked obsolete by the author(s)').
'
';
@@ -681,7 +729,7 @@ $versiondisplay
$table
ENDHEAD
- if ($ENV{'user.adv'}) {
+ if ($env{'user.adv'}) {
&print_dynamic_metadata($r,$uri,\%content);
}
return;
@@ -822,8 +870,8 @@ sub print_dynamic_metadata {
$r->print(''.&mt('No Evaluation Data is available for this resource.').' ');
}
$uri=~/^\/res\/(\w+)\/(\w+)\//;
- if ((($ENV{'user.domain'} eq $1) && ($ENV{'user.name'} eq $2))
- || ($ENV{'user.role.ca./'.$1.'/'.$2})) {
+ if ((($env{'user.domain'} eq $1) && ($env{'user.name'} eq $2))
+ || ($env{'user.role.ca./'.$1.'/'.$2})) {
if (exists($dynmeta{'comments'})) {
$r->print(''.&mt('Evaluation Comments').' ('.
&mt('visible to author and co-authors only').
@@ -873,6 +921,81 @@ sub print_dynamic_metadata {
$r->print("");
return;
}
+sub save_instructor_metadata {
+ my ($r) = @_;
+ 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 ');
+ 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.' ');
+ }
+ my $tag = 'keywords';
+ $file_content.= "\n\<$tag";
+ $file_content.= '>'.
+ &HTML::Entities::encode
+ (join(', ',@words),
+ '<>&"').
+ '';
+ $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').'
');
+ } else {
+ $r->print(''.&mt('Wrote Metadata').
+ ' '.&Apache::lonlocal::locallocaltime(time).
+ '
');
+ }
+ return 'ok';
+}
+sub present_instructor_metadata {
+ my ($r,$uri, $file_type) = @_;
+ $r->print('This is the instructor metadata area ');
+ my @keywords = sort(split /, /,$env{$env{'form.metacourse'}.'.metadata.keywords'});
+ $r->print($env{'form.metacourse'}.' ');
+ $r->print('');
+ $r->print('');
+ foreach my $word (@keywords) {
+ $r->print(''.$word.' ');
+ }
+ $r->print(' ');
+ $r->print(' ');
+ $r->print(' ');
+ return 'ok';
+}
+
#####################################################
#####################################################
@@ -890,24 +1013,45 @@ sub present_editable_metadata {
$disuri=~s/^\/\~/\/priv\//;
$disuri=~s/\.meta$//;
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$/) {
@@ -919,7 +1063,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 '.$fn);
+ } else {
+ &Apache::lonpublisher::metaeval($result);
+ }
$r->print(<$displayfile
@@ -941,9 +1090,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'}=
@@ -954,37 +1103,60 @@ ENDEDIT
$Apache::lonpublisher::metadatafields{$_},
'new_'.$_,'defaultmeta').'');
}
- if ($ENV{'form.store'}) {
+ 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 (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').'
');
+ } else {
+ $r->print(''.&mt('Wrote Metadata').
+ ' '.&Apache::lonlocal::locallocaltime(time).
+ '
');
+ }
} else {
- foreach (sort keys %Apache::lonpublisher::metadatafields) {
- next 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=
- $Apache::lonpublisher::metadatafields{$unikey.'.'.$_};
- $value=~s/\"/\'\'/g;
- print $mfh ' '.$_.'="'.$value.'"';
- }
- print $mfh '>'.
- &HTML::Entities::encode
- ($Apache::lonpublisher::metadatafields{$unikey},
- '<>&"').
- ''.$tag.'>';
+ if (! ($mfh=Apache::File->new('>'.$fn))) {
+ $r->print(''.
+ &mt('Could not write metadata').', '.
+ &mt('FAIL').'
');
+ } else {
+ print $mfh $file_content;
+ $r->print(''.&mt('Wrote Metadata').
+ ' '.&Apache::lonlocal::locallocaltime(time).
+ '
');
}
- $r->print(''.&mt('Wrote Metadata').
- ' '.&Apache::lonlocal::locallocaltime(time).
- '
');
}
}
$r->print($output.'