--- loncom/interface/lonrequestcourse.pm 2014/05/06 18:09:40 1.79 +++ loncom/interface/lonrequestcourse.pm 2014/05/14 18:20:09 1.83 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.79 2014/05/06 18:09:40 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.83 2014/05/14 18:20:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -174,6 +174,22 @@ sub handler { } else { &textbook_request_disabled($r,$dom,\%can_request); } + } elsif ($action eq 'display') { + my ($uname,$udom,$result,$warning) = &domcoord_display($dom); + if ($warning ne '') { + my $args = { only_body => 1 }; + $r->print(&header('Course/Community Requests','','' ,'',$args). + '

'.&mt('Course/Community Request Details').'

'. + '
'.$warning.'
'. + &close_popup_form()); + } else { + $states{'display'} = ['details']; + my $loaditems = &onload_action($action,$state); + my $page = 0; + &request_administration($r,$action,$state,$page,\%states,$dom,$jscript, + $loaditems,'','','','','',$showcredits,'','', + $uname,$udom); + } } else { if ($can_request{'textbook'}) { &print_textbook_form($r,$dom,\@incdoms,\%domdefs,$domconfig{'requestcourses'},\%can_request); @@ -232,46 +248,7 @@ sub handler { my ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description) = &get_breadcrumbs($dom,$action,\$state,\%states,\%trail); if ($action eq 'display') { - if (($dom eq $env{'request.role.domain'}) && (&Apache::lonnet::allowed('ccc',$dom))) { - if ($env{'form.cnum'} ne '') { - my $cnum = $env{'form.cnum'}; - my $queue = $env{'form.queue'}; - my $reqkey = $cnum.'_'.$queue; - my $namespace = 'courserequestqueue'; - my $domconfig = &Apache::lonnet::get_domainconfiguser($dom); - my %queued = - &Apache::lonnet::get($namespace,[$reqkey],$dom,$domconfig); - if (ref($queued{$reqkey}) eq 'HASH') { - $uname = $queued{$reqkey}{'ownername'}; - $udom = $queued{$reqkey}{'ownerdom'}; - if (($udom =~ /^$match_domain$/) && ($uname =~ /^$match_username$/)) { - $result = &retrieve_settings($dom,$cnum,$udom,$uname); - } else { - if ($env{'form.crstype'} eq 'community') { - $warning = &mt('Invalid username or domain for community requestor'); - } else { - $warning = &mt('Invalid username or domain for course requestor'); - } - } - } else { - if ($env{'form.crstype'} eq 'community') { - $warning = &mt('No information was found for this community request.'); - } else { - $warning = &mt('No information was found for this course request.'); - } - } - } else { - $warning = &mt('No course request ID provided.'); - } - } else { - if ($env{'form.crstype'} eq 'any') { - $warning = &mt('You do not have rights to view course or community request information.'); - } elsif ($env{'form.crstype'} eq 'community') { - $warning = &mt('You do not have rights to view community request information.'); - } else { - $warning = &mt('You do not have rights to view course request information.'); - } - } + ($uname,$udom,$result,$warning) = &domcoord_display($dom); } elsif ((defined($state)) && (defined($action))) { if (($action eq 'view') && ($state eq 'details')) { if ((defined($env{'form.showdom'})) && (defined($env{'form.cnum'}))) { @@ -1129,6 +1106,52 @@ END return; } +sub domcoord_display { + my ($dom) = @_; + my ($uname,$udom,$result,$warning); + if (($dom eq $env{'request.role.domain'}) && (&Apache::lonnet::allowed('ccc',$dom))) { + if ($env{'form.cnum'} ne '') { + my $cnum = $env{'form.cnum'}; + my $queue = $env{'form.queue'}; + my $reqkey = $cnum.'_'.$queue; + my $namespace = 'courserequestqueue'; + my $domconfig = &Apache::lonnet::get_domainconfiguser($dom); + my %queued = + &Apache::lonnet::get($namespace,[$reqkey],$dom,$domconfig); + if (ref($queued{$reqkey}) eq 'HASH') { + $uname = $queued{$reqkey}{'ownername'}; + $udom = $queued{$reqkey}{'ownerdom'}; + if (($udom =~ /^$match_domain$/) && ($uname =~ /^$match_username$/)) { + $result = &retrieve_settings($dom,$cnum,$udom,$uname); + } else { + if ($env{'form.crstype'} eq 'community') { + $warning = &mt('Invalid username or domain for community requestor'); + } else { + $warning = &mt('Invalid username or domain for course requestor'); + } + } + } else { + if ($env{'form.crstype'} eq 'community') { + $warning = &mt('No information was found for this community request.'); + } else { + $warning = &mt('No information was found for this course request.'); + } + } + } else { + $warning = &mt('No course request ID provided.'); + } + } else { + if ($env{'form.crstype'} eq 'any') { + $warning = &mt('You do not have rights to view course or community request information.'); + } elsif ($env{'form.crstype'} eq 'community') { + $warning = &mt('You do not have rights to view community request information.'); + } else { + $warning = &mt('You do not have rights to view course request information.'); + } + } + return ($uname,$udom,$result,$warning); +} + sub enrollment_lcsec_js { my %alerts = §ion_check_alerts(); my $secname = $alerts{'badsec'}; @@ -3741,15 +3764,9 @@ sub process_request { } if (ref($postprocess) eq 'HASH') { if (ref($postprocess->{'createdactions'}) eq 'HASH') { - if (ref($postprocess->{'createdactions'}{'environment'} eq 'HASH') { - my %newcrsenv; - foreach my $key (%{$postprocess->{'createdactions'}{'environment'}}) { - $newcrsenv{$key} = $postprocess->{'createdactions'}{'environment'}{$key}; - } - if (keys(%newcrsenv)) { - my $putresult = &Apache::lonnet::put('environment',\%newcrsenv,$dom,$cnum); - - } + if (ref($postprocess->{'createdactions'}{'environment'}) eq 'HASH') { + &Apache::loncoursequeueadmin::postprocess_crsenv($dom,$cnum, + $postprocess->{'createdactions'}{'environment'}); } } } @@ -4399,25 +4416,26 @@ sub generate_date_items { sub print_textbook_form { my ($r,$dom,$incdoms,$domdefs,$settings,$can_request) = @_; - my ($bookshash,%ordered); + my (%prefab,%ordered,%numprefab); my $crstype = 'textbook'; # -# Retrieve list of textbook courses cloneable by user +# Retrieve list of prefabricated courses (textbook courses and templates) cloneable by user # - my $numbook = 0; - if (ref($settings) eq 'HASH') { - $bookshash = $settings->{'textbooks'}; - if (ref($bookshash) eq 'HASH') { - foreach my $item (keys(%{$bookshash})) { - my ($clonedom,$clonecrs) = split(/_/,$item); - if (ref($bookshash->{$item}) eq 'HASH') { + foreach my $type ('textbooks','templates') { + $numprefab{$type} = 0; + if (ref($settings) eq 'HASH') { + $prefab{$type} = $settings->{$type}; + if (ref($prefab{$type}) eq 'HASH') { + foreach my $item (keys(%{$prefab{$type}})) { my ($clonedom,$clonecrs) = split(/_/,$item); - if (&Apache::loncoursequeueadmin::can_clone_course($env{'user.name'}, - $env{'user.domain'},$clonecrs,$clonedom,$crstype)) { - - my $num = $bookshash->{$item}{'order'}; - $ordered{$num} = $item; - $numbook ++; + if (ref($prefab{$type}{$item}) eq 'HASH') { + if (&Apache::loncoursequeueadmin::can_clone_course($env{'user.name'}, + $env{'user.domain'},$clonecrs,$clonedom,$crstype)) { + + my $num = $prefab{$type}{$item}{'order'}; + $ordered{$type}{$num} = $item; + $numprefab{$type} ++; + } } } } @@ -4453,7 +4471,7 @@ sub print_textbook_form { my $numcurrent = scalar(keys(%cloneable)); - my $jscript = &textbook_request_javascript($numbook,$numcurrent); + my $jscript = &textbook_request_javascript(\%numprefab,$numcurrent); my %loaditems; $loaditems{'onload'} = 'javascript:uncheckAllRadio();'; $r->print(&header('Course Request',$jscript,\%loaditems)); @@ -4504,9 +4522,16 @@ sub print_textbook_form { $r->print('
'. '
'.&mt('Course Content').''); if (keys(%ordered)) { - $r->print(''.(' 'x2).' '); + if (ref($ordered{'textbooks'}) eq 'HASH') { + $r->print(''.(' 'x2).' '); + } + if (ref($ordered{'templates'}) eq 'HASH') { + $r->print(''.(' 'x2).' '); + } } if (keys(%cloneable)) { $r->print('