version 1.95.2.8, 2024/07/03 22:34:22
|
version 1.108, 2020/02/12 22:15:40
|
Line 163 sub handler {
|
Line 163 sub handler {
|
} |
} |
|
|
if ($canreq) { |
if ($canreq) { |
|
if (($env{'form.crstype'} eq 'lti') && ($env{'request.lti.login'}) && |
|
($env{'form.lti.reqrole'} eq 'cc') && ($env{'form.lti.reqcrs'}) && |
|
($env{'form.lti.sourcecrs'} ne '')) { |
|
if ($action eq 'process') { |
|
if ($can_request{'lti'}) { |
|
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom); |
|
&process_textbook_request($r,$dom,$action,\%domdefs,\%domconfig,\%can_request,'lti'); |
|
} else { |
|
$r->print(&header('Course Request','','','',{ 'only_body' => 1}). |
|
'<div>'. |
|
'<p class="LC_info">'.&mt('You do not have privileges to request creation of LTI courses.').'</p>'. |
|
'</div>'. |
|
&Apache::loncommon::end_page()); |
|
} |
|
} |
|
return OK; |
|
} |
if (($env{'form.crstype'} eq 'textbook') || |
if (($env{'form.crstype'} eq 'textbook') || |
(scalar(keys(%can_request)) == 1) && ($can_request{'textbook'})) { |
(scalar(keys(%can_request)) == 1) && ($can_request{'textbook'})) { |
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom); |
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom); |
Line 200 sub handler {
|
Line 217 sub handler {
|
} |
} |
} else { |
} else { |
if ($can_request{'textbook'}) { |
if ($can_request{'textbook'}) { |
&print_textbook_form($r,$dom,\@incdoms,\%domdefs,$domconfig{'requestcourses'},\%can_request); |
&print_textbook_form($r,$dom,\@incdoms,\%domdefs,$domconfig{'requestcourses'}, |
|
\%can_request,'textbook'); |
} else { |
} else { |
&textbook_request_disabled($r,$dom,$action,\%can_request); |
&textbook_request_disabled($r,$dom,$action,\%can_request); |
} |
} |
Line 319 sub handler {
|
Line 337 sub handler {
|
$jscript = &Apache::lonhtmlcommon::set_form_elements($elementsref,\%stored); |
$jscript = &Apache::lonhtmlcommon::set_form_elements($elementsref,\%stored); |
if ($state eq 'courseinfo') { |
if ($state eq 'courseinfo') { |
$jscript .= &cloning_javascript(); |
$jscript .= &cloning_javascript(); |
|
} elsif ($state eq 'process') { |
|
$jscript .= &processing_javascript(); |
} |
} |
} |
} |
} |
} |
Line 430 function setCloneDisplay(courseForm) {
|
Line 450 function setCloneDisplay(courseForm) {
|
END |
END |
} |
} |
|
|
|
sub processing_javascript { |
|
return <<"END"; |
|
function hideProcessing() { |
|
if (document.getElementById('processing')) { |
|
document.getElementById('processing').style.display="none"; |
|
} |
|
} |
|
|
|
END |
|
} |
|
|
sub get_breadcrumbs { |
sub get_breadcrumbs { |
my ($dom,$action,$state,$states,$trail) = @_; |
my ($dom,$action,$state,$states,$trail) = @_; |
my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles,$description); |
my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles,$description); |
Line 707 sub onload_action {
|
Line 738 sub onload_action {
|
if ($state eq 'courseinfo') { |
if ($state eq 'courseinfo') { |
$loaditems{'onload'} .= 'javascript:setCloneDisplay(document.requestcrs);'; |
$loaditems{'onload'} .= 'javascript:setCloneDisplay(document.requestcrs);'; |
} |
} |
|
if ($state eq 'process') { |
|
$loaditems{'onload'} .= 'javascript:hideProcessing();'; |
|
} |
} |
} |
return \%loaditems; |
return \%loaditems; |
} |
} |
Line 752 function check_can_request(crschoice,act
|
Line 786 function check_can_request(crschoice,act
|
var unofficial = ''; |
var unofficial = ''; |
var community = ''; |
var community = ''; |
var textbook = ''; |
var textbook = ''; |
|
var placement = ''; |
END |
END |
if (ref($can_request) eq 'HASH') { |
if (ref($can_request) eq 'HASH') { |
foreach my $item (keys(%{$can_request})) { |
foreach my $item (keys(%{$can_request})) { |
Line 765 END
|
Line 800 END
|
unofficial => 'You are not permitted to request creation of an unofficial course in this domain.', |
unofficial => 'You are not permitted to request creation of an unofficial course in this domain.', |
community => 'You are not permitted to request creation of a community in this domain.', |
community => 'You are not permitted to request creation of a community in this domain.', |
textbook => 'You are not permitted to request creation of a textbook course in this domain', |
textbook => 'You are not permitted to request creation of a textbook course in this domain', |
|
placement => 'You are not permitted to request creation of a placement test in this domain', |
all => 'You must choose a specific course type when making a new course request.', |
all => 'You must choose a specific course type when making a new course request.', |
allt => '"All types" is not allowed.', |
allt => '"All types" is not allowed.', |
); |
); |
Line 794 END
|
Line 830 END
|
return false; |
return false; |
} |
} |
} else { |
} else { |
if (actionchoice == 'new') { |
if (crschoice == 'placement') { |
alert('$js_lt{'all'}'+'\\n'+'$js_lt{'allt'}'); |
if (placement != 1) { |
return false; |
alert("$js_lt{'placement'}"); |
|
return false; |
|
} |
|
} else { |
|
if (actionchoice == 'new') { |
|
alert('$js_lt{'all'}'+'\\n'+'$js_lt{'allt'}'); |
|
return false; |
|
} |
} |
} |
} |
} |
} |
} |
Line 807 END
|
Line 850 END
|
END |
END |
my ($pagetitle,$pageinfo,$domaintitle,$earlyout); |
my ($pagetitle,$pageinfo,$domaintitle,$earlyout); |
if (ref($can_request) eq 'HASH') { |
if (ref($can_request) eq 'HASH') { |
if (($can_request->{'official'}) || ($can_request->{'unofficial'}) || $can_request->{'textbook'}) { |
if (($can_request->{'official'}) || ($can_request->{'unofficial'}) || ($can_request->{'textbook'}) || ($can_request->{'placement'})) { |
if ($can_request->{'community'}) { |
if ($can_request->{'community'}) { |
$pagetitle = 'Course/Community Requests'; |
$pagetitle = 'Course/Community Requests'; |
$pageinfo = &mt('Request creation of a new course or community, or review your pending requests.'); |
$pageinfo = &mt('Request creation of a new course or community, or review your pending requests.'); |
Line 984 END
|
Line 1027 END
|
$title = &mt('Pending requests for unofficial courses'); |
$title = &mt('Pending requests for unofficial courses'); |
} elsif ($env{'form.crstype'} eq 'textbook') { |
} elsif ($env{'form.crstype'} eq 'textbook') { |
$title = &mt('Pending requests for textbook courses'); |
$title = &mt('Pending requests for textbook courses'); |
|
} elsif ($env{'form.crstype'} eq 'textbook') { |
|
$title = &mt('Pending requests for placement tests'); |
} else { |
} else { |
$title = &mt('Pending course/community requests'); |
$title = &mt('Pending course/community requests'); |
} |
} |
Line 2085 sub print_personnel_menu {
|
Line 2130 sub print_personnel_menu {
|
official => 'Requestor is automatically assigned Course Coordinator role.', |
official => 'Requestor is automatically assigned Course Coordinator role.', |
); |
); |
$lt{'unofficial'} = $lt{'official'}; |
$lt{'unofficial'} = $lt{'official'}; |
$lt{'textbook'} = $lt{'textbook'}; |
$lt{'textbook'} = $lt{'official'}; |
|
$lt{'placement'} = $lt{'official'}; |
$output .= &Apache::lonhtmlcommon::row_headline(). |
$output .= &Apache::lonhtmlcommon::row_headline(). |
'<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Personnel').' '.$lt{$crstype}.' '.&mt('Include other personnel?').'</h3>'; |
'<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Personnel').' '.$lt{$crstype}.' '.&mt('Include other personnel?').'</h3>'; |
} |
} |
Line 2101 sub print_personnel_menu {
|
Line 2147 sub print_personnel_menu {
|
} |
} |
} |
} |
} |
} |
for (my $i=0; $i<$persontotal; $i++) { |
my ($trusted,$untrusted) = &Apache::lonnet::trusted_domains('enroll',$dom); |
|
for (my $i=0; $i<$persontotal; $i++) { |
my @linkargs = map { 'person_'.$i.'_'.$_ } (@items); |
my @linkargs = map { 'person_'.$i.'_'.$_ } (@items); |
my $linkargstr = join("','",@linkargs); |
my $linkargstr = join("','",@linkargs); |
my $uname_form = '<input type="text" name="person_'.$i.'_uname" value="" size="20" />'; |
my $uname_form = '<input type="text" name="person_'.$i.'_uname" value="" size="20" />'; |
my $onchange = 'javascript:fix_domain('."'$formname','person_".$i."_dom',". |
my $onchange = 'javascript:fix_domain('."'$formname','person_".$i."_dom',". |
"'person_".$i."_hidedom','person_".$i."_uname'".');'; |
"'person_".$i."_hidedom','person_".$i."_uname'".');'; |
my $udom_form = &Apache::loncommon::select_dom_form($dom,'person_'.$i.'_dom','', |
my $udom_form = &Apache::loncommon::select_dom_form($dom,'person_'.$i.'_dom','', |
1,$onchange). |
1,$onchange,undef,$trusted,$untrusted). |
'<input type="hidden" name="person_'.$i.'_hidedom" value="" />'; |
'<input type="hidden" name="person_'.$i.'_hidedom" value="" />'; |
my %form_elems; |
my %form_elems; |
foreach my $item (@items) { |
foreach my $item (@items) { |
Line 2379 sub print_cancel_request {
|
Line 2426 sub print_cancel_request {
|
&Apache::loncommon::start_data_table_row(). |
&Apache::loncommon::start_data_table_row(). |
'<td>'.$history{details}{'cdescr'}.'</td><td>'. |
'<td>'.$history{details}{'cdescr'}.'</td><td>'. |
&Apache::lonlocal::locallocaltime($timestamp).'</td>'. |
&Apache::lonlocal::locallocaltime($timestamp).'</td>'. |
'<td>'.&mt($showtype).'</td>'. |
'<td>'.$showtype.'</td>'. |
&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table(). |
&Apache::loncommon::end_data_table(). |
'<br /><div class="LC_warning">'; |
'<br /><div class="LC_warning">'; |
Line 2513 sub print_request_logs {
|
Line 2560 sub print_request_logs {
|
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') { |
if ($curr{'crstype'} eq 'any') { |
if ($curr{'crstype'} eq 'any') { |
my @types = qw(official unofficial community textbook); |
my @types = qw(official unofficial community textbook placement); |
foreach my $type (@types) { |
foreach my $type (@types) { |
if ($domconfig{'requestcourses'}{'uniquecode'}{$type}) { |
if ($domconfig{'requestcourses'}{'uniquecode'}{$type}) { |
$showuniquecode = 1; |
$showuniquecode = 1; |
Line 2681 sub reqstatus_names {
|
Line 2728 sub reqstatus_names {
|
rejected => 'Request rejected', |
rejected => 'Request rejected', |
cancelled => 'Request cancelled', |
cancelled => 'Request cancelled', |
); |
); |
if (($crstype eq 'official') || ($crstype eq 'unofficial') || ($crstype eq 'textbook')) { |
if (($crstype eq 'official') || ($crstype eq 'unofficial') || ($crstype eq 'textbook') || ($crstype eq 'placement')) { |
$statusnames{'created'} = &mt('Course created'); |
$statusnames{'created'} = &mt('Course created'); |
} elsif ($crstype eq 'community') { |
} elsif ($crstype eq 'community') { |
$statusnames{'created'} = &mt('Community created'); |
$statusnames{'created'} = &mt('Community created'); |
Line 2733 sub requestlog_display_filter {
|
Line 2780 sub requestlog_display_filter {
|
$typename = $typenames->{$crstype}; |
$typename = $typenames->{$crstype}; |
} |
} |
} |
} |
$output .= '<option value="'.$crstype.'"'.$selstr.'>'.&mt($typename).'</option>'."\n"; |
$output .= '<option value="'.$crstype.'"'.$selstr.'>'.$typename.'</option>'."\n"; |
} |
} |
$output .= '</select></td>'; |
$output .= '</select></td>'; |
} |
} |
Line 3085 sub courseinfo_form {
|
Line 3132 sub courseinfo_form {
|
&js_escape(\%js_lt); |
&js_escape(\%js_lt); |
$js_lt{'unofficial'} = $js_lt{'official'}; |
$js_lt{'unofficial'} = $js_lt{'official'}; |
$js_lt{'textbook'} = $js_lt{'official'}; |
$js_lt{'textbook'} = $js_lt{'official'}; |
|
$js_lt{'placement'} = $js_lt{'official'}; |
my $js_validate = <<"ENDJS"; |
my $js_validate = <<"ENDJS"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[' |
// <![CDATA[' |
Line 3164 sub clone_form {
|
Line 3212 sub clone_form {
|
my $type = 'Course'; |
my $type = 'Course'; |
if ($crstype eq 'community') { |
if ($crstype eq 'community') { |
$type = 'Community'; |
$type = 'Community'; |
|
} elsif ($crstype eq 'placement') { |
|
$type = 'Placement'; |
} |
} |
my %lt = &clone_text(); |
my %lt = &clone_text(); |
my $output .= |
my $output .= |
Line 3182 sub clone_form {
|
Line 3232 sub clone_form {
|
'</label><br /><label>'. |
'</label><br /><label>'. |
'<input type="radio" name="datemode" value="shift" checked="checked" /> '. |
'<input type="radio" name="datemode" value="shift" checked="checked" /> '. |
$lt{'shd'}.'</label>'. |
$lt{'shd'}.'</label>'. |
'<input type="text" size="5" name="dateshift" value="364" />'. |
'<input type="text" size="5" name="dateshift" value="365" />'. |
&Apache::lonhtmlcommon::row_closure(1); |
&Apache::lonhtmlcommon::row_closure(1); |
return $output; |
return $output; |
} |
} |
Line 3329 sub get_course_dom {
|
Line 3379 sub get_course_dom {
|
return $env{'user.domain'}; |
return $env{'user.domain'}; |
} |
} |
} |
} |
my @possible_doms; |
my (@possible_doms,%willtrust); |
foreach my $type (@{$types}) { |
foreach my $type (@{$types}) { |
my $dom_str = $env{'environment.reqcrsotherdom.'.$type}; |
my $dom_str = $env{'environment.reqcrsotherdom.'.$type}; |
if ($dom_str ne '') { |
if ($dom_str ne '') { |
my @domains = split(',',$dom_str); |
my @domains = split(',',$dom_str); |
foreach my $entry (@domains) { |
foreach my $entry (@domains) { |
my ($extdom,$extopt) = split(':',$entry); |
my ($extdom,$extopt) = split(':',$entry); |
if ($extdom eq $env{'request.role.domain'}) { |
unless (exists($willtrust{$extdom})) { |
return $extdom; |
$willtrust{$extdom} = &Apache::lonnet::will_trust('reqcrs',$env{'user.domain'},$extdom); |
} |
} |
unless(grep(/^\Q$extdom\E$/,@possible_doms)) { |
if ($willtrust{$extdom}) { |
push(@possible_doms,$extdom); |
if ($extdom eq $env{'request.role.domain'}) { |
|
return $extdom; |
|
} |
|
unless(grep(/^\Q$extdom\E$/,@possible_doms)) { |
|
push(@possible_doms,$extdom); |
|
} |
} |
} |
} |
} |
} |
} |
Line 3622 sub print_request_outcome {
|
Line 3677 sub print_request_outcome {
|
} |
} |
} |
} |
} |
} |
if ($env{'form.chome'} eq 'default') { |
|
my %servers = &Apache::lonnet::get_servers($dom,'library'); |
|
my $numlib = keys(%servers); |
|
if ($numlib) { |
|
my $loadm=10000000; |
|
my $chome; |
|
foreach my $tryserver (keys(%servers)) { |
|
($chome,$loadm) = |
|
&Apache::lonnet::compare_server_load($tryserver,$chome,$loadm); |
|
} |
|
$env{'form.chome'} = $chome; |
|
} |
|
} |
|
my $details = { |
my $details = { |
owner => $env{'user.name'}, |
owner => $env{'user.name'}, |
domain => $env{'user.domain'}, |
domain => $env{'user.domain'}, |
Line 3666 sub print_request_outcome {
|
Line 3708 sub print_request_outcome {
|
$instcode,$req_notifylist,\@instsections,\%domconfig); |
$instcode,$req_notifylist,\@instsections,\%domconfig); |
return ($result,$output,$customized); |
return ($result,$output,$customized); |
} |
} |
|
|
sub process_request { |
sub process_request { |
my ($r,$lonhost,$dom,$cnum,$crstype,$now,$details,$instcode,$req_notifylist,$instsections, |
my ($r,$lonhost,$dom,$cnum,$crstype,$now,$details,$instcode,$req_notifylist,$instsections, |
$domconfig) = @_; |
$domconfig) = @_; |
Line 3684 sub process_request {
|
Line 3726 sub process_request {
|
$output = &mt('You are not permitted to request creation of communities'); |
$output = &mt('You are not permitted to request creation of communities'); |
} elsif ($crstype eq 'textbook') { |
} elsif ($crstype eq 'textbook') { |
$output = &mt('You are not permitted to request creation of textbook courses'); |
$output = &mt('You are not permitted to request creation of textbook courses'); |
|
} elsif ($crstype eq 'placement') { |
|
$output = &mt('You are not permitted to request creation of placement tests'); |
} else { |
} else { |
$output = &mt('Unrecognized course type: [_1]',$crstype); |
$output = &mt('Unrecognized course type: [_1]',$crstype); |
} |
} |
Line 3790 sub process_request {
|
Line 3834 sub process_request {
|
foreach my $role (@roles) { |
foreach my $role (@roles) { |
$longroles{$role}=&Apache::lonnet::plaintext($role,$type); |
$longroles{$role}=&Apache::lonnet::plaintext($role,$type); |
} |
} |
my $preamble = '<div id="LC_update" class="LC_info">'. |
$r->print('<div id="processing" style="display:block;">'."\n". |
'<br />'. |
&mt('Your request is being processed; this page will update when processing is complete.'). |
&mt("Please be patient while your request is processed"). |
'</div>'); |
'<br /></div>'. |
|
'<div style="padding:0;clear:both;margin:0;border:0"></div>'; |
|
my $closure = <<ENDCLOSE; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
\$("#LC_update").hide('slow'); |
|
// ]]> |
|
</script> |
|
ENDCLOSE |
|
my %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); |
|
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Processing ...')); |
|
$r->rflush(); |
$r->rflush(); |
if (ref($details) eq 'HASH') { |
if (ref($details) eq 'HASH') { |
if ($details->{'clonecrs'}) { |
if ($details->{'clonecrs'}) { |
Line 3828 ENDCLOSE
|
Line 3861 ENDCLOSE
|
'autocreate',$details,\$logmsg,\$newusermsg,\$addresult, |
'autocreate',$details,\$logmsg,\$newusermsg,\$addresult, |
\$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles, |
\$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles, |
\$code,\%customitems); |
\$code,\%customitems); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!')); |
|
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
|
if (ref($postprocess) eq 'HASH') { |
if (ref($postprocess) eq 'HASH') { |
$customized = $postprocess->{'createdcustomized'}; |
$customized = $postprocess->{'createdcustomized'}; |
} |
} |
Line 3990 ENDCLOSE
|
Line 4021 ENDCLOSE
|
} elsif ($disposition eq 'pending') { |
} elsif ($disposition eq 'pending') { |
my $pendingform; |
my $pendingform; |
if ($crstype ne 'official') { |
if ($crstype ne 'official') { |
$pendingform = &pending_validation_form($r,$dom,$cnum,$crstype,$now,$token, |
$pendingform = &pending_validation_form($dom,$cnum,$crstype,$now,$token, |
$lonhost,$env{'form.cdescr'}); |
$lonhost,$env{'form.cdescr'}); |
} |
} |
if ($pendingform) { |
if ($pendingform) { |
Line 4308 sub notification_information {
|
Line 4339 sub notification_information {
|
} |
} |
|
|
sub pending_validation_form { |
sub pending_validation_form { |
my ($r,$cdom,$cnum,$crstype,$now,$token,$lonhost,$cdesc) = @_; |
my ($cdom,$cnum,$crstype,$now,$token,$lonhost,$cdesc) = @_; |
my $output; |
my $output; |
my %postvalues = ( |
my %postvalues = ( |
'owner' => $env{'user.name'}.':'.$env{'user.domain'}, |
'owner' => $env{'user.name'}.':'.$env{'user.domain'}, |
Line 4344 sub pending_validation_form {
|
Line 4375 sub pending_validation_form {
|
my $hostname = &Apache::lonnet::hostname($lonhost); |
my $hostname = &Apache::lonnet::hostname($lonhost); |
my $protocol = $Apache::lonnet::protocol{$lonhost}; |
my $protocol = $Apache::lonnet::protocol{$lonhost}; |
$protocol = 'http' if ($protocol ne 'https'); |
$protocol = 'http' if ($protocol ne 'https'); |
my $alias = &Apache::lonnet::use_proxy_alias($r,$lonhost); |
|
$hostname = $alias if ($alias ne ''); |
|
my $crscreator = $protocol.'://'.$hostname.'/cgi-bin/createpending.pl'; |
my $crscreator = $protocol.'://'.$hostname.'/cgi-bin/createpending.pl'; |
$output .= '<input type="hidden" name="crscreator" value="'.$crscreator.'" />'."\n". |
$output .= '<input type="hidden" name="crscreator" value="'.$crscreator.'" />'."\n". |
'<input type="hidden" name="token" value="'.$token.'" />'."\n". |
'<input type="hidden" name="token" value="'.$token.'" />'."\n". |
Line 4371 sub check_autolimit {
|
Line 4400 sub check_autolimit {
|
if (($crstype eq 'community') && |
if (($crstype eq 'community') && |
(exists($crsroles{$cnum.':'.$cdom.':co'}))) { |
(exists($crsroles{$cnum.':'.$cdom.':co'}))) { |
$count ++; |
$count ++; |
} elsif ((($crstype eq 'official') || ($crstype eq 'unofficial') || ($crstype eq 'textbook')) && |
} elsif ((($crstype eq 'official') || ($crstype eq 'unofficial') || ($crstype eq 'textbook') || ($crstype eq 'placement')) && |
(exists($crsroles{$cnum.':'.$cdom.':cc'}))) { |
(exists($crsroles{$cnum.':'.$cdom.':cc'}))) { |
$count ++; |
$count ++; |
} |
} |
Line 4573 sub generate_date_items {
|
Line 4602 sub generate_date_items {
|
} |
} |
|
|
sub print_textbook_form { |
sub print_textbook_form { |
my ($r,$dom,$incdoms,$domdefs,$settings,$can_request) = @_; |
my ($r,$dom,$incdoms,$domdefs,$settings,$can_request,$crstype,$formhash) = @_; |
my (%prefab,%ordered,%numprefab); |
my (%prefab,%ordered,%numprefab); |
my $crstype = 'textbook'; |
if ($crstype eq '') { |
|
$crstype = 'textbook'; |
|
} |
# |
# |
# Retrieve list of prefabricated courses (textbook courses and templates) cloneable by user |
# Retrieve list of prefabricated courses (textbook courses and templates) cloneable by user |
# |
# |
Line 4635 sub print_textbook_form {
|
Line 4666 sub print_textbook_form {
|
owner => $courseinfo{'internal.courseowner'}, |
owner => $courseinfo{'internal.courseowner'}, |
releaserequired => $courseinfo{'internal.releaserequired'}, |
releaserequired => $courseinfo{'internal.releaserequired'}, |
type => $courseinfo{'type'}, |
type => $courseinfo{'type'}, |
}; |
}; |
} |
} |
} |
} |
|
|
Line 4692 sub print_textbook_form {
|
Line 4723 sub print_textbook_form {
|
|
|
my $jscript = &textbook_request_javascript(\%numprefab,$numcurrent,$numdomcourses,$customvalidationjs); |
my $jscript = &textbook_request_javascript(\%numprefab,$numcurrent,$numdomcourses,$customvalidationjs); |
$jscript .= $customjs; |
$jscript .= $customjs; |
my %loaditems; |
my (%loaditems,$args); |
$loaditems{'onload'} = 'javascript:uncheckAllRadio();'.$customonload; |
$loaditems{'onload'} = 'javascript:uncheckAllRadio();'.$customonload; |
$r->print(&header('Course Request',$jscript,\%loaditems)); |
if ($crstype eq 'lti') { |
|
$args = { 'only_body' => 1}; |
|
} |
|
$r->print(&header('Course Request',$jscript,\%loaditems,undef,$args)); |
|
|
if (ref($can_request) eq 'HASH') { |
if (ref($can_request) eq 'HASH') { |
unless ((scalar(keys(%{$can_request})) == 1) && ($can_request->{'textbook'})) { |
unless (((scalar(keys(%{$can_request})) == 1) && ($can_request->{'textbook'})) || |
|
($crstype eq 'lti')) { |
&Apache::lonhtmlcommon::add_breadcrumb( |
&Apache::lonhtmlcommon::add_breadcrumb( |
{ href => '/adm/requestcourse', |
{ href => '/adm/requestcourse', |
text => 'Pick action', |
text => 'Pick action', |
}); |
}); |
} |
} |
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb({text=>'Course Request'}); |
unless ($crstype eq 'lti') { |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests')); |
&Apache::lonhtmlcommon::add_breadcrumb({text=>'Course Request'}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests')); |
|
|
&startContentScreen($r,'textbookrequests'); |
&startContentScreen($r,'textbookrequests'); |
# |
# |
# Show domain selector form, if required. |
# Show domain selector form, if required. |
# |
# |
if (@{$incdoms} > 1) { |
if (@{$incdoms} > 1) { |
my $onchange = 'this.form.submit()'; |
my $onchange = 'this.form.submit()'; |
$r->print('<form name="domforcourse" method="post" action="/adm/requestcourse">'. |
$r->print('<form name="domforcourse" method="post" action="/adm/requestcourse">'. |
'<div><fieldset><legend>'.&mt('Domain').'</legend>'. |
'<div><fieldset><legend>'.&mt('Domain').'</legend>'. |
&Apache::loncommon::select_dom_form($dom,'showdom','',1,$onchange,$incdoms). |
&Apache::loncommon::select_dom_form($dom,'showdom','',1,$onchange,$incdoms). |
'</fieldset></form>'); |
'</fieldset></form>'); |
|
} |
} |
} |
|
|
# |
# |
Line 4834 sub print_textbook_form {
|
Line 4871 sub print_textbook_form {
|
'</label><br /><label>'. |
'</label><br /><label>'. |
'<input type="radio" name="owndatemode" value="shift" checked="checked" /> '. |
'<input type="radio" name="owndatemode" value="shift" checked="checked" /> '. |
$lt{'shd'}.'</label>'. |
$lt{'shd'}.'</label>'. |
'<input type="text" size="5" name="owndateshift" value="364" />'. |
'<input type="text" size="5" name="owndateshift" value="365" />'. |
'</div>'); |
'</div>'); |
} |
} |
# |
# |
Line 4849 sub print_textbook_form {
|
Line 4886 sub print_textbook_form {
|
'</label><br /><label>'. |
'</label><br /><label>'. |
'<input type="radio" name="colldatemode" value="shift" checked="checked" /> '. |
'<input type="radio" name="colldatemode" value="shift" checked="checked" /> '. |
$lt{'shd'}.'</label>'. |
$lt{'shd'}.'</label>'. |
'<input type="text" size="5" name="colldateshift" value="364" />'. |
'<input type="text" size="5" name="colldateshift" value="365" />'. |
'</div>'); |
'</div>'); |
} |
} |
|
|
Line 4896 sub print_textbook_form {
|
Line 4933 sub print_textbook_form {
|
# |
# |
# Submit button |
# Submit button |
# |
# |
$r->print('<input type="hidden" name="crstype" value="textbook" />'. |
$r->print('<input type="hidden" name="crstype" value="'.$crstype.'" />'. |
'<input type="hidden" name="action" value="process" />'. |
'<input type="hidden" name="action" value="process" />'. |
'<input type="submit" value="'.&mt('Create course').'" />'); |
'<input type="submit" value="'.&mt('Create course').'" />'); |
|
|
# |
# |
# End request form |
# End request form |
# |
# |
|
|
|
if (($crstype eq 'lti') && (ref($formhash) eq 'HASH')) { |
|
foreach my $item (keys(%{$formhash})) { |
|
$r->print('<input type="hidden" name="'.$item.'" value="'.$formhash->{$item}.'" />'."\n"); |
|
} |
|
} |
|
|
$r->print('</form>'); |
$r->print('</form>'); |
&endContentScreen($r). |
unless ($crstype eq 'lti') { |
|
&endContentScreen($r); |
|
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return; |
return; |
} |
} |
Line 4991 sub clone_selection_table {
|
Line 5037 sub clone_selection_table {
|
} |
} |
|
|
sub process_textbook_request { |
sub process_textbook_request { |
my ($r,$dom,$action,$domdefs,$domconfig,$can_request) = @_; |
my ($r,$dom,$action,$domdefs,$domconfig,$can_request,$crstype) = @_; |
my ($uniquecode,$req_notifylist); |
my ($uniquecode,$req_notifylist); |
my $crstype = 'textbook'; |
if ($crstype eq '') { |
|
$crstype = 'textbook'; |
|
} |
if (ref($domconfig) eq 'HASH') { |
if (ref($domconfig) eq 'HASH') { |
if (ref($domconfig->{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig->{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig->{'requestcourses'}{'notify'}) eq 'HASH') { |
if (ref($domconfig->{'requestcourses'}{'notify'}) eq 'HASH') { |
Line 5034 sub process_textbook_request {
|
Line 5082 sub process_textbook_request {
|
undef($clonedom); |
undef($clonedom); |
} |
} |
} |
} |
$r->print(&header('Course Creation')); |
my $js = &processing_javascript(); |
|
my ($loaditems,$args); |
if (ref($can_request) eq 'HASH') { |
$loaditems = { |
unless ((scalar(keys(%{$can_request})) == 1) && ($can_request->{'textbook'})) { |
onload => 'javascript:hideProcessing();', |
&Apache::lonhtmlcommon::add_breadcrumb( |
}; |
{ href => '/adm/requestcourse', |
if ($crstype eq 'lti') { |
text => 'Pick action', |
$args = { 'only_body' => 1}; |
}); |
} |
|
$r->print(&header('Course Creation',$js,$loaditems,undef,$args)); |
|
|
|
unless ($crstype eq 'lti') { |
|
if (ref($can_request) eq 'HASH') { |
|
unless ((scalar(keys(%{$can_request})) == 1) && ($can_request->{'textbook'})) { |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/requestcourse', |
|
text => 'Pick action', |
|
}); |
|
} |
} |
} |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/requestcourse', |
|
text => "Create Course", |
|
} |
|
); |
|
&Apache::lonhtmlcommon::add_breadcrumb({text=>'Request Processed'}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests')); |
|
&startContentScreen($r,'textbookrequests'); |
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/requestcourse', |
|
text => "Create Course", |
|
} |
|
); |
|
&Apache::lonhtmlcommon::add_breadcrumb({text=>'Request Processed'}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests')); |
|
&startContentScreen($r,'textbookrequests'); |
|
|
|
my $details = { |
my $details = { |
owner => $env{'user.name'}, |
owner => $env{'user.name'}, |
Line 5099 sub process_textbook_request {
|
Line 5157 sub process_textbook_request {
|
my ($result,$output,$customized) = &process_request($r,$lonhost,$dom,$cnum,$crstype,$now,$details, |
my ($result,$output,$customized) = &process_request($r,$lonhost,$dom,$cnum,$crstype,$now,$details, |
'',$req_notifylist,[],$domconfig); |
'',$req_notifylist,[],$domconfig); |
$r->print($output); |
$r->print($output); |
if (&Apache::loncoursequeueadmin::author_prompt()) { |
if ($crstype eq 'lti') { |
|
my %consumers = &Apache::lonnet::get_dom('lticonsumers',[$env{'form.sourcecrs'}],$dom); |
|
if (($env{'form.lti.sourcecrs'} ne '') && ($consumers{$env{'form.lti.sourcecrs'}} eq '') && ($cnum ne '')) { |
|
&Apache::lonnet::put_dom('lticonsumers',{ $env{'form.lti.sourcecrs'} => $cnum },$dom); |
|
} |
|
} elsif (&Apache::loncoursequeueadmin::author_prompt()) { |
unless ($customized) { |
unless ($customized) { |
&print_author_prompt($r,$action,$cnum,$dom,$crstype,$result); |
&print_author_prompt($r,$action,$cnum,$dom,$crstype,$result); |
} |
} |
Line 5108 sub process_textbook_request {
|
Line 5171 sub process_textbook_request {
|
$r->print('<p><a href="/adm/requestcourse">'.&mt('Create another course').'</a></p>'); |
$r->print('<p><a href="/adm/requestcourse">'.&mt('Create another course').'</a></p>'); |
} |
} |
} |
} |
&endContentScreen($r); |
unless ($crstype eq 'lti') { |
|
&endContentScreen($r); |
|
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|