--- loncom/interface/lonsupportreq.pm 2022/01/01 19:55:31 1.79.2.9
+++ loncom/interface/lonsupportreq.pm 2015/06/23 02:42:34 1.81
@@ -1,7 +1,5 @@
-# The LearningOnline Network with CAPA
-# Helpdesk request form
#
-# $Id: lonsupportreq.pm,v 1.79.2.9 2022/01/01 19:55:31 raeburn Exp $
+# $Id: lonsupportreq.pm,v 1.81 2015/06/23 02:42:34 musolffc Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -29,8 +27,6 @@
package Apache::lonsupportreq;
use strict;
-use MIME::Types;
-use MIME::Lite;
use CGI::Cookie();
use Apache::Constants qw(:common);
use Apache::loncommon();
@@ -69,9 +65,7 @@ sub handler {
}
}
my $origurl = $env{'form.origurl'};
- if ($origurl =~ m{^https?://[^/]+(.*)$}) {
- $origurl = $1;
- }
+ $origurl =~ s{^https?://}{};
$origurl =~ s/(`)//g;
$origurl =~ s/\$/\(\$\)/g;
my $command = $env{'form.command'};
@@ -83,18 +77,18 @@ sub handler {
}
return OK;
}
-
+
sub print_request_form {
my ($r,$origurl,$function) = @_;
- my ($os,$browser,$bversion,$uname,$udom,$uhome,$urole,$usec,$email,$cid,
+ my ($os,$browser,$bversion,$uhost,$uname,$udom,$uhome,$urole,$usec,$email,$cid,
$cdom,$cnum,$ctitle,$ccode,$sectionlist,$lastname,$firstname,$server,
- $formname,$public,$homeserver,$knownuser,$captcha_form,$captcha_error,
- $captcha,$recaptcha_version,$extra_validations,%groupid);
+ $formname,$public,$homeserver);
$function = &Apache::loncommon::get_users_function() if (!$function);
$ccode = '';
$os = $env{'browser.os'};
$browser = $env{'browser.type'};
$bversion = $env{'browser.version'};
+ $uhost = $env{'request.host'};
if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) {
$public = 1;
} else {
@@ -109,118 +103,13 @@ sub print_request_form {
}
}
}
- if (($env{'user.name'} =~ /^$match_username$/) &&
- ($env{'user.domain'} =~ /^$match_domain$/) && (!$public)) {
- $knownuser = 1;
- } else {
- my $lonhost = $r->dir_config('lonHostID');
- ($captcha_form,$captcha_error,$captcha,$recaptcha_version) =
- &Apache::loncommon::captcha_display('login',$lonhost);
- }
- &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['codedom',
- 'useremail','useraccount']);
-
if ($homeserver) {
$uhome = $env{'user.home'};
$urole = $env{'request.role'};
$usec = $env{'request.course.sec'};
$cid = $env{'request.course.id'};
}
- 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'};
- my @sections = split(/,/,$sectionlist);
- foreach my $section (@sections) {
- my ($sec,$grp) = split(/:/,$section);
- $groupid{$sec} = $grp;
- }
- }
-
$formname = 'logproblem';
- my $codedom = &get_domain();
- my %helpform;
- my %domconfig =
- &Apache::lonnet::get_dom('configuration',['contacts'],$codedom);
- if (ref($domconfig{'contacts'}) eq 'HASH') {
- if (ref($domconfig{'contacts'}{'helpform'}) eq 'HASH') {
- %helpform = %{$domconfig{'contacts'}{'helpform'}};
- }
- }
-
- my %codes;
- my @codetitles;
- my %cat_titles;
- my %cat_order;
- my %idlist;
- my %idnums;
- my %idlist_titles;
- my $totcodes = 0;
- my $jscript = '';
- my $loaditems = qq|
-function initialize_codes() {
- return;
-}
- |;
- unless ($helpform{'course'} eq 'no') {
- my $instcats = &Apache::lonnet::get_dom_instcats($codedom);
- if (ref($instcats) eq 'HASH') {
- if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') &&
- (ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) {
- %codes = %{$instcats->{'codes'}};
- @codetitles = @{$instcats->{'codetitles'}};
- %cat_titles = %{$instcats->{'cat_titles'}};
- %cat_order = %{$instcats->{'cat_order'}};
- $totcodes = scalar(keys(%codes));
- }
- if ($totcodes > 0) {
- 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]};
- my $knowncodes;
- if (($ccode ne '') && ($cnum ne '')) {
- my (%singlecodes,@singlecodetitles,%singlecat_titles,%singlecat_order);
- my $crscode_reply = &Apache::lonnet::auto_instcode_format($cnum,$codedom,{ $cnum => $ccode },\%singlecodes,
- \@singlecodetitles,\%singlecat_titles,\%singlecat_order);
- if (ref($singlecodes{$cnum}) eq 'HASH') {
- $knowncodes = $singlecodes{$cnum};
- }
- }
- $jscript .= &Apache::courseclassifier::courseset_js_start($formname,$longtitles_str,$allidlist);
- $jscript .= $scripttext;
- $jscript .= &Apache::courseclassifier::javascript_code_selections($formname,\@codetitles,$knowncodes,$sectionlist);
- $loaditems = '';
- }
- }
- }
- my %missing = &Apache::lonlocal::texthash(
- username => 'You must include a name.',
- phone => 'You must include a phone.',
- );
- &js_escape(\%missing);
- if (keys(%helpform)) {
- foreach my $key (keys(%helpform)) {
- if (($helpform{$key} eq 'req') && ($missing{$key} ne '')) {
- next if (($key eq 'username') && (($knownuser) ||
- (($env{'user.name'} =~ /^$match_username$/) && (!$public))));
- $extra_validations .= <<"END";
-
- if (document.$formname.$key.value == '') {
- alert("$missing{$key}");
- return;
- }
-
-END
- }
- }
- }
my $machine = &Apache::lonnet::absolute_url();
my $sourceurl = $machine.$origurl;
$server = $machine.&Apache::loncommon::cleanup_html($origurl);
@@ -235,7 +124,7 @@ END
name => 'Name',
subm => 'Submit Request',
emad => 'Your e-mail address',
- emac => 'Cc',
+ emac => 'Cc',
unme => 'username',
doma => 'domain',
entu => 'Enter the username you use to log-in to LON-CAPA',
@@ -254,7 +143,7 @@ END
subj => 'Subject',
detd => 'Detailed Description',
opfi => 'Optional file upload',
- uplf => 'Upload a file (e.g., a screenshot) relevant to your help request',
+ uplf => 'Upload a file (e.g., a screenshot) relevant to your help request (1 MB max.)',
fini => 'Finish',
clfm => 'Clear Form',
);
@@ -274,12 +163,21 @@ function validate() {
alert("$js_lt{'rdes'}.");
return;
}
- $extra_validations
document.logproblem.submit();
}
END
$scripttag .= &Apache::lonhtmlcommon::javascript_valid_email();
+ 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'}) {
@@ -296,6 +194,14 @@ END
$firstname = $env{'environment.firstname'};
}
}
+ my @sections = split(/,/,$sectionlist);
+ my %groupid;
+ foreach my $section (@sections) {
+ my ($sec,$grp) = split(/:/,$section);
+ $groupid{$sec} = $grp;
+ }
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['codedom',
+ 'useremail','useraccount']);
if ($env{'form.origurl'} eq '/adm/createaccount') {
if ($email eq '') {
if ($env{'form.useremail'} =~ /^[^\@]+\@[^\@]+$/) {
@@ -308,11 +214,57 @@ 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 $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
- if ($knownuser) {
- $js .="\n".'';
- } elsif ($recaptcha_version >=2) {
- $js.= "\n".''."\n";
- }
my %add_entries = (
style => "margin-top:0px;margin-bottom:0px;",
onload => "initialize_codes();",
@@ -347,117 +295,107 @@ ENDJS
if ($homeserver) {
$formtype = ' enctype="multipart/form-data"';
}
- my $topsubmit = ' ';
- my $shownsubmit;
$r->print('