--- loncom/publisher/lonpublisher.pm 2022/09/09 19:20:55 1.300 +++ loncom/publisher/lonpublisher.pm 2023/03/28 23:17:16 1.301 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Publication Handler # -# $Id: lonpublisher.pm,v 1.300 2022/09/09 19:20:55 raeburn Exp $ +# $Id: lonpublisher.pm,v 1.301 2023/03/28 23:17:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -329,7 +329,7 @@ string which presents the form field (fo ######################################### ######################################### sub textfield { - my ($title,$name,$value,$noline)=@_; + my ($title,$name,$value,$noline,$readonly)=@_; $value=~s/^\s+//gs; $value=~s/\s+$//gs; $value=~s/\s+/ /gs; @@ -341,22 +341,31 @@ sub textfield { } sub text_with_browse_field { - my ($title,$name,$value,$restriction,$noline)=@_; + my ($title,$name,$value,$restriction,$noline,$readonly)=@_; $value=~s/^\s+//gs; $value=~s/\s+$//gs; $value=~s/\s+/ /gs; $title=&mt($title); $env{'form.'.$name}=$value; - return "\n".&Apache::lonhtmlcommon::row_title($title) - .'' - .'
' + my $disabled; + if ($readonly) { + $disabled = ' disabled="disabled"'; + } + my $output = + "\n".&Apache::lonhtmlcommon::row_title($title) + .''; + unless ($readonly) { + $output .= + '
' .'' .&mt('Select') .' ' .'' .&mt('Search') - .'' - .&Apache::lonhtmlcommon::row_closure($noline); + .''; + } + $output .= &Apache::lonhtmlcommon::row_closure($noline); + return $output; } sub hiddenfield { @@ -372,7 +381,7 @@ sub checkbox { } sub selectbox { - my ($title,$name,$value,$functionref,@idlist)=@_; + my ($title,$name,$value,$readonly,$functionref,@idlist)=@_; $title=&mt($title); $value=(split(/\s*,\s*/,$value))[-1]; if (defined($value)) { @@ -387,6 +396,9 @@ sub selectbox { if ($id eq $value) { $selout.=' selected="selected"'; } + if ($readonly) { + $selout .= ' disabled="disabled"'; + } $selout.='>'.&{$functionref}($id).''; } $selout.=''.&Apache::lonhtmlcommon::row_closure(); @@ -1199,6 +1211,20 @@ sub publish { $content=$outstring; } + +# ----------------------------------------------------- Course Authoring Space. + my ($courseauthor,$crsaurights,$readonly); + if ($env{'request.course.id'}) { + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $docroot = $Apache::lonnet::perlvar{'lonDocRoot'}; + if ($source =~ m{^\Q$docroot/priv/$cdom/$cnum/\E}) { + $courseauthor = $cnum.':'.$cdom; + $crsaurights = "/res/$cdom/$cnum/default.rights"; + $readonly = 1; + } + } + # -------------------------------------------- Initial step done, now metadata. # --------------------------------------- Storage for metadata keys and fields. @@ -1485,7 +1511,7 @@ END $defaultlanguage =~ s/,\s*$//g; $intr_scrout.=&selectbox('Language','language', - $defaultlanguage, + $defaultlanguage,'', \&Apache::loncommon::languagedescription, (&Apache::loncommon::languageids), ); @@ -1502,8 +1528,11 @@ END if ($style eq 'prv') { $pubowner_last = 1; } + if ($courseauthor) { + $metadatafields{'owner'} = $courseauthor; + } $intr_scrout.=&textfield('Publisher/Owner','owner', - $metadatafields{'owner'},$pubowner_last); + $metadatafields{'owner'},$pubowner_last,$readonly); # ---------------------------------------------- Retrofix for unused copyright if ($metadatafields{'copyright'} eq 'free') { @@ -1516,6 +1545,10 @@ END # ------------------------------------------------ Dial in reasonable defaults my $defaultoption=$metadatafields{'copyright'}; unless ($defaultoption) { $defaultoption='default'; } + if ($courseauthor) { + $defaultoption='custom'; + $metadatafields{'customdistributionfile'}=$crsaurights; + } my $defaultsourceoption=$metadatafields{'sourceavail'}; unless ($defaultsourceoption) { $defaultsourceoption='closed'; } unless ($style eq 'prv') { @@ -1527,12 +1560,12 @@ END $defaultoption='default'; } $intr_scrout.=&selectbox('Copyright/Distribution','copyright', - $defaultoption, + $defaultoption,$readonly, \&Apache::loncommon::copyrightdescription, (grep !/^(public|priv)$/,(&Apache::loncommon::copyrightids))); } else { $intr_scrout.=&selectbox('Copyright/Distribution','copyright', - $defaultoption, + $defaultoption,$readonly, \&Apache::loncommon::copyrightdescription, (grep !/^priv$/,(&Apache::loncommon::copyrightids))); } @@ -1541,9 +1574,9 @@ END my $replace=&mt('Copyright/Distribution:'); $intr_scrout =~ s/$replace/$replace.' '.$copyright_help/ge; - $intr_scrout.=&text_with_browse_field('Custom Distribution File','customdistributionfile',$metadatafields{'customdistributionfile'},'rights'); + $intr_scrout.=&text_with_browse_field('Custom Distribution File','customdistributionfile',$metadatafields{'customdistributionfile'},'rights','',$readonly); $intr_scrout.=&selectbox('Source Distribution','sourceavail', - $defaultsourceoption, + $defaultsourceoption,'', \&Apache::loncommon::source_copyrightdescription, (&Apache::loncommon::source_copyrightids)); # $intr_scrout.=&text_with_browse_field('Source Custom Distribution File','sourcerights',$metadatafields{'sourcerights'},'rights');