--- loncom/interface/lonrequestcourse.pm 2020/02/12 22:16:25 1.95.2.5
+++ loncom/interface/lonrequestcourse.pm 2020/07/20 11:30:21 1.95.2.5.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Request a course
#
-# $Id: lonrequestcourse.pm,v 1.95.2.5 2020/02/12 22:16:25 raeburn Exp $
+# $Id: lonrequestcourse.pm,v 1.95.2.5.2.1 2020/07/20 11:30:21 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -559,6 +559,7 @@ sub form_elements {
clonedom => 'selectbox',
datemode => 'radio',
dateshift => 'text',
+ tinyurls => 'radio',
},
enrollment => {
accessstart_month => 'selectbox',
@@ -2925,7 +2926,7 @@ sub print_review {
$inst_values .= '
'.$env{'form.coursecredits'}.' | ';
}
- my %ctxt = &clone_text();
+ my %ctxt = &clone_text($env{'form.crstype'});
$inst_headers .= ''.&mt('Clone From').' | ';
if (($env{'form.cloning'}) &&
($env{'form.clonecrs'} =~ /^$match_name$/) &&
@@ -2937,7 +2938,8 @@ sub print_review {
my %courseenv = &Apache::lonnet::userenvironment($env{'form.clonedom'},
$env{'form.clonecrs'},('description','internal.coursecode'));
if (keys(%courseenv) > 0) {
- $inst_headers .= ''.$ctxt{'dsh'}.' | ';
+ $inst_headers .= ''.$ctxt{'dsh'}.' | '.
+ ''.$ctxt{'dpl'}.' | ';
$inst_values .= ''.$courseenv{'description'}.' ';
my $cloneinst = $courseenv{'internal.coursecode'};
if ($cloneinst ne '') {
@@ -2953,6 +2955,14 @@ sub print_review {
} else {
$inst_values .= $ctxt{'ncd'};
}
+ $inst_values .= ' | ';
+ if ($env{'form.tinyurls'} eq 'delete') {
+ $inst_values .= $ctxt{'nsl'};
+ } elsif ($env{'form.tinyurls'} eq 'transfer') {
+ $inst_values .= $ctxt{'tsl'};
+ } else {
+ $inst_values .= $ctxt{'csl'};
+ }
$inst_values .= ' | ';
} else {
$inst_values .= ''.&mt('Unknown').' | ';
@@ -3181,7 +3191,7 @@ sub clone_form {
if ($crstype eq 'community') {
$type = 'Community';
}
- my %lt = &clone_text();
+ my %lt = &clone_text($crstype);
my $output .=
&Apache::lonhtmlcommon::row_title($lt{'dmn'}).''.
@@ -3199,19 +3209,37 @@ sub clone_form {
' '.
$lt{'shd'}.''.
''.
+ &Apache::lonhtmlcommon::row_closure(1).
+ &Apache::lonhtmlcommon::row_title($lt{'dpl'}).'
'.
&Apache::lonhtmlcommon::row_closure(1);
return $output;
}
sub clone_text {
- return &Apache::lonlocal::texthash(
+ my ($crstype) = @_;
+ my %lt = &Apache::lonlocal::texthash(
'cid' => 'Course ID',
'dmn' => 'Domain',
'dsh' => 'Date Shift',
'ncd' => 'Do not clone date parameters',
'prd' => 'Clone date parameters as-is',
'shd' => 'Shift date parameters by number of days',
- );
+ 'dpl' => 'URL shortcuts (for deep linking)',
+ 'nsl' => 'Do not clone URL shortcuts',
+ 'tsl' => 'Transfer URL shortcuts from existing course to new course',
+ 'csl' => 'Create new URL shortcuts in new course',
+ );
+ if ($crstype eq 'Community') {
+ $lt{'tsl'} = &mt('Transfer URL shortcuts from existing course to new community');
+ $lt{'csl'} = &mt('Create new URL shortcuts in new course');
+ }
+ return %lt;
}
sub coursecode_form {
@@ -3653,6 +3681,7 @@ sub print_request_outcome {
clonecrs => $clonecrs,
datemode => $env{'form.datemode'},
dateshift => $env{'form.dateshift'},
+ tinyurls => $env{'form.tinyurls'},
sectotal => $sectotal,
sections => \%sections,
crosslisttotal => $crosslisttotal,
@@ -3784,7 +3813,9 @@ sub process_request {
$storeresult = 'rejected';
} elsif ($disposition eq 'process') {
my %domdefs = &Apache::lonnet::get_domain_defaults($dom);
- my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,%longroles,$code);
+ my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,
+ $keysmsg,%longroles,$code);
+ my $clonemsg = [];
my $type = 'Course';
if ($crstype eq 'community') {
$type = 'Community';
@@ -3817,9 +3848,9 @@ sub process_request {
$customitems{'_LC_coursestartdate'} = $accessstart;
$customitems{'_LC_courseenddate'} = $accessend;
my ($result,$postprocess) = &Apache::loncoursequeueadmin::course_creation($dom,$cnum,
- 'autocreate',$details,\$logmsg,\$newusermsg,\$addresult,
- \$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles,
- \$code,\%customitems);
+ 'autocreate',$details,\$logmsg,$clonemsg,\$newusermsg,
+ \$addresult,\$enrollcount,\$response,\$keysmsg,\%domdefs,
+ \%longroles,\$code,\%customitems);
if (ref($postprocess) eq 'HASH') {
$customized = $postprocess->{'createdcustomized'};
}
@@ -3853,6 +3884,20 @@ sub process_request {
$output .= '
'.$role_result;
}
$output .= '';
+ if ($logmsg) {
+ $output .= ''.$logmsg.'
';
+ }
+ if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) {
+ $output .= '';
+ my $user_lh = &Apache::loncommon::user_lang($env{'user.name'},$env{'user.domain'});
+ foreach my $item (@{$clonemsg}) {
+ if (ref($item) eq 'HASH') {
+ $output .= &mt_user($user_lh,$item->{mt},
+ @{$item->{args}}).'
'."\n";
+ }
+ }
+ $output .= '
'."\n";
+ }
$creationresult = 'created';
# Flush the course logs so reverse user roles immediately updated
unless ($registered_flush) {
@@ -4410,6 +4455,7 @@ sub retrieve_settings {
}
$env{'form.datemode'} = $reqinfo{'datemode'};
$env{'form.dateshift'} = $reqinfo{'dateshift'};
+ $env{'form.tinyurls'} = $reqinfo{'tinyurls'};
if ($reqinfo{'crstype'} eq 'official') {
$env{'form.autoadds'} = $reqinfo{'autoadds'};
$env{'form.autodrops'} = $reqinfo{'autodrops'};
@@ -4812,17 +4858,26 @@ sub print_textbook_form {
#
# Table of user's current courses (owner and/or course coordinator)
#
- my %lt = &clone_text();
+ my %lt = &clone_text('Course');
if (keys(%cloneable)) {
$r->print('');
}
#
@@ -4831,13 +4886,20 @@ sub print_textbook_form {
if (keys(%domcloneable)) {
$r->print('');
}
@@ -5068,6 +5130,7 @@ sub process_textbook_request {
} else {
$details->{dateshift} = '';
}
+ $details->{tinyurls} = $env{'form.owntinyurls'};
} elsif ($reqtype eq 'colleague') {
$details->{datemode} = $env{'form.colldatemode'};
if ($details->{datemode} eq 'shift') {
@@ -5075,9 +5138,11 @@ sub process_textbook_request {
} else {
$details->{dateshift} = '';
}
+ $details->{tinyurls} = $env{'form.colltinyurls'};
} elsif (($reqtype eq 'textbook') || ($reqtype eq 'template')) {
$details->{datemode} = 'delete';
$details->{dateshift} = '';
+ $details->{tinyurls} = '';
}
if ($details->{dateshift} ne '') {
$details->{dateshift} =~ s/[^\d\.]+//g;
@@ -5085,6 +5150,7 @@ sub process_textbook_request {
} else {
$details->{datemode} = '';
$details->{dateshift} = '';
+ $details->{tinyurls} = '';
}
my $lonhost = $r->dir_config('lonHostID');
$r->rflush();