--- loncom/interface/lonrequestcourse.pm	2010/03/19 13:23:05	1.48
+++ loncom/interface/lonrequestcourse.pm	2010/07/07 17:27:41	1.54
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Request a course
 #
-# $Id: lonrequestcourse.pm,v 1.48 2010/03/19 13:23:05 raeburn Exp $
+# $Id: lonrequestcourse.pm,v 1.54 2010/07/07 17:27:41 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -128,7 +128,7 @@ sub handler {
     }
 
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
-        ['action','showdom','cnum','state','crstype']);
+        ['action','showdom','cnum','state','crstype','queue']);
     &Apache::lonhtmlcommon::clear_breadcrumbs();
     my $dom = &get_course_dom();
     my $action = $env{'form.action'};
@@ -179,7 +179,8 @@ sub handler {
         if (($dom eq $env{'request.role.domain'}) && (&Apache::lonnet::allowed('ccc',$dom))) {
             if ($env{'form.cnum'} ne '') {
                 my $cnum = $env{'form.cnum'};
-                my $reqkey = $cnum.'_approval';
+                my $queue = $env{'form.queue'};
+                my $reqkey = $cnum.'_'.$queue;
                 my $namespace = 'courserequestqueue';
                 my $domconfig = &Apache::lonnet::get_domainconfiguser($dom);
                 my %queued =
@@ -317,7 +318,7 @@ sub handler {
     } elsif ($action eq 'display') {
         if ($warning ne '') {
             my $args = { only_body => 1 };
-            $r->print(&header('Course/Community Requests','','',$args).$crumb.
+            $r->print(&header('Course/Community Requests','','' ,'',$args).$crumb.
                       '<h3>'.&mt('Course/Community Request Details').'</h3>'.
                       '<div class="LC_warning">'.$warning.'</div>'.
                       &close_popup_form());
@@ -646,11 +647,7 @@ sub onload_action {
 sub print_main_menu {
     my ($r,$can_request,$states,$dom,$jscript,$loaditems,$crumb,$request_domains) = @_;
     my ($types,$typename) = &Apache::loncommon::course_types();
-    my $onchange;
-    unless ($env{'form.interface'} eq 'textual') {
-        $onchange = 'this.form.submit()';
-    }
-
+    my $onchange = 'this.form.submit()';
     my $nextstate_setter = "\n";
     if (ref($states) eq 'HASH') {
         foreach my $key (keys(%{$states})) {
@@ -699,7 +696,7 @@ END
         official => 'You are not permitted to request creation of an official 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 this domain.',
-        all => 'You must choose a specific course type when making a new course request.\\nAll types is not allowed.',
+        all => 'You must choose a specific course type when making a new course request.\\n\"All types\" is not allowed.',
     ); 
     $js .= <<END;
     if (crschoice == 'official') {
@@ -859,7 +856,7 @@ END
     }
     if ($action eq 'new') {
         my $jsextra;
-        if ($state eq 'courseinfo') {
+        if (($state eq 'courseinfo') || ($state eq 'codepick')) {
             $jsextra = "\n".&Apache::loncommon::coursebrowser_javascript($dom);
         } elsif ($state eq 'enrollment') {
             if (($env{'form.crstype'} eq 'official') && 
@@ -1861,7 +1858,20 @@ sub current_lc_sections {
 }
 
 sub sorted_request_history {
-    my ($dom,$action,$after,$before) = @_;
+    my ($dom,$action,$curr_req) = @_;
+    my ($after,$before,$statusfilter,$crstypefilter);
+    if ($env{'form.status'} ne '') {
+        $statusfilter = $env{'form.status'};
+    }
+    if ($env{'form.crstype'} ne '') {
+        $crstypefilter = $env{'form.crstype'};
+    }
+    if (ref($curr_req) eq 'HASH') {
+        $after = $curr_req->{'requested_after_date'},
+        $before = $curr_req->{'requested_before_date'};
+        $statusfilter = $curr_req->{'status'};
+        $crstypefilter = $curr_req->{'crstype'};
+    }
     my %statusinfo = &Apache::lonnet::dump('courserequests',$env{'user.domain'},
                                            $env{'user.name'},'^status:'.$dom);
     my %queue_by_date;
@@ -1870,8 +1880,8 @@ sub sorted_request_history {
         if ($action eq 'view') {
             next unless (($statusinfo{$key} eq 'approval') || ($statusinfo{$key} eq 'pending'));
         } else {
-            next unless (($env{'form.status'} eq 'any') ||
-                          ($env{'form.status'} eq $statusinfo{$key}));
+            next unless (($statusfilter eq 'any') ||
+                          ($statusfilter eq $statusinfo{$key}));
         }
         (undef,my($cdom,$cnum)) = split(':',$key);
         next if ($cdom ne $dom);   
@@ -1890,8 +1900,8 @@ sub sorted_request_history {
             } else {
                 next if (($reqtime < $after) || ($reqtime > $before));
             }
-            next unless (($env{'form.crstype'} eq 'any') || 
-                         ($env{'form.crstype'} eq $crstype));
+            next unless (($crstypefilter eq 'any') || 
+                         ($crstypefilter eq $crstype));
             if ($action eq 'view') {
                 next unless (($disposition eq 'approval') || 
                              ($disposition eq 'pending'));
@@ -2154,9 +2164,7 @@ sub print_request_logs {
     my ($statuses,$statusnames) = &reqstatus_names($curr{'crstype'});
     $r->print('<input type="hidden" name="page" value="'.$curr{'page'}.'" />'.
               &requestlog_display_filter($formname,\%curr));
-    my %queue_by_date = &sorted_request_history($dom,$env{'form.action'},
-                                                $curr{'requested_after_date'},
-                                                $curr{'requested_before_date'});
+    my %queue_by_date = &sorted_request_history($dom,$env{'form.action'},\%curr);
     my @sortedtimes = sort {$a <=> $b} (keys(%queue_by_date));
     my $showntablehdr = 0;
     my $tablehdr = &Apache::loncommon::start_data_table().
@@ -2302,7 +2310,7 @@ sub reqstatus_names {
     my @statuses = qw(created approval pending rejected cancelled);
     my %statusnames =
             &Apache::lonlocal::texthash (
-                        created   => 'Course/Community created',
+                        created   => 'Created',
                         approval  => 'Queued pending approval',
                         pending   => 'Queued pending validation',
                         rejected  => 'Request rejected',
@@ -2756,7 +2764,7 @@ ENDJS
                '<label><input type="radio" name="cloning" value="1" '.
                'onclick="javascript:toggleCloning()" />'.
                &mt('Yes').('&nbsp;'x2).'</label><label>'.
-               '<input type="radio" name="cloning" value="0" '.
+               '<input type="radio" name="cloning" value="0" checked="checked" '.
                'onclick="javascript:toggleCloning()" />'.&mt('No').'</label>'.
                '</h3>'.
                &Apache::lonhtmlcommon::row_closure(1).
@@ -2775,15 +2783,16 @@ sub clone_form {
     if ($crstype eq 'community') {
         $type = 'Community';
     }
-    my $cloneform = &Apache::loncommon::select_dom_form($dom,'clonedom').'&nbsp;'.
-                    &Apache::loncommon::selectcourse_link($formname,'clonecrs','clonedom','','','',$type);
     my %lt = &clone_text();
     my $output .= 
-        &Apache::lonhtmlcommon::row_title($lt{'cid'}).'<label>'.
-        '<input type="text" size="25" name="clonecrs" value=""  />'.
-        '</label>'.&Apache::lonhtmlcommon::row_closure(1).
         &Apache::lonhtmlcommon::row_title($lt{'dmn'}).'<label>'.
-        $cloneform.'</label>'.&Apache::lonhtmlcommon::row_closure(1).
+        &Apache::loncommon::select_dom_form($dom,'clonedom').'</label>'.
+        &Apache::lonhtmlcommon::row_closure(1).
+        &Apache::lonhtmlcommon::row_title($lt{'cid'}).'<label>'.
+        '<input type="text" size="25" name="clonecrs" value="" onfocus="this.blur();opencrsbrowser('."'$formname','clonecrs','clonedom','','','','','$type'".')" />'.
+        '</label>&nbsp;'.
+        &Apache::loncommon::selectcourse_link($formname,'clonecrs','clonedom','','','',$type).
+        &Apache::lonhtmlcommon::row_closure(1).
         &Apache::lonhtmlcommon::row_title($lt{'dsh'}).'<label>'.
         '<input type="radio" name="datemode" value="delete" /> '.$lt{'ncd'}.
         '</label><br /><label>'.
@@ -3286,6 +3295,9 @@ sub print_request_outcome {
                                             description => $env{'form.cdescr'}, 
                                           },
                           };
+            if ($crstype eq 'official') {
+                $request->{$requestid}->{'instcode'} = $instcode;
+            }
             my $statuskey = 'status:'.$dom.':'.$cnum;
             my %userreqhash = &Apache::lonnet::get('courserequests',[$statuskey],
                                                    $env{'user.domain'},$env{'user.name'});