--- loncom/interface/lonmeta.pm 2023/03/28 23:17:18 1.255 +++ loncom/interface/lonmeta.pm 2023/11/07 21:31:11 1.257 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.255 2023/03/28 23:17:18 raeburn Exp $ +# $Id: lonmeta.pm,v 1.257 2023/11/07 21:31:11 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -790,9 +790,18 @@ sub handler { &Apache::lonhtmlcommon::clear_breadcrumbs(); if ($env{'request.state'} eq 'construct') { + my $text = 'Authoring Space'; + my $href = &Apache::loncommon::authorspace($uri); + if ($env{'request.course.id'}) { + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + if ($href eq "/priv/$cdom/$cnum/") { + $text = 'Course Authoring Space'; + } + } &Apache::lonhtmlcommon::add_breadcrumb({ - 'text' => 'Authoring Space', - 'href' => &Apache::loncommon::authorspace($uri), + 'text' => $text, + 'href' => $href, }); } @@ -1500,9 +1509,48 @@ ENDEDIT $Apache::lonpublisher::metadatafields{'copyright'}='custom'; $Apache::lonpublisher::metadatafields{'customdistributionfile'}=$crsaurights; } + my (%domdefs,$got_domdefs); if (! $Apache::lonpublisher::metadatafields{'copyright'}) { - $Apache::lonpublisher::metadatafields{'copyright'}= - 'default'; + my $copyright = 'default'; + if ($env{'environment.copyright'} ne '') { + $copyright = $env{'environment.copyright'}; + } else { + my $defdom = $env{'request.role.domain'}; + if ($disuri =~ m{^/priv/($match_domain)/}) { + $defdom = $1; + } + if ($defdom ne '') { + %domdefs = &Apache::lonnet::get_domain_defaults($defdom); + $got_domdefs = 1; + if ($domdefs{'copyright'} ne '') { + $copyright = $domdefs{'copyright'}; + } + } + } + $Apache::lonpublisher::metadatafields{'copyright'}= + $copyright; + } + if (! $Apache::lonpublisher::metadatafields{'sourceavail'}) { + my $sourceavail = 'closed'; + if ($env{'environment.sourceavail'} ne '') { + $sourceavail = $env{'environment.sourceavail'}; + } else { + my $defdom = $env{'request.role.domain'}; + if ($disuri =~ m{^/priv/($match_domain)/}) { + $defdom = $1; + } + if ($defdom ne '') { + unless ($got_domdefs) { + %domdefs = &Apache::lonnet::get_domain_defaults($defdom); + $got_domdefs = 1; + } + if ($domdefs{'sourceavail'} ne '') { + $sourceavail = $domdefs{'sourceavail'}; + } + } + } + $Apache::lonpublisher::metadatafields{'sourceavail'}= + $sourceavail; } if (($file_type eq 'portfolio') || ($file_type eq 'groups')) { if (! $Apache::lonpublisher::metadatafields{'mime'}) { @@ -1633,6 +1681,17 @@ sub store_metadata { $Apache::lonpublisher::metadatafields{'keywords'} = join (',', &Apache::loncommon::get_env_multiple('form.new_keywords')); } + if (($caller eq 'store') && ($env{'request.course.id'})) { + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + if ($uri =~ m{^\Q/priv/$cdom/$cnum/\E}) { + unless ($uri eq "/priv/$cdom/$cnum/default.rights.meta") { + $Apache::lonpublisher::metadatafields{'copyright'} = 'custom'; + $Apache::lonpublisher::metadatafields{'customdistributionfile'} = + "/res/$cdom/$cnum/default.rights"; + } + } + } foreach my $field (sort(keys(%Apache::lonpublisher::metadatafields))) { next if ($field =~ /\./); my $unikey=$field;