version 1.101, 2017/08/11 00:24:53
|
version 1.105, 2018/12/27 18:14:25
|
Line 155 sub handler {
|
Line 155 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 192 sub handler {
|
Line 209 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 4312 sub pending_validation_form {
|
Line 4330 sub pending_validation_form {
|
$buttontext = &mt('Create course'); |
$buttontext = &mt('Create course'); |
} |
} |
} |
} |
|
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 $crscreator = $protocol.'://'.&Apache::lonnet::hostname($lonhost).'/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". |
'<input type="submit" name="validate" value="'.$buttontext.'" />'."\n". |
'<input type="submit" name="validate" value="'.$buttontext.'" />'."\n". |
Line 4541 sub generate_date_items {
|
Line 4560 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 4603 sub print_textbook_form {
|
Line 4624 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 4659 sub print_textbook_form {
|
Line 4681 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 4863 sub print_textbook_form {
|
Line 4891 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 4958 sub clone_selection_table {
|
Line 4995 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 5002 sub process_textbook_request {
|
Line 5041 sub process_textbook_request {
|
} |
} |
} |
} |
my $js = &processing_javascript(); |
my $js = &processing_javascript(); |
my $loaditems = { |
my ($loaditems,$args); |
onload => 'javascript:hideProcessing();', |
$loaditems = { |
}; |
onload => 'javascript:hideProcessing();', |
$r->print(&header('Course Creation',$js,$loaditems)); |
}; |
|
if ($crstype eq 'lti') { |
if (ref($can_request) eq 'HASH') { |
$args = { 'only_body' => 1}; |
unless ((scalar(keys(%{$can_request})) == 1) && ($can_request->{'textbook'})) { |
} |
&Apache::lonhtmlcommon::add_breadcrumb( |
$r->print(&header('Course Creation',$js,$loaditems,undef,$args)); |
{ href => '/adm/requestcourse', |
|
text => 'Pick action', |
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 5054 sub process_textbook_request {
|
Line 5099 sub process_textbook_request {
|
} else { |
} else { |
$details->{dateshift} = ''; |
$details->{dateshift} = ''; |
} |
} |
|
} elsif (($reqtype eq 'textbook') || ($reqtype eq 'template')) { |
|
$details->{datemode} = 'delete'; |
|
$details->{dateshift} = ''; |
} |
} |
if ($details->{dateshift} ne '') { |
if ($details->{dateshift} ne '') { |
$details->{dateshift} =~ s/[^\d\.]+//g; |
$details->{dateshift} =~ s/[^\d\.]+//g; |
Line 5067 sub process_textbook_request {
|
Line 5115 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 5076 sub process_textbook_request {
|
Line 5129 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()); |
} |
} |
|
|