--- loncom/interface/lonsupportreq.pm 2006/03/23 22:01:57 1.31
+++ loncom/interface/lonsupportreq.pm 2006/10/12 22:47:31 1.38
@@ -1,5 +1,5 @@
#
-# $Id: lonsupportreq.pm,v 1.31 2006/03/23 22:01:57 albertel Exp $
+# $Id: lonsupportreq.pm,v 1.38 2006/10/12 22:47:31 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,6 +35,11 @@ use Apache::Constants qw(:common);
use Apache::loncommon();
use Apache::lonnet;
use Apache::lonlocal;
+use Apache::lonacc();
+use Apache::courseclassifier;
+use lib '/home/httpd/lib/perl/';
+use LONCAPA;
+
sub handler {
my ($r) = @_;
@@ -46,10 +51,10 @@ sub handler {
}
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['origurl','function']);
if ($r->uri eq '/adm/helpdesk') {
- &Apache::loncommon::get_posted_cgi($r);
+ &Apache::lonacc::get_posted_cgi($r);
}
my $function = $env{'form.function'};
- my $origurl = &Apache::lonnet::unescape($env{'form.origurl'});
+ my $origurl = &unescape($env{'form.origurl'});
my $action = $env{'form.action'};
if ($action eq 'process') {
@@ -174,22 +179,27 @@ function initialize_codes() {
if ($cnum) {
$coursecodes{$cnum} = $ccode;
if ($ccode eq '') {
- $totcodes = &retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
+ $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
} else {
$coursecodes{$cnum} = $ccode;
$caller = $cnum;
$totcodes ++;
}
} else {
- $totcodes = &retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
+ $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;
- &build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles);
- &javascript_code_selections($formname,$numtypes,\%cat_titles,\$jscript,\%idlist,\%idnums,\%idlist_titles,\@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 = '';
}
}
@@ -197,12 +207,14 @@ function initialize_codes() {
my $js = '';
- my $add_entries =
- 'topmargin="0" marginheight="0" onLoad="initialize_codes()"',
+ my %add_entries = (topmargin => "0",
+ marginheight => "0",
+ onLoad =>"initialize_codes()",);
+
my $start_page =
&Apache::loncommon::start_page('Support Request',$js,
{ 'function' => $function,
- 'add_entries' => $add_entries,
+ 'add_entries' => \%add_entries,
'only_body' => 1,});
$r->print($start_page);
@@ -643,7 +655,6 @@ sub print_request_receipt {
my @loncvars = ('user.name','user.domain','request.course.sec','request.course.id');
my @cookievars = ('lonID');
- my $bodytag = &Apache::loncommon::bodytag('',$function,'topmargin="0" marginheight="0"',1);
my $admin = $Apache::lonnet::perlvar{'lonAdminMail'};
my $to = $Apache::lonnet::perlvar{'lonSupportEMail'};
my $from = $admin;
@@ -694,12 +705,18 @@ Date/Time: $reporttime
URL: $env{'form.sourceurl'}
Date/Time: $reporttime
|;
- my $html=&Apache::lonxml::xmlbegin();
- my $head = &Apache::loncommon::head('LON-CAPA support request recorded');
+
+ my $start_page =
+ &Apache::loncommon::start_page('Support request recorded',undef,
+ {'function' => $function,
+ 'add_entries' => {
+ topmargin => "0",
+ marginheight => "0",
+ },
+ 'only_body' => 1,});
+
$r->print(<<"END");
-$html
-$head
-$bodytag
+$start_page
@@ -963,408 +980,4 @@ Please review the information in "Log-in
return;
}
-sub retrieve_instcodes {
- my ($coursecodes,$codedom,$totcodes) = @_;
- my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.','.');
- foreach my $course (keys %courses) {
- if ($courses{$course} =~ m/^[^:]*:([^:]+)/) {
- $$coursecodes{$course} = &Apache::lonnet::unescape($1);
- $totcodes ++;
- }
- }
- return $totcodes;
-}
-
-sub build_code_selections {
- my ($codes,$codetitles,$cat_titles,$cat_order,$idlist,$idnums,$idlist_titles) = @_;
- my %idarrays = ();
- for (my $i=1; $i<@{$codetitles}; $i++) {
- %{$idarrays{$$codetitles[$i]}} = ();
- }
- foreach my $cid (sort keys %{$codes}) {
- &recurse_list($cid,$codetitles,$codes,0,\%idarrays);
- }
- for (my $num=0; $num<@{$codetitles}; $num++) {
- if ($num == 0) {
- my @contents = ();
- my @contents_titles = ();
- &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[0]}},\@contents);
- if (defined($$cat_titles{$$codetitles[0]})) {
- foreach (@contents) {
- push @contents_titles, $$cat_titles{$$codetitles[0]}{$_};
- }
- }
- $$idlist{$$codetitles[0]} = join('","',@contents);
- $$idnums{$$codetitles[0]} = scalar(@contents);
- if (defined($$cat_titles{$$codetitles[0]})) {
- $$idlist_titles{$$codetitles[0]} = join('","',@contents_titles);
- }
- } elsif ($num == 1) {
- %{$$idlist{$$codetitles[1]}} = ();
- %{$$idlist_titles{$$codetitles[1]}} = ();
- foreach my $key_a (keys %{$idarrays{$$codetitles[1]}}) {
- my @sorted_a = ();
- my @sorted_a_titles = ();
- &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[1]}{$key_a}},\@sorted_a);
- if (defined($$cat_titles{$$codetitles[1]})) {
- foreach (@sorted_a) {
- push @sorted_a_titles, $$cat_titles{$$codetitles[1]}{$_};
- }
- }
- $$idlist{$$codetitles[1]}{$key_a} = join('","',@sorted_a);
- $$idnums{$$codetitles[1]}{$key_a} = scalar(@sorted_a);
- if (defined($$cat_titles{$$codetitles[1]})) {
- $$idlist_titles{$$codetitles[1]}{$key_a} = join('","',@sorted_a_titles);
- }
- }
- } elsif ($num == 2) {
- %{$$idlist{$$codetitles[2]}} = ();
- %{$$idlist_titles{$$codetitles[2]}} = ();
- foreach my $key_a (keys %{$idarrays{$$codetitles[2]}}) {
- %{$$idlist{$$codetitles[2]}{$key_a}} = ();
- %{$$idlist_titles{$$codetitles[2]}{$key_a}} = ();
- foreach my $key_b (keys %{$idarrays{$$codetitles[2]}{$key_a}}) {
- my @sorted_b = ();
- my @sorted_b_titles = ();
- &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[2]}{$key_a}{$key_b}},\@sorted_b);
- if (defined($$cat_titles{$$codetitles[2]})) {
- foreach (@sorted_b) {
- push @sorted_b_titles, $$cat_titles{$$codetitles[2]}{$_};
- }
- }
- $$idlist{$$codetitles[2]}{$key_a}{$key_b} = join('","',@sorted_b);
- $$idnums{$$codetitles[2]}{$key_a}{$key_b} = scalar(@sorted_b);
- if (defined($$cat_titles{$$codetitles[2]})) {
- $$idlist_titles{$$codetitles[2]}{$key_a}{$key_b} = join('","',@sorted_b_titles);
- }
- }
- }
- } elsif ($num == 3) {
- %{$$idlist{$$codetitles[3]}} = ();
- foreach my $key_a (keys %{$idarrays{$$codetitles[3]}}) {
- %{$$idlist{$$codetitles[3]}{$key_a}} = ();
- foreach my $key_b (keys %{$idarrays{$$codetitles[3]}{$key_a}}) {
- %{$$idlist{$$codetitles[3]}{$key_a}{$key_b}} = ();
- foreach my $key_c (keys %{$idarrays{$$codetitles[3]}{$key_a}{$key_b}}) {
- my @sorted_c = ();
- my @sorted_c_titles = ();
- &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[3]}{$key_a}{$key_b}{$key_c}},\@sorted_c);
- if (defined($$cat_titles{$$codetitles[3]})) {
- foreach (@sorted_c) {
- push @sorted_c_titles, $$cat_titles{$$codetitles[3]}{$_};
- }
- }
- $$idlist{$$codetitles[3]}{$key_a}{$key_b}{$key_c} = join('","',@sorted_c);
- $$idnums{$$codetitles[3]}{$key_a}{$key_b}{$key_c} = scalar(@sorted_c);
- if (defined($$cat_titles{$$codetitles[3]})) {
- $$idlist_titles{$$codetitles[2]}{$key_a}{$key_b} = join('","',@sorted_c_titles);
- }
- }
- }
- }
- } elsif ($num == 4) {
- %{$$idlist{$$codetitles[4]}} = ();
- foreach my $key_a (keys %{$idarrays{$$codetitles[4]}}) {
- %{$$idlist{$$codetitles[4]}{$key_a}} = ();
- foreach my $key_b (keys %{$idarrays{$$codetitles[4]}{$key_a}}) {
- %{$$idlist{$$codetitles[4]}{$key_a}{$key_b}} = ();
- foreach my $key_c (keys %{$idarrays{$$codetitles[4]}{$key_a}{$key_b}}) {
- %{$$idlist{$$codetitles[4]}{$key_a}{$key_b}{$key_c}} = ();
- foreach my $key_d (keys %{$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}}) {
- my @sorted_d = ();
- my @sorted_d_titles = ();
- &sort_cats($num,$cat_order,$codetitles,$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d},\@sorted_d);
- if (defined($$cat_titles{$$codetitles[4]})) {
- foreach (@sorted_d) {
- push @sorted_d_titles, $$cat_titles{$$codetitles[4]}{$_};
- }
- }
- $$idlist{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d} = join('","',@sorted_d);
- $$idnums{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d} = scalar(@sorted_d);
- }
- }
- }
- }
- }
- }
-}
-
-sub sort_cats {
- my ($num,$cat_order,$codetitles,$idsarrayref,$sorted) = @_;
- my @unsorted = @{$idsarrayref};
- if (defined($$cat_order{$$codetitles[$num]})) {
- foreach (@{$$cat_order{$$codetitles[$num]}}) {
- if (grep/^$_$/,@unsorted) {
- push @{$sorted}, $_;
- }
- }
- } else {
- @{$sorted} = sort (@unsorted);
- }
-}
-
-
-sub recurse_list {
- my ($cid,$codetitles,$codes,$num,$idarrays) = @_;
- if ($num == 0) {
- if (!grep/^$$codes{$cid}{$$codetitles[0]}$/,@{$$idarrays{$$codetitles[0]}}) {
- push @{$$idarrays{$$codetitles[0]}}, $$codes{$cid}{$$codetitles[0]};
- }
- } elsif ($num == 1) {
- if (defined($$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}})) {
- if (!grep/^$$codes{$cid}{$$codetitles[1]}$/,@{$$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}}}) {
- push @{$$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}}}, $$codes{$cid}{$$codetitles[1]};
- }
- } else {
- @{$$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}}} = ("$$codes{$cid}{$$codetitles[1]}");
- }
- } elsif ($num == 2) {
- if (defined($$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}})) {
- if (defined($$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}})) {
- if (!grep/^$$codes{$cid}{$$codetitles[2]}$/,@{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}}) {
- push @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}}, $$codes{$cid}{$$codetitles[2]};
- }
- } else {
- @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ("$$codes{$cid}{$$codetitles[2]}");
- }
- } else {
- %{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}} = ();
- @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ("$$codes{$cid}{$$codetitles[2]}");
- }
- } elsif ($num == 3) {
- if (defined($$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}})) {
- if (defined($$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}})) {
- if (defined($$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}})) {
- if (!grep/^$$codes{$cid}{$$codetitles[3]}$/,@{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}}) {
- push @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}}, $$codes{$cid}{$$codetitles[3]};
- }
- } else {
- @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ("$$codes{$cid}{$$codetitles[3]}");
- }
- } else {
- %{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
- @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ("$$codes{$cid}{$$codetitles[3]}");
- }
- } else {
- %{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}} = ();
- %{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
- @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ("$$codes{$cid}{$$codetitles[3]}");
- }
- } elsif ($num == 4) {
- if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}})) {
- if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}})) {
- if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}})) {
- if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}})) {
- if (!grep/^$$codes{$cid}{$$codetitles[4]}$/,@{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}}) {
- push @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}}, $$codes{$cid}{$$codetitles[4]};
- }
- } else {
- @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[4]}");
- }
- } else {
- %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ();
- @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[4]}");
- }
- } else {
- %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
- %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ();
- @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[4]}");
- }
- } else {
- %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}} = ();
- %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
- %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ();
- @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[3]}");
- }
- }
- $num ++;
- if ($num <@{$codetitles}) {
- &recurse_list($cid,$codetitles,$codes,$num,$idarrays);
- }
-}
-
-sub javascript_code_selections {
- my ($formname,$numcats,$cat_titles,$script_tag,$idlist,$idnums,$idlist_titles,$codetitles) = @_;
- my $numtitles = @{$codetitles};
- my @seltitles = ();
- for (my $j=0; $j<$numtitles; $j++) {
- $seltitles[$j] = 'id'.$$codetitles[$j];
- }
- my $seltitle_str = join('","',@seltitles);
- my @longtitles = ();
- for (my $i=0; $i<$numtitles; $i++) {
- if (defined($$cat_titles{$$codetitles[$i]})) {
- $longtitles[$i] = 1;
- } else {
- $longtitles[$i] = 0;
- }
- }
- my $longtitles_str = join('","',@longtitles);
- $$script_tag .= <