--- 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');