--- loncom/interface/lonsupportreq.pm 2012/02/08 17:49:01 1.66.6.1
+++ loncom/interface/lonsupportreq.pm 2012/04/18 17:30:24 1.67
@@ -1,5 +1,5 @@
#
-# $Id: lonsupportreq.pm,v 1.66.6.1 2012/02/08 17:49:01 raeburn Exp $
+# $Id: lonsupportreq.pm,v 1.67 2012/04/18 17:30:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,6 +36,7 @@ use Apache::lonhtmlcommon;
use Apache::lonnet;
use Apache::lonlocal;
use Apache::lonacc();
+use Apache::courseclassifier;
use LONCAPA qw(:DEFAULT :match);
@@ -69,8 +70,9 @@ sub handler {
sub print_request_form {
my ($r,$origurl,$function) = @_;
- my ($os,$browser,$bversion,$uhost,$uname,$udom,$uhome,$email,
- $lastname,$firstname,$server,$formname,$public);
+ my ($os,$browser,$bversion,$uhost,$uname,$udom,$uhome,$urole,$usec,$email,$cid,
+ $cdom,$cnum,$ctitle,$ccode,$sectionlist,$lastname,$firstname,$server,
+ $formname,$public,$homeserver);
$function = &Apache::loncommon::get_users_function() if (!$function);
$ccode = '';
$os = $env{'browser.os'};
@@ -80,10 +82,23 @@ sub print_request_form {
if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) {
$public = 1;
} else {
- $uname = $env{'user.name'};
- $udom = $env{'user.domain'};
+ if (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')) {
+ $homeserver = &Apache::lonnet::homeserver($env{'user.name'},
+ $env{'user.domain'});
+ if ($homeserver eq 'no_host') {
+ undef($homeserver);
+ } else {
+ $uname = $env{'user.name'};
+ $udom = $env{'user.domain'};
+ }
+ }
+ }
+ if ($homeserver) {
+ $uhome = $env{'user.home'};
+ $urole = $env{'request.role'};
+ $usec = $env{'request.course.sec'};
+ $cid = $env{'request.course.id'};
}
- $uhome = $env{'user.home'};
$formname = 'logproblem';
my $machine = &Apache::lonnet::absolute_url();
if ($origurl =~ m-^https?://-) {
@@ -109,7 +124,14 @@ sub print_request_form {
entr => 'Enter the username you use to log-in to LON-CAPA, and your domain.',
urlp => 'URL of page',
phon => 'Phone',
+ crsd => 'Course Details',
+ enin => 'Enter institutional course code',
pick => 'Pick',
+ enct => 'Enter course title',
+ secn => 'Section Number',
+ sele => 'Select',
+ titl => 'Title',
+ lsec => 'LON-CAPA sec',
subj => 'Subject',
detd => 'Detailed Description',
opfi => 'Optional file upload',
@@ -136,21 +158,38 @@ function validate() {
END
$scripttag .= &Apache::lonhtmlcommon::javascript_valid_email();
-
- if ($env{'environment.permanentemail'}) {
- $email = $env{'environment.permanentemail'};
- } elsif ($env{'environment.critnotification'}) {
- $email = $env{'environment.critnotification'};
- } elsif ($env{'environment.notification'}) {
- $email = $env{'environment.notification'};
+ if ($cid) {
+ $cdom = $env{'course.'.$cid.'.domain'};
+ $cnum = $env{'course.'.$cid.'.num'};
+ }
+ if ($cdom && $cnum) {
+ my %csettings = &Apache::lonnet::get('environment',['description','internal.coursecode','internal.sectionnums'],$cdom,$cnum);
+ $ctitle = $csettings{'description'};
+ $ccode = $csettings{'internal.coursecode'};
+ $sectionlist = $csettings{'internal.sectionnums'};
+ }
+
+ if ($homeserver) {
+ if ($env{'environment.permanentemail'}) {
+ $email = $env{'environment.permanentemail'};
+ } elsif ($env{'environment.critnotification'}) {
+ $email = $env{'environment.critnotification'};
+ } elsif ($env{'environment.notification'}) {
+ $email = $env{'environment.notification'};
+ }
+ if ($env{'environment.lastname'}) {
+ $lastname = $env{'environment.lastname'};
+ }
+ if ($env{'environment.firstname'}) {
+ $firstname = $env{'environment.firstname'};
+ }
+ }
+ my @sections = split(/,/,$sectionlist);
+ my %groupid;
+ foreach my $section (@sections) {
+ my ($sec,$grp) = split(/:/,$section);
+ $groupid{$sec} = $grp;
}
- if ($env{'environment.lastname'}) {
- $lastname = $env{'environment.lastname'};
- }
- if ($env{'environment.firstname'}) {
- $firstname = $env{'environment.firstname'};
- }
-
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['codedom',
'useremail','useraccount']);
if ($env{'form.origurl'} eq '/adm/createaccount') {
@@ -166,14 +205,70 @@ END
}
}
my $codedom = &get_domain();
+ my $details_title;
+ if ($codedom) {
+ $details_title = '
('.$codedom.')';
+ }
+ my %coursecodes;
+ my %codes;
+ my @codetitles;
+ my %cat_titles;
+ my %cat_order;
+ my %idlist;
+ my %idnums;
+ my %idlist_titles;
my $caller = 'global';
+ my $totcodes = 0;
my $format_reply;
my $jscript = '';
- my $js = '';
- my %add_entries = (topmargin => "0",
- marginheight => "0",
- );
+ my $loaditems = qq|
+function initialize_codes() {
+ return;
+}
+ |;
+ if ($cnum) {
+ $coursecodes{$cnum} = $ccode;
+ if ($ccode eq '') {
+ $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
+ } else {
+ $coursecodes{$cnum} = $ccode;
+ $caller = $cnum;
+ $totcodes ++;
+ }
+ } else {
+ $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
+ }
+ if ($totcodes > 0) {
+ if ($ccode eq '') {
+ $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);
+ if ($format_reply eq 'ok') {
+ my $numtypes = @codetitles;
+ &Apache::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles);
+ my ($scripttext,$longtitles) = &Apache::courseclassifier::javascript_definitions(\@codetitles,\%idlist,\%idlist_titles,\%idnums,\%cat_titles);
+ my $longtitles_str = join('","',@{$longtitles});
+ my $allidlist = $idlist{$codetitles[0]};
+ $jscript .= &Apache::courseclassifier::courseset_js_start($formname,$longtitles_str,$allidlist);
+ $jscript .= $scripttext;
+ $jscript .= &Apache::courseclassifier::javascript_code_selections($formname,@codetitles);
+ $loaditems = '';
+ }
+ }
+ }
+
+ my $js = <<"ENDJS";
+
+ENDJS
+ my %add_entries = (
+ style => "margin-top:0px;margin-bottom:0px;",
+ onload => "initialize_codes();",
+ );
+
$r->print(&Apache::loncommon::start_page('Support Request',$js,
{ 'function' => $function,
@@ -185,20 +280,24 @@ END
my @css = ('LC_evenrow_value','LC_oddrow_value');
my $num = 1;
my $i = $num%2;
- $r->print('