[LON-CAPA-cvs] cvs: loncom /interface lonsupportreq.pm

raeburn raeburn at source.lon-capa.org
Wed Apr 18 13:30:24 EDT 2012


raeburn		Wed Apr 18 17:30:24 2012 EDT

  Modified files:              
    /loncom/interface	lonsupportreq.pm 
  Log:
  - xhtml.
  - Use default enctype for form unless user has authenticated, in which case
    set to multipart/form-data, since ability to upload screenshot file is
    available for authenticated users.
  
  
-------------- next part --------------
Index: loncom/interface/lonsupportreq.pm
diff -u loncom/interface/lonsupportreq.pm:1.66 loncom/interface/lonsupportreq.pm:1.67
--- loncom/interface/lonsupportreq.pm:1.66	Thu Mar  3 17:29:29 2011
+++ loncom/interface/lonsupportreq.pm	Wed Apr 18 17:30:24 2012
@@ -1,5 +1,5 @@
 #
-# $Id: lonsupportreq.pm,v 1.66 2011/03/03 17:29:29 bisitz Exp $
+# $Id: lonsupportreq.pm,v 1.67 2012/04/18 17:30:24 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -72,7 +72,7 @@
     my ($r,$origurl,$function) = @_;
     my ($os,$browser,$bversion,$uhost,$uname,$udom,$uhome,$urole,$usec,$email,$cid,
         $cdom,$cnum,$ctitle,$ccode,$sectionlist,$lastname,$firstname,$server,
-        $formname,$public);
+        $formname,$public,$homeserver);
     $function = &Apache::loncommon::get_users_function() if (!$function);
     $ccode = '';
     $os = $env{'browser.os'};
@@ -82,13 +82,23 @@
     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'};
-    $urole = $env{'request.role'};
-    $usec = $env{'request.course.sec'};
-    $cid = $env{'request.course.id'};
     $formname = 'logproblem';
     my $machine = &Apache::lonnet::absolute_url();
     if ($origurl =~ m-^https?://-) {
@@ -159,18 +169,20 @@
         $sectionlist = $csettings{'internal.sectionnums'};
     }
 
-    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'};
+    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;
@@ -243,11 +255,19 @@
         }
     }
 	
-    my $js = '<script type="text/javascript">'."\n$scripttag\n$jscript\n".
-	     $loaditems.'</script>';
-    my %add_entries = (topmargin    => "0",
-		       marginheight => "0",
-		       onLoad       =>"initialize_codes()",);
+    my $js = <<"ENDJS";
+<script type="text/javascript">
+// <![CDATA[
+$scripttag
+$jscript
+$loaditems
+// ]]>
+</script>
+ENDJS
+    my %add_entries = (
+                       style    => "margin-top:0px;margin-bottom:0px;",
+                       onload   => "initialize_codes();",
+                      );
 
     
     $r->print(&Apache::loncommon::start_page('Support Request',$js,
@@ -260,20 +280,24 @@
     my @css = ('LC_evenrow_value','LC_oddrow_value');
     my $num = 1;
     my $i = $num%2;
-    $r->print('<form method="post" name="logproblem" enctype="multipart/form-data">'."\n");
+    my $formtype;
+    if ($homeserver) {
+        $formtype = ' enctype="multipart/form-data"';
+    }
+    $r->print('<form method="post" action="" name="logproblem"'.$formtype.'>'."\n");
     my $output = &Apache::lonhtmlcommon::start_pick_box().
                  &Apache::lonhtmlcommon::row_title($lt{'name'},undef,$css[$num])."\n";
     my $fullname = '';
     if ((defined($lastname) && $lastname ne '') && (defined($firstname) && $firstname ne '')) {
         $fullname = "$firstname $lastname"; 
-        $output .= $fullname.'<input type="hidden" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />';
+        $output .= $fullname.'<input type="hidden" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />'."\n";
     } else {
         if (defined($firstname) && $firstname ne '') {
             $fullname = $firstname;
         } elsif (defined($lastname) && $lastname ne '') {
             $fullname = " $lastname";
         }
-        $output .= '<input type="text" size="20" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />';
+        $output .= '<input type="text" size="20" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />'."\n";
     }
     $output .= '     <input type="button" value="'.$lt{'subm'}.'" onclick="validate()" /> '.
                 &Apache::lonhtmlcommon::row_closure()."\n";
@@ -286,17 +310,19 @@
     $num ++;
     $i = $num%2;
     if (($env{'user.name'} =~ /^$match_username$/) && (!$public)) {
-        $output .= &Apache::lonhtmlcommon::row_title($lt{'emac'},undef,$css[$i]).
-                   '<input type="text" size="50" name="cc" value="" /><br />'."\n".
-                   &Apache::lonhtmlcommon::row_closure();
-        $num ++;
-        $i = $num%2;
+        if ($homeserver) { 
+            $output .= &Apache::lonhtmlcommon::row_title($lt{'emac'},undef,$css[$i]).
+                       '<input type="text" size="50" name="cc" value="" /><br />'."\n".
+                       &Apache::lonhtmlcommon::row_closure();
+            $num ++;
+            $i = $num%2;
+        }
     }
     $output .= &Apache::lonhtmlcommon::row_title("$lt{'unme'}/$lt{'doma'}",undef,$css[$i]);
     my $udom_input = '<input type="hidden" name="udom" value="'.
-                     &HTML::Entities::encode($udom,'"<>&').'" />';
+                     &HTML::Entities::encode($udom,'"<>&').'" />'."\n";
     my $uname_input = '<input type="hidden" name="uname" value="'.
-                      &HTML::Entities::encode($uname,'"<>&').'" />'; 
+                      &HTML::Entities::encode($uname,'"<>&').'" />'."\n"; 
     if (($env{'user.name'} =~ /^$match_username$/) && 
         ($env{'user.domain'} =~ /^$match_domain$/) && (!$public)) {
         $output .= '<i>'.$lt{'unme'}.'</i>: '.$uname.'  <i>'.$lt{'doma'}.'</i>: '.$udom.$udom_input.$uname_input;
@@ -310,7 +336,7 @@
         } else {
             $output .= $lt{'entr'};
         }
-        $output .= '<br />';
+        $output .= '<br />'."\n";
         if (!$public) {
             if ($env{'user.domain'} =~ /^$match_domain$/) {
                 $udomform = '<i>'.$lt{'doma'}.'</i>: '.$udom.$udom_input;
@@ -320,7 +346,7 @@
         }
         if ($udomform eq '') {
             $udomform = '<i>'.$lt{'doma'}.'</i>: ';
-            $udomform .= &Apache::loncommon::select_dom_form($codedom,'udom');
+            $udomform .= &Apache::loncommon::select_dom_form($codedom,'udom')."\n";
         }
         if ($unameform eq '') {
             $unameform= '<i>'.$lt{'unme'}.'</i>: <input type="text" size="20" name="uname" value="'.$uname.'" />  ';
@@ -331,11 +357,11 @@
     $num ++;
     $i = $num%2;
     $output .= &Apache::lonhtmlcommon::row_title("$lt{'urlp'}",undef,$css[$i]).
-               $showserver.'<input type="hidden" name="sourceurl" value="'.
-               &HTML::Entities::encode($server,'"<>&').'" />'.
+               $showserver."\n".'<input type="hidden" name="sourceurl" value="'.
+               &HTML::Entities::encode($server,'"<>&').'" />'."\n".
                &Apache::lonhtmlcommon::row_closure().
                &Apache::lonhtmlcommon::row_title("$lt{'phon'}",undef,'LC_evenrow_value').
-               '<input type="text" size="15" name="phone" /><br />'.
+               '<input type="text" size="15" name="phone" /><br />'."\n".
                &Apache::lonhtmlcommon::row_closure();
     $num ++;
     $i = $num%2; 
@@ -345,17 +371,17 @@
             foreach my $item (@codetitles) {
                 $output .= '<i>'.$item.'</i>: '.$codes{$cnum}{$item}.'; ';
             }
-            $output .= ' <input type="hidden" name="coursecode" value="'.&HTML::Entities::encode($coursecodes{$cnum},'"<>&').'" />';
+            $output .= ' <input type="hidden" name="coursecode" value="'.&HTML::Entities::encode($coursecodes{$cnum},'"<>&').'" />'."\n";
         } else {
             $output .= $lt{'enin'}.': 
-                  <input type="text" name="coursecode" size="15" value="" />';
+                  <input type="text" name="coursecode" size="15" value="" />'."\n";
         }
     } else {
         if ($totcodes > 0) {
             my $numtitles = @codetitles;
             if ($numtitles == 0) {
                 $output .= $lt{'enin'}.': 
-                  <input type="text" name="coursecode" size="15" value="" />';
+                  <input type="text" name="coursecode" size="15" value="" />'."\n";
             } else {
                 my @standardnames = &Apache::loncommon::get_standard_codeitems();
                 my $lasttitle = $numtitles;
@@ -364,7 +390,7 @@
                 } 
                 $output .= '<table><tr><td>'.$codetitles[0].'<br />'."\n".
                       '<select name="'.$standardnames[0].'" onchange="courseSet('."'$codetitles[0]'".')">'."\n".
-                      ' <option value="-1" />'.$lt{'sele'}."\n";
+                      ' <option value="-1">'.$lt{'sele'}."</option>\n";
                 my @items = ();
                 my @longitems = ();
                 if ($idlist{$codetitles[0]} =~ /","/) {
@@ -407,7 +433,7 @@
             }
         } else {
             $output .= $lt{'enin'}.': 
-                  <input type="text" name="coursecode" size="15" value="" />';
+                  <input type="text" name="coursecode" size="15" value="" />'."\n";
         }
     }
     if ($ctitle) {
@@ -438,7 +464,7 @@
         }
         $output .= "</select>";
     } else {
-        $output .= '<input type="text" name="section" size="10" />';
+        $output .= '<input type="text" name="section" size="10" />'."\n";
     }
     $output .= &Apache::lonhtmlcommon::row_closure();
     $num ++;
@@ -447,16 +473,20 @@
                '  <input type="text" size="40" name="subject" />'."\n".
                &Apache::lonhtmlcommon::row_closure().
                &Apache::lonhtmlcommon::row_title($lt{'detd'},undef,'LC_evenrow_value').
-               '  <textarea rows="10" cols="45" name="description" wrap="virtual"></textarea>'.
+               '  <textarea rows="10" cols="45" name="description" style="word-wrap:normal;">'.
+               '</textarea>'."\n".
                &Apache::lonhtmlcommon::row_closure();
     $num ++;
     $i = $num%2; 
     if (($env{'user.name'} =~ /^$match_username$/) && (!$public)) {
-        $output .= &Apache::lonhtmlcommon::row_title($lt{'opfi'},undef,$css[$i]).
-                   ' <input type="file" name="screenshot" size="20" /><br />'.$lt{'uplf'}."\n".
-        &Apache::lonhtmlcommon::row_closure();
-        $num ++;
-        $i = $num%2; 
+        if ($homeserver) {
+            $output .= &Apache::lonhtmlcommon::row_title($lt{'opfi'},undef,$css[$i]).
+                       ' <input type="file" name="screenshot" size="20" /><br />'.
+                       "\n".$lt{'uplf'}."\n".
+                       &Apache::lonhtmlcommon::row_closure();
+            $num ++;
+            $i = $num%2;
+        }
     }
     $output .= &Apache::lonhtmlcommon::row_title($lt{'fini'},undef,$css[$i]);
     $output .= <<END;
@@ -565,8 +595,17 @@
                  adin        => 'Additional information recorded',
     );
 
-    my (@ok_ccs, at bad_ccs,$badccmsg,$okcclist);
-    if ((defined($env{'user.name'})) && (defined($env{'form.cc'}))) {
+    my (@ok_ccs, at bad_ccs,$badccmsg,$okcclist,$public,$homeserver);
+    if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) {
+        $public = 1;
+    } else {
+        if (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')) {
+            $homeserver = &Apache::lonnet::homeserver($env{'user.name'},
+                                                      $env{'user.domain'});
+        }
+    }
+
+    if (($homeserver) && (defined($env{'form.cc'}))) {
         my @ccs;
         if ($env{'form.cc'} =~ /,/) {
             @ccs = split(/,/,$env{'form.cc'});
@@ -729,7 +768,7 @@
     my $attachmentsize = '';
     if ((defined($env{'user.name'})) && ($env{'user.name'} ne 'public')
         && ($env{'user.domain'} ne 'public')) {
-        if ($env{'form.screenshot.filename'}) {
+        if ($homeserver && $env{'form.screenshot.filename'}) {
             $attachmentsize = length($env{'form.screenshot'});
             if ($attachmentsize > 131072) {
                 $displaymsg .= '<br />'.&mt('The uploaded screenshot file ([_1] bytes) included with your request exceeded the maximum allowed size - 128 KB, and has therefore been discarded.',$attachmentsize);
@@ -772,9 +811,11 @@
                  Type    =>'TEXT',
                  Data    => $supportmsg,
                  );
-    if (@ok_ccs > 0) {
-        my $cc_string = join(', ', at ok_ccs);
-        $msg->add("Cc" => $cc_string);
+    if ($homeserver) {
+        if (@ok_ccs > 0) {
+            my $cc_string = join(', ', at ok_ccs);
+            $msg->add("Cc" => $cc_string);
+        }
     }
     if ($bcc ne '') {
         $msg->add("Bcc" => $bcc);
@@ -782,7 +823,7 @@
     $msg->attr("content-type"         => "text/plain");
     $msg->attr("content-type.charset" => "UTF-8");
 
-    if ($attachmentpath) {
+    if ($homeserver && $attachmentpath) {
         my ($type, $encoding) = MIME::Types::by_suffix($attachmentpath);
         $msg->attach(Type     => $type,
                      Path     => $attachmentpath,
@@ -855,11 +896,14 @@
         $helpdesk_link = '<a href="/adm/helpdesk">';
     }
     my %lt = &Apache::lonlocal::texthash (
-                                           login => 'Log-in help',
-                                           ask   => 'Ask helpdesk',
-                                           getst => 'Getting started guide',
-                                           back =>  'Back to last location',
+                                           login    => 'Log-in help',
+                                           ask      => 'Ask helpdesk',
+                                           getst    => 'Getting started guide',
+                                           back     =>  'Back to last location',
                                            headline => 'help/support',
+                                           stud     => 'Students',
+                                           ifyo     => 'If your problem is still unresolved, the form below can be used to send a question to the LON-CAPA helpdesk.',
+                                           cont     => 'Contact your instructor instead.',
                                          );
     my ($getstartlink,$reviewtext);
     if (-e $Apache::lonnet::perlvar{'lonDocRoot'}.'/adm/gettingstarted.html') {
@@ -871,39 +915,44 @@
     if ($origurl eq '') {
         $origurl = 'javascript:history.go(-1)';
     }
-    $r->print(<<END);
-<table width="620" border="0" cellspacing="0" cellpadding="0" height="55">   <tr height="50">    <td width='5'> </td>
-   <td>
+    $r->print(<<"END");
+<table width="620" border="0" cellspacing="0" cellpadding="0" style="height: 55px;">
+ <tr>
+   <td width="5" height="50"> </td>
+   <td height="50">
     <fieldset>
       <legend>
-        <img src="$location/lonIcons/minilogo.gif" height="20" width="29" valign="bottom" />
+        <img src="$location/lonIcons/minilogo.gif" height="20" width="29" alt="logo" style="vertical-align:bottom" />
         LON-CAPA $lt{'headline'}
       </legend>
  <table id="LC_helpmenu_links">
    <tr>
-    <td align="center"><span class="LC_nobreak"><img src="$location/help/help.png" border="0" alt="($lt{'login'})" valign="middle" /> <b><a href="/adm/loginproblems.html">$lt{'login'}</a></b> </span></td>
-    <td align="center"><span class="LC_nobreak"> <b>$helpdesk_link<img src="$location/lonIcons/helpdesk.gif" border="0" alt="($lt{'ask'})" valign="middle" /> $lt{'ask'}</a></b> </span></td>$getstartlink
-    <td align="center"><span class="LC_nobreak"> <b><a href="$origurl" target="_top"><img src="$location/lonIcons/move_up.gif" border="0" alt="($lt{'back'})" valign="middle" /> $lt{'back'}</a></b> </span></td>
+    <td align="center"><span class="LC_nobreak"><img src="$location/help/help.png" border="0" alt="($lt{'login'})" style="vertical-align:middle" /> <b><a href="/adm/loginproblems.html">$lt{'login'}</a></b> </span></td>
+    <td align="center"><span class="LC_nobreak"> <b>$helpdesk_link<img src="$location/lonIcons/helpdesk.gif" border="0" alt="($lt{'ask'})" style="vertical-align:middle" /> $lt{'ask'}</a></b> </span></td>$getstartlink
+    <td align="center"><span class="LC_nobreak"> <b><a href="$origurl" target="_top"><img src="$location/lonIcons/move_up.gif" border="0" alt="($lt{'back'})" style="vertical-align:middle" /> $lt{'back'}</a></b> </span></td>
    </tr>
  </table>
 </fieldset>
   </td>
-  <td width='5'> </td>
+  <td width="5"> </td>
  </tr>
- <tr height='5'>
-  <td colspan='3' height='5'> </td>
+ <tr>
+  <td colspan="3" height="5"> </td>
  </tr>
 END
     if  ($command ne 'process') {
-        $r->print('
+        my $stuwarn = &mt('Do [_1]not[_2] use this form to ask about course content.',
+                          '<b>','</b>');
+        $r->print(<<"END");
  <tr>
-  <td colspan="3">'.$reviewtext.' '
-.&mt('If your problem is still unresolved, the form below can be used to send a question to the LON-CAPA helpdesk.').'<br />'
-.'<font size="-1"><b>'.&mt('Students').'</b>: '.&mt('Do <b>not</b> use this form to ask questions about course content.').' '
-.&mt('Contact your instructor instead.')
-.'</font><br /><br />
+  <td colspan="3">$reviewtext 
+  $lt{'ifyo'}<br />
+<span style="font-size:90%;"><b>$lt{'stud'}</b>: 
+$stuwarn $lt{'cont'}</span>
+<br /><br />
   </td>
- </tr>');
+ </tr>
+END
     }
     $r->print('
 </table>');


More information about the LON-CAPA-cvs mailing list