--- loncom/interface/lonrequestcourse.pm	2009/11/04 17:42:17	1.39
+++ loncom/interface/lonrequestcourse.pm	2009/11/18 19:15:44	1.40
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Request a course
 #
-# $Id: lonrequestcourse.pm,v 1.39 2009/11/04 17:42:17 raeburn Exp $
+# $Id: lonrequestcourse.pm,v 1.40 2009/11/18 19:15:44 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -157,7 +157,7 @@ sub handler {
 
     my @invalidcrosslist;
     my %trail = (
-                 crstype       => 'Course Request Action',
+                 crstype       => 'Request Action',
                  codepick      => 'Category',
                  courseinfo    => 'Description',
                  enrollment    => 'Access Dates',
@@ -192,16 +192,30 @@ sub handler {
                     if (($udom =~ /^$match_domain$/) && ($uname =~ /^$match_username$/)) {
                         $result = &retrieve_settings($dom,$cnum,$udom,$uname);
                     } else {
-                        $warning = &mt('Invalid username or domain for course requestor');
+                        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 {
-                    $warning = &mt('No information was found for this course request.');
+                    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 {
-            $warning = &mt('You do not have rights to view course request information.');
+            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.');
+            }
         }
     } elsif ((defined($state)) && (defined($action))) {
         if (($action eq 'view') && ($state eq 'details')) {
@@ -287,9 +301,9 @@ sub handler {
                                         \@invalidcrosslist);
             }
         } else {
-            $r->print(&header('Course Requests').$crumb.
+            $r->print(&header('Course/Community Requests').$crumb.
                       '<div class="LC_warning">'.
-                      &mt('You do not have privileges to request creation of courses.').
+                      &mt('You do not have privileges to request creation of courses or communities.').
                       '</div>'.&Apache::loncommon::end_page());
         }
     } elsif ($action eq 'view') {
@@ -302,8 +316,8 @@ sub handler {
     } elsif ($action eq 'display') {
         if ($warning ne '') {
             my $args = { only_body => 1 };
-            $r->print(&header('Course Requests','','',$args).$crumb.
-                      '<h3>'.&mt('Course Request Details').'</h3>'.
+            $r->print(&header('Course/Community Requests','','',$args).$crumb.
+                      '<h3>'.&mt('Course/Community Request Details').'</h3>'.
                       '<div class="LC_warning">'.$warning.'</div>'.
                       &close_popup_form());
         } else {
@@ -387,7 +401,7 @@ sub get_breadcrumbs {
                 if ($$state eq $states->{$action}[$i]) {
                     &Apache::lonhtmlcommon::add_breadcrumb(
                        {text=>"$trail->{$$state}"});
-                    $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests');
+                    $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
                     last;
                 } else {
                     if (($$state eq 'process') || ($$state eq 'removal')) {
@@ -407,12 +421,12 @@ sub get_breadcrumbs {
         } else {
             &Apache::lonhtmlcommon::add_breadcrumb(
                     {text=>'Pick Action'});
-            $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests');
+            $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
         }
     } else {
         &Apache::lonhtmlcommon::add_breadcrumb(
                 {text=>'Pick Action'});
-        $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests');
+        $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
     }
     return ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description);
 }
@@ -691,8 +705,8 @@ END
                 $domaintitle = &mt('Course Domain');
             }
         } elsif ($can_request->{'community'}) {
-            $pagetitle = 'Course/Community Requests';
-            $pageinfo = &mt('Request creation of a new course or community, or review your pending requests.');
+            $pagetitle = 'Community Requests';
+            $pageinfo = &mt('Request creation of a new course, or review your pending requests.');
             $domaintitle = &mt('Community Domain');
         } else {
             $pagetitle = 'Course/Community Requests';
@@ -817,7 +831,13 @@ END
         } elsif ($state eq 'personnel') {
             $js .= "\n".&section_check_javascript()."\n".&personnel_lcsec_js();
         }
-        $r->print(&header('Request a course',$js.$jscript,$loaditems,$jsextra).$crumb);
+        my $title;
+        if ($env{'form.crstype'} eq 'community') {
+            $title = 'Request a community';
+        } else {
+            $title = 'Request a course';
+        }
+        $r->print(&header($title,$js.$jscript,$loaditems,$jsextra).$crumb);
         &print_request_form($r,$action,$state,$page,$states,$dom,$newinstcode,
                             $codechk,$checkedcode,$description,$invalidcrosslist);
     } elsif ($action eq 'view') {
@@ -834,11 +854,26 @@ END
         } elsif ($state eq 'cancel') {
             $jsextra = &viewcancel_javascript($formname);
         }
-        $r->print(&header('Manage course requests',$js.$jscript.$jsextra,$loaditems).
-                  $crumb);
+        my $title;
+        if ($env{'form.crstype'} eq 'community') {
+            $title = 'Manage community requests';
+        } else {
+            $title = 'Manage course requests';
+        }
+        $r->print(&header($title,$js.$jscript.$jsextra,$loaditems).$crumb);
         my $form = '<form method="post" name="'.$formname.'" action="/adm/requestcourse" />';
         if ($state eq 'pick_request') {
-            $r->print('<h3>'.&mt('Pending course requests').'</h3><div>'."\n".$form."\n".
+            my $title;
+            if ($env{'form.crstype'} eq 'community') {
+                $title = &mt('Pending community requests');
+            } elsif ($env{'form.crstype'} eq 'official') {
+                $title = &mt('Pending requests for official courses');
+            } elsif ($env{'form.crstype'} eq 'unofficial') {
+                $title = &mt('Pending requests for unofficial courses');
+            } else {
+                $title = &mt('Pending course/community requests'); 
+            }
+            $r->print('<h3>'.$title.'</h3><div>'."\n".$form."\n".
                       &print_request_status($dom).'</form></div>');
         } elsif ($state eq 'details') {
             my (@codetitles,%cat_titles,%cat_order,@code_order,$instcode,$code_chk);
@@ -850,7 +885,13 @@ END
                 &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
                                                          \%cat_order,\@code_order);
             }
-            $r->print('<h3>'.&mt('Course Request Details').'</h3><div>'."\n".$form."\n".
+            my $title;
+            if ($env{'form.crstype'} eq 'community') {
+                $title = &mt('Community Request Details');
+            } else {
+                $title = &mt('Course Request Details');
+            }
+            $r->print('<h3>'.$title.'</h3><div>'."\n".$form."\n".
                       &print_review($dom,\@codetitles,\%cat_titles,\%cat_order,
                                     \@code_order)."\n".
                       '<input name="origcnum" value="'.$origcnum.'" type="hidden" />'."\n");
@@ -867,8 +908,14 @@ END
                                 $navtxt{'next'},$state,$other,$navtxt{'other'});
             $r->print('</form>');
         } elsif ($state eq 'cancel') {
+            my $title;
+            if ($env{'form.crstype'} eq 'community') {
+                $title = &mt('Cancel community request');
+            } else {
+                $title = &mt('Cancel course request');
+            }
             my ($result,$output) = &print_cancel_request($dom,$env{'form.origcnum'});
-            $r->print('<h3>'.&mt('Cancel course request').'</h3><div>'."\n".$form."\n".
+            $r->print('<h3>'.$title.'</h3><div>'."\n".$form."\n".
                       $output);
             my @excluded = &get_excluded_elements($dom,$states,'view','cancel');
             $r->print(&Apache::lonhtmlcommon::echo_form_input(\@excluded).'</div>');
@@ -917,7 +964,11 @@ END
                       '<input type="hidden" name="showdom" value="'.$dom.'" />'."\n".
                       '<input type="hidden" name="orignum" value="'.$cnum.'" />'."\n");
             if ($result eq 'ok') {
-                $r->print(&mt('Your course request has been cancelled.'));
+                if ($env{'form.crstype'} eq 'community') {
+                    $r->print(&mt('Your community request has been cancelled.'));
+                } else {
+                    $r->print(&mt('Your course request has been cancelled.'));
+                }
             } else {
                 $r->print('<div class="LC_error">'.
                           &mt('The request cancellation process was not complete.').
@@ -932,8 +983,16 @@ END
             &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
                                                      \%cat_order,\@code_order);
         }
-        $r->print(&header('Course Request','','','',{ 'only_body' => 1}).
-                  $crumb."\n".'<h3>'.&mt('Course Request Details').'</h3>'.
+        my ($title,$header);
+        if ($env{'form.crstype'} eq 'community') {
+            $title = 'Community Request';
+            $header = &mt('Community Request');
+        } else {
+            $title = 'Course Request';
+            $header = &mt('Course Request');
+        }
+        $r->print(&header($title,'','','',{ 'only_body' => 1}).
+                  $crumb."\n".'<h3>'.$header.'</h3>'.
                   &print_review($dom,\@codetitles,\%cat_titles,\%cat_order,
                                 \@code_order,$uname,$udom)."\n".'</div>'.
                   &close_popup_form());
@@ -1289,10 +1348,18 @@ sub print_request_form {
         }
         &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
                                                  \%cat_order,\@code_order);
-        $r->print('<h3>'.&mt('Review course request details before submission').'</h3>'.
-                  &print_review($dom,\@codetitles,\%cat_titles,\%cat_order,\@code_order,'','',\@disallowed,\%disallowmsg).
+        if ($crstype eq 'community') {
+            $r->print('<h3>'.&mt('Review community request details before submission').'</h3>');
+        } else {
+            $r->print('<h3>'.&mt('Review course request details before submission').'</h3>');
+        }
+        $r->print(&print_review($dom,\@codetitles,\%cat_titles,\%cat_order,\@code_order,'','',\@disallowed,\%disallowmsg).
                   '<input type="hidden" name="cnum" value="'.$cnum.'" />');
-        $navtxt{'next'} = &mt('Submit course request');
+        if ($crstype eq 'community') {
+            $navtxt{'next'} = &mt('Submit community request');
+        } else {
+            $navtxt{'next'} = &mt('Submit course request');
+        }
     }  elsif ($state eq 'process') {
         if ($crstype eq 'official') {
             &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
@@ -1457,7 +1524,7 @@ sub print_enrollment_menu {
             }
             if ($crosslist_form) { 
                 $crosslist_form .= 
-                    &Apache::lonhtmlcommon::row_title(&mt('Add another?')).
+                    &Apache::lonhtmlcommon::row_title(&mt('Add another')).
                     '<input name="crosslisttotal" type="hidden" value="'.$crosslisttotal.'" />'.
                     '<input name="addcrosslist" type="checkbox" value="'.$crosslisttotal.'"'.
                     ' onclick="javascript:nextPage(document.'.$formname.",'".$env{'form.state'}.
@@ -1722,13 +1789,17 @@ sub print_personnel_menu {
             &Apache::loncommon::help_open_topic('Course_Request_Rolesection').'&nbsp;'.&mt('LON-CAPA Section(s)').'<br />'.$sectionselector.'</td>'."\n".
             '</tr></table>'.&Apache::lonhtmlcommon::row_closure();
     }
-    $output .= &Apache::lonhtmlcommon::row_title(&mt('Add another?')).
+    $output .= &Apache::lonhtmlcommon::row_title(&mt('Add another')).
                '<input name="persontotal" type="hidden" value="'.$persontotal.'" />'.
                '<input name="addperson" type="checkbox" value="'.$persontotal.'"'.
                ' onclick="javascript:nextPage(document.'.$formname.",'".$env{'form.state'}.
                "'".');" />'.&mt('Add?').&Apache::lonhtmlcommon::row_closure(1).
-               &Apache::lonhtmlcommon::end_pick_box().'</div>'.
-               '<p>'.&mt('You may also add users later, once the course has been created, by using the "Manage course users" link, accessible from the "Main Menu".').'</p>';
+               &Apache::lonhtmlcommon::end_pick_box().'</div>';
+    if ($crstype eq 'community') {
+        $output .= '<p>'.&mt('You may also add users later, once the community has been created, by using the "Manage community users" link, accessible from the "Main Menu".').'</p>';
+    } else {
+        $output .= '<p>'.&mt('You may also add users later, once the course has been created, by using the "Manage course users" link, accessible from the "Main Menu".').'</p>';
+    }
     return $output;
 }
 
@@ -1800,10 +1871,18 @@ sub print_request_status {
               '<input type="hidden" name="showdom" value="" />'."\n".
               '<input type="hidden" name="cnum" value="" />'."\n";
     if (@sortedtimes > 0) {
+        my $desctitle;
+        if ($env{'form.crstype'} eq 'any') {
+            $desctitle = &mt('Course/Community Description')
+        } elsif ($env{'form.crstype'} eq 'community') {
+            $desctitle = &mt('Community Description')
+        } else {
+            $desctitle = &mt('Course Description');
+        }
         $output .= &Apache::loncommon::start_data_table().
                    &Apache::loncommon::start_data_table_header_row().
                    '<th>'.&mt('Action').'</th>'.
-                   '<th>'.&mt('Course Description').'</th>'.
+                   '<th>'.$desctitle.'</th>'.
                    '<th>'.&mt('Domain').'</th>';
         if ($env{'form.crstype'} eq 'any') {
             $output .= '<th>'.&mt('Type').'</th>';
@@ -1851,7 +1930,13 @@ sub print_request_status {
         }
         $output .= &Apache::loncommon::end_data_table();
     } else {
-        $output .= '<div>'.&mt('You have no matching course requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>';
+        if ($env{'form.crstype'} eq 'any') {
+$output .= '<div>'.&mt('You have no matching course or community requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>';
+        } elsif ($env{'form.crstype'} eq 'community') {
+            $output .= '<div>'.&mt('You have no matching community requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>';
+        } else {
+            $output .= '<div>'.&mt('You have no matching course requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>';
+        }
     }
     $output .= '
 <br /><input type="button" name="prev" value="'.&mt('Back').'" onclick="javascript:backPage(document.'.$formname.",'crstype'".')" />';
@@ -1892,8 +1977,12 @@ sub print_cancel_request {
                       '<td>'.$showtype.'</td>'.
                       &Apache::loncommon::end_data_table_row().
                       &Apache::loncommon::end_data_table().
-                      '<br /><div class="LC_warning">'.
-                      &mt('Cancelling the request will remove it from the queue of pending course requests').'</div>';
+                      '<br /><div class="LC_warning">';
+            if ($crstype eq 'community') {
+                $output .= &mt('Cancelling the request will remove it from the queue of pending community requests').'</div>';
+            } else {
+                $output .= &mt('Cancelling the request will remove it from the queue of pending course requests').'</div>';
+            }
             $result = 'ok';
         } else {
             $output = '<div class="LC_error">'.&mt('No record exists for the course ID').'</div>';
@@ -2266,8 +2355,10 @@ function validateForm() {
 
 ENDJS
     my $title = &mt('Brief Course Description');
+    my $clonetitle = &mt('Clone content and settings from an existing course?');
     if ($crstype eq 'community') {
         $title = &mt('Brief Community Description');
+        $clonetitle = &mt('Clone content and settings from an existing community?');
     }
     my $output .= $js_validate."\n".'<div>'.&Apache::lonhtmlcommon::start_pick_box().
                   &Apache::lonhtmlcommon::row_headline().
@@ -2285,7 +2376,7 @@ ENDJS
     $output .= $home_server_pick.
                &Apache::lonhtmlcommon::row_closure().
                &Apache::lonhtmlcommon::row_headline().
-               '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Clone').'&nbsp;'.&mt('Clone content and settings from an existing course?').'</h3>'. 
+               '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Clone').'&nbsp;'.$clonetitle.'</h3>'. 
                &Apache::lonhtmlcommon::row_closure(1).
                &clone_form($dom,$formname,$crstype).
                &Apache::lonhtmlcommon::end_pick_box().'</div>'."\n";
@@ -2744,7 +2835,11 @@ sub print_request_outcome {
         $reqstatus = $disposition;
         my ($modified,$queued);
         if ($disposition eq 'rejected') {
-            $output = &mt('Your course request was rejected.');
+            if ($crstype eq 'community') {
+                $output = &mt('Your community request was rejected.');
+            } else {
+                $output = &mt('Your course request was rejected.');
+            }
             if ($message) {
                 $output .= '<div class="LC_warning">'.$message.'</div>';
             }
@@ -2768,14 +2863,22 @@ sub print_request_outcome {
                 $reqstatus = 'created';
                 my $role_result = &update_requestors_roles($dom,$cnum,$crstype,$details,
                                                            \%longroles);
-                $output = '<p>'.&mt('Your course request has been processed and the course has been created.').
-                          '<br />'.$role_result.'</p>';
+                if ($crstype eq 'community') {
+                    $output = '<p>'.&mt('Your community request has been processed and the community has been created.');
+                } else {
+                    $output = '<p>'.&mt('Your course request has been processed and the course has been created.');
+                }
+                $output .= '<br />'.$role_result.'</p>';
                 $creationresult = 'created';
             } else {
-                $output = '<span class="LC_error">'.
-                          &mt('An error occurred when processing your course request.').
-                          '<br />'.
-                          &mt('You may want to review the request details and submit the request again.').
+                $output = '<span class="LC_error">';
+                if ($crstype eq 'community') {
+                    $output .= &mt('An error occurred when processing your community request.');
+                } else {
+                    $output .= &mt('An error occurred when processing your course request.');
+                }
+                $output .= '<br />'.
+                           &mt('You may want to review the request details and submit the request again.').
                           '</span>';
                 $creationresult = 'error';
             }
@@ -2808,7 +2911,12 @@ sub print_request_outcome {
                 my $putresult = &Apache::lonnet::newput_dom('courserequestqueue',$request,
                                                             $dom);
                 if ($putresult eq 'ok') {
-                    $output = &mt('Your course request has been recorded.').'<br />'.
+                    if ($crstype eq 'community') {
+                        $output .= &mt('Your community request has been recorded.');
+                    } else {
+                        $output .= &mt('Your course request has been recorded.') 
+                    }
+                    $output .= '<br />'.
                               &notification_information($disposition,$req_notifylist,
                                                         $cnum,$now);
                 } else {
@@ -2840,8 +2948,12 @@ sub print_request_outcome {
             &Apache::lonnet::logthis("Error saving course request status for  $requestkey (for $env{'user.name'}:$env{'user.domain'}) - $statusresult");
         }
         if ($modified && $queued && $storeresult eq 'ok') {
-            $output .= '<p>'.&mt('Your course request has been updated').'</p>'.
-                       &notification_information($disposition,$req_notifylist,$cnum,$now);
+            if ($crstype eq 'community') {
+                $output .= '<p>'.&mt('Your community request has been updated').'</p>';
+            } else {
+                $output .= '<p>'.&mt('Your course request has been updated').'</p>';
+            }
+            $output .= &notification_information($disposition,$req_notifylist,$cnum,$now);
         }
         if ($validationerror ne '') {
             $output .= '<span class="LC_warning">'.&mt('An error occurred validating your request with institutional data sources: [_1].',$validationerror).'</p>';