version 1.50, 2015/03/26 14:16:11
|
version 1.53, 2016/04/04 01:09:48
|
Line 523 sub build_queue_display {
|
Line 523 sub build_queue_display {
|
unofficial => 'Unofficial course', |
unofficial => 'Unofficial course', |
community => 'Community', |
community => 'Community', |
textbook => 'Textbook course', |
textbook => 'Textbook course', |
|
placement => 'Placement test', |
); |
); |
$output .= '<th>'.&mt('Type').'</th>'. |
$output .= '<th>'.&mt('Type').'</th>'. |
'<th>'.&mt('Date requested').'</th>'. |
'<th>'.&mt('Date requested').'</th>'. |
Line 1603 sub course_creation {
|
Line 1604 sub course_creation {
|
$keysmsg,$domdefs,$longroles,$coderef,$customhash) = @_; |
$keysmsg,$domdefs,$longroles,$coderef,$customhash) = @_; |
unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') && |
unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') && |
(ref($longroles) eq 'HASH')) { |
(ref($longroles) eq 'HASH')) { |
return 'error: Invalid request'; |
return ('error: Invalid request'); |
} |
} |
my ($result,$ownername,$ownerdom); |
my ($result,$ownername,$ownerdom); |
my $crstype = $details->{'crstype'}; |
my $crstype = $details->{'crstype'}; |
Line 1674 sub build_batchcreatehash {
|
Line 1675 sub build_batchcreatehash {
|
$batchhash{'authparam'} = $domdefs->{'auth_arg_def'}; |
$batchhash{'authparam'} = $domdefs->{'auth_arg_def'}; |
if ($details->{'crstype'} eq 'community') { |
if ($details->{'crstype'} eq 'community') { |
$batchhash{'crstype'} = 'Community'; |
$batchhash{'crstype'} = 'Community'; |
|
} elsif ($details->{'crstype'} eq 'placement') { |
|
$batchhash{'crstype'} = 'Placement'; |
} else { |
} else { |
if ($details->{'crstype'} eq 'textbook') { |
if ($details->{'crstype'} eq 'textbook') { |
if ($details->{'clonecrs'} && $details->{'clonedom'}) { |
if ($details->{'clonecrs'} && $details->{'clonedom'}) { |
Line 1724 sub build_batchcreatehash {
|
Line 1727 sub build_batchcreatehash {
|
} |
} |
|
|
sub can_clone_course { |
sub can_clone_course { |
my ($uname,$udom,$clonecrs,$clonedom,$crstype) = @_; |
my ($uname,$udom,$clonecrs,$clonedom,$crstype,$dom,$instcode) = @_; |
my $canclone; |
my $canclone; |
my $ccrole = 'cc'; |
my $ccrole = 'cc'; |
if ($crstype eq 'community') { |
if ($crstype eq 'community') { |
Line 1735 sub can_clone_course {
|
Line 1738 sub can_clone_course {
|
if (exists($roleshash{$clonecrs.':'.$clonedom.':'.$ccrole})) { |
if (exists($roleshash{$clonecrs.':'.$clonedom.':'.$ccrole})) { |
$canclone = 1; |
$canclone = 1; |
} else { |
} else { |
my %courseenv = &Apache::lonnet::userenvironment($clonedom,$clonecrs,('cloners')); |
my %courseenv = &Apache::lonnet::userenvironment($clonedom,$clonecrs, |
|
('cloners','internal.coursecode')); |
my $cloners = $courseenv{'cloners'}; |
my $cloners = $courseenv{'cloners'}; |
|
my $clonefromcode = $courseenv{'internal.coursecode'}; |
if ($cloners ne '') { |
if ($cloners ne '') { |
my @cloneable = split(',',$cloners); |
my @cloneable = split(',',$cloners); |
if (grep(/^\*$/,@cloneable)) { |
if (grep(/^\*$/,@cloneable)) { |
$canclone = 1; |
$canclone = 1; |
} |
} elsif (grep(/^\*:\Q$udom\E$/,@cloneable)) { |
if (grep(/^\*:\Q$udom\E$/,@cloneable)) { |
|
$canclone = 1; |
$canclone = 1; |
} |
} elsif (grep(/^\Q$uname\E:\Q$udom\E$/,@cloneable)) { |
if (grep(/^\Q$uname\E:\Q$udom\E$/,@cloneable)) { |
|
$canclone = 1; |
$canclone = 1; |
} |
} |
|
unless ($canclone) { |
|
if (($clonefromcode) && ($instcode) && ($clonedom eq $dom)) { |
|
my (%gotdomdefaults,%gotcodedefaults); |
|
foreach my $cloner (@cloneable) { |
|
if (($cloner ne '*') && ($cloner !~ /^\*\:$match_domain$/) && |
|
($cloner !~ /^$match_username\:$match_domain$/) && ($cloner ne '')) { |
|
if ($cloner =~ /\=/) { |
|
my (%codedefaults,@code_order); |
|
if (ref($gotcodedefaults{$clonedom}) eq 'HASH') { |
|
if (ref($gotcodedefaults{$clonedom}{'defaults'}) eq 'HASH') { |
|
%codedefaults = %{$gotcodedefaults{$clonedom}{'defaults'}}; |
|
} |
|
if (ref($gotcodedefaults{$clonedom}{'order'}) eq 'ARRAY') { |
|
@code_order = @{$gotcodedefaults{$dom}{'order'}}; |
|
} |
|
} else { |
|
&Apache::lonnet::auto_instcode_defaults($clonedom, |
|
\%codedefaults, |
|
\@code_order); |
|
$gotcodedefaults{$clonedom}{'defaults'} = \%codedefaults; |
|
$gotcodedefaults{$clonedom}{'order'} = \@code_order; |
|
} |
|
if (@code_order > 0) { |
|
if (&Apache::lonnet::check_instcode_cloning(\%codedefaults,\@code_order, |
|
$cloner,$clonefromcode,$instcode)) { |
|
$canclone = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($clonedom); |
|
if ($domdefs{'canclone'}) { |
|
unless ($domdefs{'canclone'} eq 'none') { |
|
if ($domdefs{'canclone'} eq 'domain') { |
|
if ($udom eq $clonedom) { |
|
$canclone = 1; |
|
} |
|
} elsif (($clonefromcode) && ($instcode) && |
|
($clonedom eq $dom)) { |
|
if (&Apache::lonnet::default_instcode_cloning($clonedom,$domdefs{'canclone'}, |
|
$clonefromcode,$instcode)) { |
|
$canclone = 1; |
|
} |
|
} |
|
} |
|
} |
} |
} |
unless ($canclone) { |
unless ($canclone) { |
if (&Apache::lonnet::is_course_owner($clonedom,$clonecrs,$uname,$udom)) { |
if (&Apache::lonnet::is_course_owner($clonedom,$clonecrs,$uname,$udom)) { |