Diff for /loncom/interface/loncommon.pm between versions 1.692.4.1 and 1.692.4.5

version 1.692.4.1, 2009/05/19 00:16:11 version 1.692.4.5, 2009/08/14 03:50:09
Line 406  sub studentbrowser_javascript { Line 406  sub studentbrowser_javascript {
          || ($env{'request.role'}=~/^(au|dc|su)/)           || ($env{'request.role'}=~/^(au|dc|su)/)
           ) { return ''; }              ) { return ''; }  
    return (<<'ENDSTDBRW');     return (<<'ENDSTDBRW');
 <script type="text/javascript" language="Javascript" >  <script type="text/javascript" language="Javascript">
   // <![CDATA[
     var stdeditbrowser;      var stdeditbrowser;
     function openstdbrowser(formname,uname,udom,roleflag,ignorefilter) {      function openstdbrowser(formname,uname,udom,roleflag,ignorefilter,courseadvonly) {
         var url = '/adm/pickstudent?';          var url = '/adm/pickstudent?';
         var filter;          var filter;
  if (!ignorefilter) {   if (!ignorefilter) {
Line 422  sub studentbrowser_javascript { Line 423  sub studentbrowser_javascript {
         url += 'form=' + formname + '&unameelement='+uname+          url += 'form=' + formname + '&unameelement='+uname+
                                     '&udomelement='+udom;                                      '&udomelement='+udom;
  if (roleflag) { url+="&roles=1"; }   if (roleflag) { url+="&roles=1"; }
           if (courseadvonly) { url+="&courseadvonly=1"; }
         var title = 'Student_Browser';          var title = 'Student_Browser';
         var options = 'scrollbars=1,resizable=1,menubar=0';          var options = 'scrollbars=1,resizable=1,menubar=0';
         options += ',width=700,height=600';          options += ',width=700,height=600';
         stdeditbrowser = open(url,title,options,'1');          stdeditbrowser = open(url,title,options,'1');
         stdeditbrowser.focus();          stdeditbrowser.focus();
     }      }
   // ]]>
 </script>  </script>
 ENDSTDBRW  ENDSTDBRW
 }  }
   
 sub selectstudent_link {  sub selectstudent_link {
    my ($form,$unameele,$udomele)=@_;     my ($form,$unameele,$udomele,$courseadvonly)=@_;
      my $callargs = "'".$form."','".$unameele."','".$udomele."'";
    if ($env{'request.course.id'}) {       if ($env{'request.course.id'}) {  
        if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'})         if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'})
    && !&Apache::lonnet::allowed('srm',$env{'request.course.id'}.     && !&Apache::lonnet::allowed('srm',$env{'request.course.id'}.
  '/'.$env{'request.course.sec'})) {   '/'.$env{'request.course.sec'})) {
    return '';     return '';
        }         }
        return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.         if ($courseadvonly)  {
         '","'.$udomele.'");'."'>".&mt('Select User')."</a>";             $callargs .= ",'',1,1";
          }
          return '<span class="LC_nobreak">'.
                 '<a href="javascript:openstdbrowser('.$callargs.');">'.
                 &mt('Select User').'</a></span>';
    }     }
    if ($env{'request.role'}=~/^(au|dc|su)/) {     if ($env{'request.role'}=~/^(au|dc|su)/) {
        return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.         $callargs .= ",1";
         '","'.$udomele.'",1);'."'>".&mt('Select User')."</a>";         return '<span class="LC_nobreak">'.
                 '<a href="javascript:openstdbrowser('.$callargs.');">'.
                 &mt('Select User').'</a></span>';
    }     }
    return '';     return '';
 }  }
Line 453  sub selectstudent_link { Line 463  sub selectstudent_link {
 sub authorbrowser_javascript {  sub authorbrowser_javascript {
     return <<"ENDAUTHORBRW";      return <<"ENDAUTHORBRW";
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 var stdeditbrowser;  var stdeditbrowser;
   
 function openauthorbrowser(formname,udom) {  function openauthorbrowser(formname,udom) {
Line 464  function openauthorbrowser(formname,udom Line 475  function openauthorbrowser(formname,udom
     stdeditbrowser = open(url,title,options,'1');      stdeditbrowser = open(url,title,options,'1');
     stdeditbrowser.focus();      stdeditbrowser.focus();
 }  }
   // ]]>
 </script>  </script>
 ENDAUTHORBRW  ENDAUTHORBRW
 }  }
Line 473  sub coursebrowser_javascript { Line 484  sub coursebrowser_javascript {
     my ($domainfilter,$sec_element,$formname)=@_;      my ($domainfilter,$sec_element,$formname)=@_;
     my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Group - for which you wish to add/modify a user role');      my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Group - for which you wish to add/modify a user role');
    my $output = '     my $output = '
 <script type="text/javascript">  <script type="text/javascript" language="JavaScript">
   // <![CDATA[
     var stdeditbrowser;'."\n";      var stdeditbrowser;'."\n";
    $output .= <<"ENDSTDBRW";     $output .= <<"ENDSTDBRW";
     function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) {      function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) {
Line 556  ENDSTDBRW Line 568  ENDSTDBRW
         $output .= &setsec_javascript($sec_element,$formname);          $output .= &setsec_javascript($sec_element,$formname);
     }      }
     $output .= '      $output .= '
   // ]]>
 </script>';  </script>';
     return $output;      return $output;
 }  }
Line 602  function setSect(sectionlist) { Line 615  function setSect(sectionlist) {
   
 sub selectcourse_link {  sub selectcourse_link {
    my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_;     my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_;
    return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele.     return '<span class="LC_nobreak">'
         '","'.$udomele.'","'.$desc.'","'.$extra_element.'","'.$multflag.'","'.$selecttype.'");'."'>".&mt('Select Course')."</a>";           ."<a href='"
            .'javascript:opencrsbrowser("'.$form.'","'.$unameele
            .'","'.$udomele.'","'.$desc.'","'.$extra_element
            .'","'.$multflag.'","'.$selecttype.'");'
            ."'>".&mt('Select Course').'</a>'
            .'</span>';
 }  }
   
 sub selectauthor_link {  sub selectauthor_link {
Line 710  sub select_datelocale { Line 728  sub select_datelocale {
     return $output;      return $output;
 }  }
   
   sub select_language {
       my ($name,$selected,$includeempty) = @_;
       my %langchoices;
       if ($includeempty) {
           %langchoices = ('' => 'No language preference');
       }
       foreach my $id (&languageids()) {
           my $code = &supportedlanguagecode($id);
           if ($code) {
               $langchoices{$code} = &plainlanguagedescription($id);
           }
       }
       return &select_form($selected,$name,%langchoices);
   }
   
 =pod  =pod
   
 =item * &linked_select_forms(...)  =item * &linked_select_forms(...)
Line 796  sub linked_select_forms { Line 829  sub linked_select_forms {
     my $first = "document.$formname.$firstselectname";      my $first = "document.$formname.$firstselectname";
     # output the javascript to do the changing      # output the javascript to do the changing
     my $result = '';      my $result = '';
     $result.="<script type=\"text/javascript\">\n";      $result.='<script type="text/javascript" language="JavaScript">'."\n";
       $result.="// <![CDATA[\n";
     $result.="var select2data = new Object();\n";      $result.="var select2data = new Object();\n";
     $" = '","';      $" = '","';
     my $debug = '';      my $debug = '';
Line 842  function select1_changed() { Line 876  function select1_changed() {
         }          }
     }      }
 }  }
   // ]]>
 </script>  </script>
 END  END
     # output the initial values for the selection lists      # output the initial values for the selection lists
Line 932  sub help_open_topic { Line 967  sub help_open_topic {
     # Add the graphic      # Add the graphic
     my $title = &mt('Online Help');      my $title = &mt('Online Help');
     my $helpicon=&lonhttpdurl("/adm/help/help.png");      my $helpicon=&lonhttpdurl("/adm/help/help.png");
     $template .= <<"ENDTEMPLATE";      $template .= '<a target="_top" href="'.$link.'" title="'.$title.'">'.
  <a target="_top" href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help: $topic)" /></a>                   '<img src="'.$helpicon.'" border="0" alt="'.&mt('Help: [_1]',$topic).
 ENDTEMPLATE                   '" title="'.$title.'" /></a>';
     if ($text ne '') { $template.='</span></td></tr></table>' };      if ($text ne '') {
           $template.='</span></td></tr></table>';
       }
     return $template;      return $template;
   
 }  }
Line 943  ENDTEMPLATE Line 980  ENDTEMPLATE
 # This is a quicky function for Latex cheatsheet editing, since it   # This is a quicky function for Latex cheatsheet editing, since it 
 # appears in at least four places  # appears in at least four places
 sub helpLatexCheatsheet {  sub helpLatexCheatsheet {
     my $other = shift;      my ($topic,$text,$not_author) = @_;
       my $out;
     my $addOther = '';      my $addOther = '';
     if ($other) {      if ($topic) {
  $addOther = Apache::loncommon::help_open_topic($other, shift,   $addOther = &Apache::loncommon::help_open_topic($topic,$text,
        undef, undef, 600) .         undef, undef, 600) .
    '</td><td>';     '</td><td>';
     }      }
     return '<table><tr><td>'.      $out = '<table><tr><td>'.
  $addOther .             $addOther .
  &Apache::loncommon::help_open_topic("Greek_Symbols",&mt('Greek Symbols'),             &Apache::loncommon::help_open_topic("Greek_Symbols",&mt('Greek Symbols'),
     undef,undef,600)                                                 undef,undef,600).
  .'</td><td>'.             '</td><td>'.
  &Apache::loncommon::help_open_topic("Other_Symbols",&mt('Other Symbols'),             &Apache::loncommon::help_open_topic("Other_Symbols",&mt('Other Symbols'),
     undef,undef,600)                                                 undef,undef,600).
  .'</td><td>'.             '</td>';
  &Apache::loncommon::help_open_topic("Authoring_Output_Tags",&mt('Output Tags'),      unless ($not_author) {
                                     undef,undef,600)          $out .= '<td>'.
  .'</td></tr></table>';                  &Apache::loncommon::help_open_topic("Authoring_Output_Tags",&mt('Output Tags'),
                                                       undef,undef,600).
                   '</td>';
       }
       $out .= '</tr></table>';
       return $out;
 }  }
   
 sub general_help {  sub general_help {
Line 987  sub update_help_link { Line 1030  sub update_help_link {
     my $banner_link = "/adm/helpmenu?page=banner&amp;topic=$topic&amp;component_help=$component_help&amp;faq=$faq&amp;bug=$bug&amp;origurl=$origurl&amp;stamp=$timestamp&amp;stayonpage=$stayOnPage";      my $banner_link = "/adm/helpmenu?page=banner&amp;topic=$topic&amp;component_help=$component_help&amp;faq=$faq&amp;bug=$bug&amp;origurl=$origurl&amp;stamp=$timestamp&amp;stayonpage=$stayOnPage";
     my $output .= <<"ENDOUTPUT";      my $output .= <<"ENDOUTPUT";
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 banner_link = '$banner_link';  banner_link = '$banner_link';
   // ]]>
 </script>  </script>
 ENDOUTPUT  ENDOUTPUT
     return $output;      return $output;
Line 1359  sub resize_textarea_js { Line 1404  sub resize_textarea_js {
     my $geometry = &viewport_geometry_js();      my $geometry = &viewport_geometry_js();
     return <<"RESIZE";      return <<"RESIZE";
     <script type="text/javascript">      <script type="text/javascript">
   // <![CDATA[
 $geometry  $geometry
   
 function getX(element) {  function getX(element) {
Line 1397  function resize_textarea(textarea_id,bot Line 1443  function resize_textarea(textarea_id,bot
     }      }
     textarea.style.height=new_height+'px';      textarea.style.height=new_height+'px';
 }  }
   // ]]>
 </script>  </script>
 RESIZE  RESIZE
   
Line 1629  sub multiple_select_form { Line 1676  sub multiple_select_form {
             $size = scalar(keys(%$hash));              $size = scalar(keys(%$hash));
         }          }
     }      }
     $output.="\n<select name='$name' size='$size' multiple='1'>";      $output.="\n".'<select name="'.$name.'" size="'.$size.'" multiple="multiple">';
     my @order;      my @order;
     if (ref($order) eq 'ARRAY')  {      if (ref($order) eq 'ARRAY')  {
         @order = @{$order};          @order = @{$order};
Line 1686  sub select_form { Line 1733  sub select_form {
 sub display_filter {  sub display_filter {
     if (!$env{'form.show'}) { $env{'form.show'}=10; }      if (!$env{'form.show'}) { $env{'form.show'}=10; }
     if (!$env{'form.displayfilter'}) { $env{'form.displayfilter'}='currentfolder'; }      if (!$env{'form.displayfilter'}) { $env{'form.displayfilter'}='currentfolder'; }
     return '<nobr><label>'.&mt('Records [_1]',      return '<span class="LC_nobreak"><label>'.&mt('Records [_1]',
        &Apache::lonmeta::selectbox('show',$env{'form.show'},undef,         &Apache::lonmeta::selectbox('show',$env{'form.show'},undef,
    (&mt('all'),10,20,50,100,1000,10000))).     (&mt('all'),10,20,50,100,1000,10000))).
    '</label></nobr> <nobr>'.     '</label></span> <span class="LC_nobreak">'.
            &mt('Filter [_1]',             &mt('Filter [_1]',
    &select_form($env{'form.displayfilter'},     &select_form($env{'form.displayfilter'},
  'displayfilter',   'displayfilter',
  ('currentfolder' => 'Current folder/page',   ('currentfolder' => 'Current folder/page',
  'containing' => 'Containing phrase',   'containing' => 'Containing phrase',
  'none' => 'None'))).   'none' => 'None'))).
  '<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></nobr>';   '<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></span>';
 }  }
   
 sub gradeleveldescription {  sub gradeleveldescription {
Line 1740  sub select_level_form { Line 1787  sub select_level_form {
   
 =pod  =pod
   
 =item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc)  =item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$autosubmit)
   
 Returns a string containing a <select name='$name' size='1'> form to   Returns a string containing a <select name='$name' size='1'> form to 
 allow a user to select the domain to preform an operation in.    allow a user to select the domain to preform an operation in.  
Line 1749  See loncreateuser.pm for an example invo Line 1796  See loncreateuser.pm for an example invo
 If the $includeempty flag is set, it also includes an empty choice ("no domain  If the $includeempty flag is set, it also includes an empty choice ("no domain
 selected");  selected");
   
 If the $showdomdesc flag is set, the domain name is followed by the domain description.   If the $showdomdesc flag is set, the domain name is followed by the domain description.
   
   If the $autosubmit flag is set, the form containing the domain selector will be auto-submitted by an onchange action.
   
 =cut  =cut
   
 #-------------------------------------------  #-------------------------------------------
 sub select_dom_form {  sub select_dom_form {
     my ($defdom,$name,$includeempty,$showdomdesc) = @_;      my ($defdom,$name,$includeempty,$showdomdesc,$autosubmit) = @_;
       my $onchange;
       if ($autosubmit) {
           $onchange = ' onchange="this.form.submit()"';
       }
     my @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains());      my @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains());
     if ($includeempty) { @domains=('',@domains); }      if ($includeempty) { @domains=('',@domains); }
     my $selectdomain = "<select name=\"$name\" size=\"1\">\n";      my $selectdomain = "<select name=\"$name\" size=\"1\"$onchange>\n";
     foreach my $dom (@domains) {      foreach my $dom (@domains) {
         $selectdomain.="<option value=\"$dom\" ".          $selectdomain.="<option value=\"$dom\" ".
             ($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom;              ($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom;
Line 1814  sub home_server_form_item { Line 1867  sub home_server_form_item {
     if ($numlib > 1) {      if ($numlib > 1) {
         $result .= '<select name="'.$name.'" />'."\n";          $result .= '<select name="'.$name.'" />'."\n";
         if ($default) {          if ($default) {
             $result .= '<option value="default" selected>'.&mt('default').              $result .= '<option value="default" selected="selected">'.&mt('default').
                        '</option>'."\n";                         '</option>'."\n";
         }          }
         foreach my $hostid (sort(keys(%servers))) {          foreach my $hostid (sort(keys(%servers))) {
Line 2109  sub authform_kerberos { Line 2162  sub authform_kerberos {
         $autharg,$jscall);          $autharg,$jscall);
     my ($authnum,%can_assign) =  &get_assignable_auth($in{'domain'});      my ($authnum,%can_assign) =  &get_assignable_auth($in{'domain'});
     if ($in{'kerb_def_auth'} eq 'krb5') {      if ($in{'kerb_def_auth'} eq 'krb5') {
        $check5 = ' checked="on"';         $check5 = ' checked="checked"';
     } else {      } else {
        $check4 = ' checked="on"';         $check4 = ' checked="checked"';
     }      }
     $krbarg = $in{'kerb_def_dom'};      $krbarg = $in{'kerb_def_dom'};
     if (defined($in{'curr_authtype'})) {      if (defined($in{'curr_authtype'})) {
         if ($in{'curr_authtype'} eq 'krb') {          if ($in{'curr_authtype'} eq 'krb') {
             $krbcheck = ' checked="on"';              $krbcheck = ' checked="checked"';
             if (defined($in{'mode'})) {              if (defined($in{'mode'})) {
                 if ($in{'mode'} eq 'modifyuser') {                  if ($in{'mode'} eq 'modifyuser') {
                     $krbcheck = '';                      $krbcheck = '';
Line 2124  sub authform_kerberos { Line 2177  sub authform_kerberos {
             }              }
             if (defined($in{'curr_kerb_ver'})) {              if (defined($in{'curr_kerb_ver'})) {
                 if ($in{'curr_krb_ver'} eq '5') {                  if ($in{'curr_krb_ver'} eq '5') {
                     $check5 = ' checked="on"';                      $check5 = ' checked="checked"';
                     $check4 = '';                      $check4 = '';
                 } else {                  } else {
                     $check4 = ' checked="on"';                      $check4 = ' checked="checked"';
                     $check5 = '';                      $check5 = '';
                 }                  }
             }              }
Line 2148  sub authform_kerberos { Line 2201  sub authform_kerberos {
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="krb">';              $authtype = '<input type="hidden" name="login" value="krb" />';
         }          }
     }      }
     if (!$can_assign{'krb4'} && !$can_assign{'krb5'}) {      if (!$can_assign{'krb4'} && !$can_assign{'krb5'}) {
Line 2157  sub authform_kerberos { Line 2210  sub authform_kerberos {
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="krb">';                      $authtype = '<input type="hidden" name="login" value="krb" />';
                 }                  }
             }              }
         }          }
Line 2218  sub authform_internal{ Line 2271  sub authform_internal{
     if (defined($in{'curr_authtype'})) {      if (defined($in{'curr_authtype'})) {
         if ($in{'curr_authtype'} eq 'int') {          if ($in{'curr_authtype'} eq 'int') {
             if ($can_assign{'int'}) {              if ($can_assign{'int'}) {
                 $intcheck = 'checked="on" ';                  $intcheck = 'checked="checked" ';
                 if (defined($in{'mode'})) {                  if (defined($in{'mode'})) {
                     if ($in{'mode'} eq 'modifyuser') {                      if ($in{'mode'} eq 'modifyuser') {
                         $intcheck = '';                          $intcheck = '';
Line 2234  sub authform_internal{ Line 2287  sub authform_internal{
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="int">';              $authtype = '<input type="hidden" name="login" value="int" />';
         }          }
     }      }
     if (!$can_assign{'int'}) {      if (!$can_assign{'int'}) {
Line 2243  sub authform_internal{ Line 2296  sub authform_internal{
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="int">';                      $authtype = '<input type="hidden" name="login" value="int" />';
                 }                  }
             }              }
         }          }
Line 2258  sub authform_internal{ Line 2311  sub authform_internal{
     $result = &mt      $result = &mt
         ('[_1] Internally authenticated (with initial password [_2])',          ('[_1] Internally authenticated (with initial password [_2])',
          '<label>'.$authtype,'</label>'.$autharg);           '<label>'.$authtype,'</label>'.$autharg);
     $result.="<label><input type=\"checkbox\" name=\"visible\" onClick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>';      $result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>';
     return $result;      return $result;
 }  }
   
Line 2273  sub authform_local{ Line 2326  sub authform_local{
     if (defined($in{'curr_authtype'})) {      if (defined($in{'curr_authtype'})) {
         if ($in{'curr_authtype'} eq 'loc') {          if ($in{'curr_authtype'} eq 'loc') {
             if ($can_assign{'loc'}) {              if ($can_assign{'loc'}) {
                 $loccheck = 'checked="on" ';                  $loccheck = 'checked="checked" ';
                 if (defined($in{'mode'})) {                  if (defined($in{'mode'})) {
                     if ($in{'mode'} eq 'modifyuser') {                      if ($in{'mode'} eq 'modifyuser') {
                         $loccheck = '';                          $loccheck = '';
Line 2289  sub authform_local{ Line 2342  sub authform_local{
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="loc">';              $authtype = '<input type="hidden" name="login" value="loc" />';
         }          }
     }      }
     if (!$can_assign{'loc'}) {      if (!$can_assign{'loc'}) {
Line 2298  sub authform_local{ Line 2351  sub authform_local{
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="loc">';                      $authtype = '<input type="hidden" name="login" value="loc" />';
                 }                  }
             }              }
         }          }
Line 2327  sub authform_filesystem{ Line 2380  sub authform_filesystem{
     if (defined($in{'curr_authtype'})) {      if (defined($in{'curr_authtype'})) {
         if ($in{'curr_authtype'} eq 'fsys') {          if ($in{'curr_authtype'} eq 'fsys') {
             if ($can_assign{'fsys'}) {              if ($can_assign{'fsys'}) {
                 $fsyscheck = 'checked="on" ';                  $fsyscheck = 'checked="checked" ';
                 if (defined($in{'mode'})) {                  if (defined($in{'mode'})) {
                     if ($in{'mode'} eq 'modifyuser') {                      if ($in{'mode'} eq 'modifyuser') {
                         $fsyscheck = '';                          $fsyscheck = '';
Line 2340  sub authform_filesystem{ Line 2393  sub authform_filesystem{
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="fsys">';              $authtype = '<input type="hidden" name="login" value="fsys" />';
         }          }
     }      }
     if (!$can_assign{'fsys'}) {      if (!$can_assign{'fsys'}) {
Line 2349  sub authform_filesystem{ Line 2402  sub authform_filesystem{
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="fsys">';                      $authtype = '<input type="hidden" name="login" value="fsys" />';
                 }                  }
             }              }
         }          }
Line 2717  sub flush_email_cache { Line 2770  sub flush_email_cache {
     &Apache::lonnet::devalidate_cache_new('emailscache',$id);      &Apache::lonnet::devalidate_cache_new('emailscache',$id);
 }  }
   
   # -------------------------------------------------------------------- getlangs
   
   =pod
   
   =item * &getlangs($uname,$udom)
   
   Gets a user's language preference and returns it as a hash with key:
   language.
   
   =cut
   
   
   sub getlangs {
       my ($uname,$udom) = @_;
       if (!$udom)  { $udom =$env{'user.domain'}; }
       if (!$uname) { $uname=$env{'user.name'};   }
       my $id=$uname.':'.$udom;
       my ($langs,$cached)=&Apache::lonnet::is_cached_new('userlangs',$id);
       if ($cached) {
           return %{$langs};
       } else {
           my %loadlangs=&Apache::lonnet::get('environment',['languages'],
                                              $udom,$uname);
           &Apache::lonnet::do_cache_new('userlangs',$id,\%loadlangs);
           return %loadlangs;
       }
   }
   
   sub flush_langs_cache {
       my ($uname,$udom)=@_;
       if (!$udom)  { $udom =$env{'user.domain'}; }
       if (!$uname) { $uname=$env{'user.name'};   }
       return if ($udom eq 'public' && $uname eq 'public');
       my $id=$uname.':'.$udom;
       &Apache::lonnet::devalidate_cache_new('userlangs',$id);
   }
   
 # ------------------------------------------------------------------ Screenname  # ------------------------------------------------------------------ Screenname
   
 =pod  =pod
Line 2735  sub screenname { Line 2825  sub screenname {
     return $names{'screenname'};      return $names{'screenname'};
 }  }
   
   # ------------------------------------------------------------- Confirm Wrapper
   =pod
   
   =item confirmwrapper
   
   Wrap messages about completion of operation in box
   
   =cut
   
   sub confirmwrapper {
       my ($message)=@_;
       if ($message) {
           return "\n".'<div class="LC_confirm_box">'."\n"
                  .$message."\n"
                  .'</div>'."\n";
       } else {
           return $message;
       }
   }
   
 # ------------------------------------------------------------- Message Wrapper  # ------------------------------------------------------------- Message Wrapper
   
Line 2761  sub aboutmewrapper { Line 2870  sub aboutmewrapper {
         return;          return;
     }      }
     return '<a href="/adm/'.$domain.'/'.$username.'/aboutme"'.      return '<a href="/adm/'.$domain.'/'.$username.'/aboutme"'.
  ($target?' target="$target"':'').' title="'.&mt("View this user's personal page").'">'.$link.'</a>';   ($target?' target="$target"':'').' title="'.&mt("View this user's personal information page").'">'.$link.'</a>';
 }  }
   
 # ------------------------------------------------------------ Syllabus Wrapper  # ------------------------------------------------------------ Syllabus Wrapper
Line 2796  sub track_student_link { Line 2905  sub track_student_link {
  &help_open_topic('View_recent_activity');   &help_open_topic('View_recent_activity');
 }  }
   
   sub slot_reservations_link {
       my ($linktext,$sname,$sdom,$target) = @_;
       my $link ="/adm/slotrequest?command=showresv&amp;origin=aboutme";
       my $title = 'View slot reservation history';
       if (defined($sname) && $sname !~ /^\s*$/ &&
           defined($sdom)  && $sdom  !~ /^\s*$/) {
           $link .= "&amp;uname=$sname&amp;udom=$sdom";
           $title .= ' of this student';
       }
       if (defined($target) && $target !~ /^\s*$/) {
           $target = qq{target="$target"};
       } else {
           $target = '';
       }
       $title = &mt($title);
       $linktext = &mt($linktext);
       return qq{<a href="$link" title="$title" $target>$linktext</a>};
   # FIXME uncomment when help item created: &help_open_topic('Slot_Reservation_History');
   
   }
   
 # ===================================================== Display a student photo  # ===================================================== Display a student photo
   
   
Line 3033  sub languages { Line 3163  sub languages {
     return $preferred_possibilities[0];      return $preferred_possibilities[0];
 }  }
   
   sub user_lang {
       my ($touname,$toudom,$fromcid) = @_;
       my @userlangs;
       if (($fromcid ne '') && ($env{'course.'.$fromcid.'.languages'} ne '')) {
           @userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/,
                       $env{'course.'.$fromcid.'.languages'}));
       } else {
           my %langhash = &getlangs($touname,$toudom);
           if ($langhash{'languages'} ne '') {
               @userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'});
           } else {
               my %domdefs = &Apache::lonnet::get_domain_defaults($toudom);
               if ($domdefs{'lang_def'} ne '') {
                   @userlangs = ($domdefs{'lang_def'});
               }
           }
       }
       my @languages=&Apache::lonlocal::get_genlanguages(@userlangs);
       my $user_lh = Apache::localize->get_handle(@languages);
       return $user_lh;
   }
   
 ###############################################################  ###############################################################
 ##               Student Answer Attempts                     ##  ##               Student Answer Attempts                     ##
 ###############################################################  ###############################################################
Line 3171  sub relative_to_absolute { Line 3323  sub relative_to_absolute {
     }      }
     $thisdir=~s-/[^/]*$--;      $thisdir=~s-/[^/]*$--;
     foreach my $link (@rlinks) {      foreach my $link (@rlinks) {
  unless (($link=~/^http:\/\//i) ||   unless (($link=~/^https?\:\/\//i) ||
  ($link=~/^\//) ||   ($link=~/^\//) ||
  ($link=~/^javascript:/i) ||   ($link=~/^javascript:/i) ||
  ($link=~/^mailto:/i) ||   ($link=~/^mailto:/i) ||
Line 3748  sub blocking_status { Line 3900  sub blocking_status {
                              &Apache::lonnet::coursedescription($course);                               &Apache::lonnet::coursedescription($course);
                         $coursedesc = $courseinfo{'description'};                          $coursedesc = $courseinfo{'description'};
                     }                      }
                     $category = "Group files in the course '$coursedesc'";                      $category = "Group portfolio files in the course '$coursedesc'";
                 } else {                  } else {
                     $category = 'Portfolio files belonging to ';                      $category = 'Portfolio files belonging to ';
                     if ($env{'user.name'} eq 'public' &&                       if ($env{'user.name'} eq 'public' && 
Line 3880  sub get_domainconf { Line 4032  sub get_domainconf {
         if (ref($domconfig{'login'}) eq 'HASH') {          if (ref($domconfig{'login'}) eq 'HASH') {
             if (keys(%{$domconfig{'login'}})) {              if (keys(%{$domconfig{'login'}})) {
                 foreach my $key (keys(%{$domconfig{'login'}})) {                  foreach my $key (keys(%{$domconfig{'login'}})) {
                     $designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key};                      if (ref($domconfig{'login'}{$key}) eq 'HASH') {
                           foreach my $img (keys(%{$domconfig{'login'}{$key}})) {
                               $designhash{$udom.'.login.'.$key.'_'.$img} =
                                   $domconfig{'login'}{$key}{$img};
                           }
                       } else {
                           $designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key};
                       }
                 }                  }
             } else {              } else {
                 $legacy{'login'} = 1;                  $legacy{'login'} = 1;
Line 4102  sub bodytag { Line 4261  sub bodytag {
     my $font =   &designparm($function.'.font',$domain);      my $font =   &designparm($function.'.font',$domain);
     my $pgbg   = $bgcolor || &designparm($function.'.pgbg',$domain);      my $pgbg   = $bgcolor || &designparm($function.'.pgbg',$domain);
   
     my %design = ( 'style'   => 'margin-top: 0px',      my %design = ( 'style'   => 'margin-top: 0',
    'bgcolor' => $pgbg,     'bgcolor' => $pgbg,
    'text'    => $font,     'text'    => $font,
                    'alink'   => &designparm($function.'.alink',$domain),                     'alink'   => &designparm($function.'.alink',$domain),
Line 4404  sub standard_css { Line 4563  sub standard_css {
     my $mail_other_hover     = '#669999';      my $mail_other_hover     = '#669999';
     my $table_header         = '#DDDDDD';      my $table_header         = '#DDDDDD';
     my $feedback_link_bg     = '#BBBBBB';      my $feedback_link_bg     = '#BBBBBB';
       my $lg_border_color      = '#C8C8C8';
   
     my $border = ($env{'browser.type'} eq 'explorer' ||      my $border = ($env{'browser.type'} eq 'explorer' ||
   $env{'browser.type'} eq 'safari'     ) ? '0px 2px 0px 2px'    $env{'browser.type'} eq 'safari'     ) ? '0 2px 0 2px'
                                                  : '0px 3px 0px 4px';                                                   : '0 3px 0 4px';
   
   
     return <<END;      return <<END;
Line 4442  form, .inline { display: inline; } Line 4602  form, .inline { display: inline; }
 .LC_diff_added {  .LC_diff_added {
   color: green;    color: green;
 }  }
 .LC_unknown {  
   color: yellow;  div.LC_confirm_box {
     background-color: #FAFAFA;
     border: 1px solid $lg_border_color;
     margin-right: 0;
     padding: 5px;
   }
   
   div.LC_confirm_box .LC_error img,
   div.LC_confirm_box .LC_success img {
     vertical-align: middle;
 }  }
   
 .LC_icon {  .LC_icon {
   border: 0px;    border: none;
 }  }
 .LC_indexer_icon {  .LC_indexer_icon {
   border: 0px;    border: 0;
   height: 22px;    height: 22px;
 }  }
 .LC_docs_spacer {  .LC_docs_spacer {
   width: 25px;    width: 25px;
   height: 1px;    height: 1px;
   border: 0px;    border: none;
 }  }
   
 .LC_internal_info {  .LC_internal_info {
   color: #999;    color: #999999;
 }  }
   
 table.LC_pastsubmission {  table.LC_pastsubmission {
Line 4473  table#LC_top_nav, table#LC_menubuttons,t Line 4642  table#LC_top_nav, table#LC_menubuttons,t
   background: $pgbg;    background: $pgbg;
   border: 2px;    border: 2px;
   border-collapse: separate;    border-collapse: separate;
   padding: 0px;    padding: 0;
 }  }
   
 table#LC_title_bar, table.LC_breadcrumbs,   table#LC_title_bar, table.LC_breadcrumbs, 
Line 4486  table#LC_title_bar.LC_with_remote { Line 4655  table#LC_title_bar.LC_with_remote {
   background: $pgbg;    background: $pgbg;
   font-family: $sans;    font-family: $sans;
   border-collapse: collapse;    border-collapse: collapse;
   padding: 0px;    padding: 0;
 }  }
   
 table.LC_docs_path {  table.LC_docs_path {
Line 4495  table.LC_docs_path { Line 4664  table.LC_docs_path {
   background: $pgbg;    background: $pgbg;
   font-family: $sans;    font-family: $sans;
   border-collapse: collapse;    border-collapse: collapse;
   padding: 0px;    padding: 0;
 }  }
   
 table#LC_title_bar td {  table#LC_title_bar td {
Line 4516  span.LC_title_bar_title { Line 4685  span.LC_title_bar_title {
 table#LC_title_bar td.LC_title_bar_domain_logo {  table#LC_title_bar td.LC_title_bar_domain_logo {
   background: $sidebg;    background: $sidebg;
   text-align: right;    text-align: right;
   padding: 0px;    padding: 0;
 }  }
 table#LC_title_bar td.LC_title_bar_role_logo {  table#LC_title_bar td.LC_title_bar_role_logo {
   background: $sidebg;    background: $sidebg;
   padding: 0px;    padding: 0;
 }  }
   
 table#LC_menubuttons_mainmenu {  table#LC_menubuttons_mainmenu {
   width: 100%;    width: 100%;
   border: 0px;    border: 0;
   border-spacing: 1px;    border-spacing: 1px;
   padding: 0px 1px;    padding: 0 1px;
   margin: 0px;    margin: 0;
   border-collapse: separate;    border-collapse: separate;
 }  }
 table#LC_menubuttons img, table#LC_menubuttons_mainmenu img {  table#LC_menubuttons img, table#LC_menubuttons_mainmenu img {
   border: 0px;    border: none;
 }  }
 table#LC_top_nav td {  table#LC_top_nav td {
   background: $tabbg;    background: $tabbg;
   border: 0px;    border: none;
   font-size: small;    font-size: small;
 }  }
 table#LC_top_nav td a, div#LC_top_nav a {  table#LC_top_nav td a, div#LC_top_nav a {
Line 4550  table#LC_top_nav td.LC_top_nav_logo { Line 4719  table#LC_top_nav td.LC_top_nav_logo {
   width: 31px;    width: 31px;
 }  }
 table#LC_top_nav td.LC_top_nav_logo img {  table#LC_top_nav td.LC_top_nav_logo img {
   border: 0px;    border: none;
   vertical-align: bottom;    vertical-align: bottom;
 }  }
 table#LC_top_nav td.LC_top_nav_exit,  table#LC_top_nav td.LC_top_nav_exit,
Line 4591  table#LC_mainmenu td.LC_mainmenu_column Line 4760  table#LC_mainmenu td.LC_mainmenu_column
 .LC_menubuttons_link {  .LC_menubuttons_link {
   text-decoration: none;    text-decoration: none;
 }  }
 #2008--9-5: new menu style sheet.Changed category  /*2008--9-5: new menu style sheet.Changed category*/
 .LC_menubuttons_category {  .LC_menubuttons_category {
   color: $font;    color: $font;
   background: $pgbg;    background: $pgbg;
Line 4619  td.LC_menubuttons_img { Line 4788  td.LC_menubuttons_img {
   font-weight: bold;    font-weight: bold;
 }  }
   
 .LC_rolesmenu_is {  
   font-family: $sans;  
 }  
   
 .LC_rolesmenu_selected {  
   font-family: $sans;  
 }  
   
 .LC_rolesmenu_future {  
   font-family: $sans;  
 }  
   
   
 .LC_rolesmenu_will {  
   font-family: $sans;  
 }  
   
 .LC_rolesmenu_will_not {  
   font-family: $sans;  
 }  
   
 .LC_rolesmenu_expired {  
   font-family: $sans;  
 }  
   
 .LC_rolesinfo {  
   font-family: $sans;  
 }  
   
 .LC_dropadd_labeltext {  .LC_dropadd_labeltext {
   font-family: $sans;    font-family: $sans;
   text-align: right;    text-align: right;
Line 4662  td.LC_menubuttons_img { Line 4802  td.LC_menubuttons_img {
   font-size: smaller;    font-size: smaller;
 }  }
   
   .LC_mail_functions {
       font-weight: bold;
   }
   
 table.LC_aboutme_port {  table.LC_aboutme_port {
   border: 0px;    border: none;
   border-collapse: collapse;    border-collapse: collapse;
   border-spacing: 0px;    border-spacing: 0;
 }  }
 table.LC_data_table, table.LC_mail_list {  table.LC_data_table, table.LC_mail_list {
   border: 1px solid #000000;    border: 1px solid #000000;
Line 4679  table.LC_data_table, table.LC_mail_list Line 4823  table.LC_data_table, table.LC_mail_list
 table.LC_nested_outer {  table.LC_nested_outer {
   border: 1px solid #000000;    border: 1px solid #000000;
   border-collapse: collapse;    border-collapse: collapse;
   border-spacing: 0px;    border-spacing: 0;
   width: 100%;    width: 100%;
 }  }
 table.LC_nested {  table.LC_nested {
   border: 0px;    border: none;
   border-collapse: collapse;    border-collapse: collapse;
   border-spacing: 0px;    border-spacing: 0;
   width: 100%;    width: 100%;
 }  }
 table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th,  table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th,
Line 4694  table.LC_prior_tries tr th { Line 4838  table.LC_prior_tries tr th {
   background-color: $data_table_head;    background-color: $data_table_head;
   font-size: smaller;    font-size: smaller;
 }  }
   table.LC_data_table tr.LC_info_row > td {
     background-color: #CCCCCC;
     font-weight: bold;
     text-align: left;
   }
 table.LC_data_table tr.LC_odd_row > td,   table.LC_data_table tr.LC_odd_row > td, 
   table.LC_pick_box tr > td.LC_odd_row,
 table.LC_aboutme_port tr td {  table.LC_aboutme_port tr td {
   background-color: $data_table_light;    background-color: $data_table_light;
   padding: 2px;    padding: 2px;
 }  }
 table.LC_data_table tr.LC_even_row > td,  table.LC_data_table tr.LC_even_row > td,
   table.LC_pick_box tr > td.LC_even_row,
 table.LC_aboutme_port tr.LC_even_row td {  table.LC_aboutme_port tr.LC_even_row td {
   background-color: $data_table_dark;    background-color: $data_table_dark;
     padding: 2px;
 }  }
 table.LC_data_table tr.LC_data_table_highlight td {  table.LC_data_table tr.LC_data_table_highlight td {
   background-color: $data_table_darker;    background-color: $data_table_darker;
Line 4735  table.LC_nested_outer tr td.LC_subheader Line 4887  table.LC_nested_outer tr td.LC_subheader
   text-align: right;    text-align: right;
 }  }
 table.LC_nested tr.LC_info_row td {  table.LC_nested tr.LC_info_row td {
   background-color: #CCC;    background-color: #CCCCCC;
   font-weight: bold;    font-weight: bold;
   font-size: small;    font-size: small;
   text-align: center;    text-align: center;
Line 4745  table.LC_nested_outer tr th.LC_left_item Line 4897  table.LC_nested_outer tr th.LC_left_item
   text-align: left;    text-align: left;
 }  }
 table.LC_nested td {  table.LC_nested td {
   background-color: #FFF;    background-color: #FFFFFF;
   font-size: small;    font-size: small;
 }  }
 table.LC_nested_outer tr th.LC_right_item,  table.LC_nested_outer tr th.LC_right_item,
Line 4756  table.LC_nested tr td.LC_right_item { Line 4908  table.LC_nested tr td.LC_right_item {
 }  }
   
 table.LC_nested tr.LC_odd_row td {  table.LC_nested tr.LC_odd_row td {
   background-color: #EEE;    background-color: #EEEEEE;
 }  }
   
 table.LC_createuser {  table.LC_createuser {
Line 4767  table.LC_createuser tr.LC_section_row td Line 4919  table.LC_createuser tr.LC_section_row td
 }  }
   
 table.LC_createuser tr.LC_info_row td  {  table.LC_createuser tr.LC_info_row td  {
   background-color: #CCC;    background-color: #CCCCCC;
   font-weight: bold;    font-weight: bold;
   text-align: center;    text-align: center;
 }  }
Line 4823  table.LC_mail_list tr.LC_mail_odd { Line 4975  table.LC_mail_list tr.LC_mail_odd {
 table#LC_portfolio_actions {  table#LC_portfolio_actions {
   width: auto;    width: auto;
   background: $pgbg;    background: $pgbg;
   border: 0px;    border: none;
   border-spacing: 2px 2px;    border-spacing: 2px 2px;
   padding: 0px;    padding: 0;
   margin: 0px;    margin: 0;
   border-collapse: separate;    border-collapse: separate;
 }  }
 table#LC_portfolio_actions td.LC_label {  table#LC_portfolio_actions td.LC_label {
Line 4882  table#LC_browser tr.LC_browser_file_meta Line 5034  table#LC_browser tr.LC_browser_file_meta
 table#LC_browser tr.LC_browser_folder {  table#LC_browser tr.LC_browser_folder {
   background: #CCCCFF;    background: #CCCCFF;
 }  }
   
   table.LC_data_table tr > td.LC_roles_is {
   /*  background: #77FF77; */
   }
   table.LC_data_table tr > td.LC_roles_future {
     background: #FFFF77;
   }
   table.LC_data_table tr > td.LC_roles_will {
     background: #FFAA77;
   }
   table.LC_data_table tr > td.LC_roles_expired {
     background: #FF7777;
   }
   table.LC_data_table tr > td.LC_roles_will_not {
     background: #AAFF77;
   }
   table.LC_data_table tr > td.LC_roles_selected {
     background: #11CC55;
   }
   
 span.LC_current_location {  span.LC_current_location {
   font-size: x-large;    font-size: x-large;
   background: $pgbg;    background: $pgbg;
Line 4927  table.LC_parm_overview_restrictions th { Line 5099  table.LC_parm_overview_restrictions th {
   border-color: $pgbg;    border-color: $pgbg;
 }  }
 table#LC_helpmenu {  table#LC_helpmenu {
   border: 0px;    border: none;
   height: 55px;    height: 55px;
   border-spacing: 0px;    border-spacing: 0;
 }  }
   
 table#LC_helpmenu fieldset legend {  table#LC_helpmenu fieldset legend {
Line 4940  table#LC_helpmenu_links { Line 5112  table#LC_helpmenu_links {
   width: 100%;    width: 100%;
   border: 1px solid black;    border: 1px solid black;
   background: $pgbg;    background: $pgbg;
   padding: 0px;    padding: 0;
   border-spacing: 1px;    border-spacing: 1px;
 }  }
 table#LC_helpmenu_links tr td {  table#LC_helpmenu_links tr td {
Line 4982  table.LC_pick_box td.LC_pick_box_title { Line 5154  table.LC_pick_box td.LC_pick_box_title {
   background: $tabbg;    background: $tabbg;
   font-weight: bold;    font-weight: bold;
   text-align: right;    text-align: right;
     vertical-align: top;
   width: 184px;    width: 184px;
   padding: 8px;    padding: 8px;
 }  }
Line 5002  table.LC_pick_box td.LC_pick_box_select Line 5175  table.LC_pick_box td.LC_pick_box_select
   padding: 8px;    padding: 8px;
 }  }
 table.LC_pick_box td.LC_pick_box_separator {  table.LC_pick_box td.LC_pick_box_separator {
   padding: 0px;    padding: 0;
   height: 1px;    height: 1px;
   background: black;    background: black;
 }  }
Line 5044  table.LC_helpform_receipt td.LC_oddrow_v Line 5217  table.LC_helpform_receipt td.LC_oddrow_v
   background-color: $data_table_light;    background-color: $data_table_light;
 }  }
 table.LC_helpform_receipt td.LC_pick_box_separator {  table.LC_helpform_receipt td.LC_pick_box_separator {
   padding: 0px;    padding: 0;
   height: 1px;    height: 1px;
   background: black;    background: black;
 }  }
Line 5077  table.LC_group_priv_box td.LC_groups_fun Line 5250  table.LC_group_priv_box td.LC_groups_fun
 }  }
 table.LC_group_priv td {  table.LC_group_priv td {
   text-align: left;    text-align: left;
   padding: 0px;    padding: 0;
 }  }
   
 table.LC_notify_front_page {  table.LC_notify_front_page {
Line 5098  table.LC_notify_front_page td { Line 5271  table.LC_notify_front_page td {
   background: $tabbg;    background: $tabbg;
   vertical-align: middle;    vertical-align: middle;
   margin: 2ex 0ex 2ex 0ex;    margin: 2ex 0ex 2ex 0ex;
     padding: 3px;
 }  }
 .LC_topic_bar span {  .LC_topic_bar span {
   vertical-align: middle;    vertical-align: middle;
Line 5214  span.LC_cusr_subheading { Line 5388  span.LC_cusr_subheading {
   
 table.LC_docs_documents {  table.LC_docs_documents {
   background: #BBBBBB;    background: #BBBBBB;
   border-width: 0px;    border-width: 0;
   border-collapse: collapse;    border-collapse: collapse;
 }  }
   
Line 5231  table.LC_docs_documents td.LC_docs_docum Line 5405  table.LC_docs_documents td.LC_docs_docum
 }  }
   
 .LC_docs_entry_move {  .LC_docs_entry_move {
   border: 0px;    border: none;
   border-collapse: collapse;    border-collapse: collapse;
 }  }
   
Line 5287  table.LC_sty_end { Line 5461  table.LC_sty_end {
 }  }
   
 table.LC_double_column {  table.LC_double_column {
   border-width: 0px;    border-width: 0;
   border-collapse: collapse;    border-collapse: collapse;
   width: 100%;    width: 100%;
   padding: 2px;    padding: 2px;
Line 5426  table.LC_edit_problem_header_title { Line 5600  table.LC_edit_problem_header_title {
   
   background: $tabbg;    background: $tabbg;
   border-collapse: collapse;    border-collapse: collapse;
   padding: 0px    padding: 0;
 }  }
   
 div.LC_edit_problem_discards {  div.LC_edit_problem_discards {
Line 5442  hr.LC_edit_problem_divide { Line 5616  hr.LC_edit_problem_divide {
   color: $tabbg;    color: $tabbg;
   background-color: $tabbg;    background-color: $tabbg;
   height: 3px;    height: 3px;
   border: 0px;    border: none;
 }  }
 img.stift{  img.stift{
   border-width:0;    border-width:0;
Line 5467  table#LC_mainmenu td.LC_mainmenu_col_fie Line 5641  table#LC_mainmenu td.LC_mainmenu_col_fie
   font-weight: bold;    font-weight: bold;
 }  }
 fieldset#LC_mainmenu_fieldset {  fieldset#LC_mainmenu_fieldset {
   margin:0px 10px 10px 0px;    margin:0 10px 10px 0;
   
 }  }
   
   div.LC_createcourse {
       margin: 10px 10px 10px 10px;
   }
   
 END  END
 }  }
   
Line 5738  sub start_page { Line 5917  sub start_page {
     if ($args->{'html_encode'}) {      if ($args->{'html_encode'}) {
  $result = &html_encode($result);   $result = &html_encode($result);
     }      }
       #Breadcrumbs
       if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) {
           &Apache::lonhtmlcommon::clear_breadcrumbs();
           #if any br links exists, add them to the breadcrumbs
           if (exists($args->{'bread_crumbs'}) and ref($args->{'bread_crumbs'}) eq 'ARRAY') {
               foreach my $crumb (@{$args->{'bread_crumbs'}}){
                   &Apache::lonhtmlcommon::add_breadcrumb($crumb);
               }
           }
   
           #if bread_crumbs_component exists show it as headline else show only the breadcrumbs
           if (exists($args->{'bread_crumbs_component'})){
               $result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'});
           } else {
               $result .= &Apache::lonhtmlcommon::breadcrumbs();
           }
       }
     return $result;      return $result;
 }  }
   
   
 =pod  =pod
   
 =item * &head()  =item * &head()
Line 5972  sub get_users_function { Line 6167  sub get_users_function {
     if ($env{'request.role'}=~/^(su|dc|ad|li)/) {      if ($env{'request.role'}=~/^(su|dc|ad|li)/) {
         $function='admin';          $function='admin';
     }      }
     if (($env{'request.role'}=~/^(au|ca)/) ||      if (($env{'request.role'}=~/^(au|ca|aa)/) ||
         ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {          ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {
         $function='author';          $function='author';
     }      }
Line 5983  sub get_users_function { Line 6178  sub get_users_function {
   
 =pod  =pod
   
   =item * &show_course()
   
   Used by lonmenu.pm and lonroles.pm to determine whether to use the word
   'Courses' or 'Roles' in inline navigation and on screen displaying user's roles.
   Inputs:
   None
   
   Outputs:
   Scalar: 1 if 'Course' to be used, 0 otherwise.
   
   =cut
   
   ###############################################
   sub show_course {
       my $course = !$env{'user.adv'};
       if (!$env{'user.adv'}) {
           foreach my $env (keys(%env)) {
               next if ($env !~ m/^user\.priv\./);
               if ($env !~ m/^user\.priv\.(?:st|cm)/) {
                   $course = 0;
                   last;
               }
           }
       }
       return $course;
   }
   
   ###############################################
   
   =pod
   
 =item * &check_user_status()  =item * &check_user_status()
   
 Determines current status of supplied role for a  Determines current status of supplied role for a
Line 6498  sub default_quota { Line 6724  sub default_quota {
                                             ['quotas'],$udom);                                              ['quotas'],$udom);
     if (ref($quotahash{'quotas'}) eq 'HASH') {      if (ref($quotahash{'quotas'}) eq 'HASH') {
         if ($inststatus ne '') {          if ($inststatus ne '') {
             my @statuses = split(/:/,$inststatus);              my @statuses = map { &unescape($_); } split(/:/,$inststatus);
             foreach my $item (@statuses) {              foreach my $item (@statuses) {
                 if ($quotahash{'quotas'}{$item} ne '') {                  if (ref($quotahash{'quotas'}{'defaultquota'}) eq 'HASH') {
                     if ($defquota eq '') {                      if ($quotahash{'quotas'}{'defaultquota'}{$item} ne '') {
                         $defquota = $quotahash{'quotas'}{$item};                          if ($defquota eq '') {
                         $settingstatus = $item;                              $defquota = $quotahash{'quotas'}{'defaultquota'}{$item};
                     } elsif ($quotahash{'quotas'}{$item} > $defquota) {                              $settingstatus = $item;
                         $defquota = $quotahash{'quotas'}{$item};                          } elsif ($quotahash{'quotas'}{'defaultquota'}{$item} > $defquota) {
                         $settingstatus = $item;                              $defquota = $quotahash{'quotas'}{'defaultquota'}{$item};
                               $settingstatus = $item;
                           }
                       }
                   } else {
                       if ($quotahash{'quotas'}{$item} ne '') {
                           if ($defquota eq '') {
                               $defquota = $quotahash{'quotas'}{$item};
                               $settingstatus = $item;
                           } elsif ($quotahash{'quotas'}{$item} > $defquota) {
                               $defquota = $quotahash{'quotas'}{$item};
                               $settingstatus = $item;
                           }
                     }                      }
                 }                  }
             }              }
         }          }
         if ($defquota eq '') {          if ($defquota eq '') {
             $defquota = $quotahash{'quotas'}{'default'};              if (ref($quotahash{'quotas'}{'defaultquota'}) eq 'HASH') {
                   $defquota = $quotahash{'quotas'}{'defaultquota'}{'default'};
               } else {
                   $defquota = $quotahash{'quotas'}{'default'};
               }
             $settingstatus = 'default';              $settingstatus = 'default';
         }          }
     } else {      } else {
Line 6661  sub user_picker { Line 6903  sub user_picker {
                 if ($cancreate) {                  if ($cancreate) {
                     $new_user_create = '<p> <input type="submit" name="forcenew" value="'.&HTML::Entities::encode(&mt('Make new user "[_1]"',$srchterm),'<>&"').'" onclick="javascript:setSearch(\'1\','.$caller.');" /> </p>';                      $new_user_create = '<p> <input type="submit" name="forcenew" value="'.&HTML::Entities::encode(&mt('Make new user "[_1]"',$srchterm),'<>&"').'" onclick="javascript:setSearch(\'1\','.$caller.');" /> </p>';
                 } else {                  } else {
                     my $helplink = ' href="javascript:helpMenu('."'display'".')"';                      my $helplink = 'javascript:helpMenu('."'display'".')';
                     my %usertypetext = (                      my %usertypetext = (
                         official   => 'institutional',                          official   => 'institutional',
                         unofficial => 'non-institutional',                          unofficial => 'non-institutional',
                     );                      );
                     $new_user_create = '<br /><span class="LC_warning">'.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.").' '.&mt('Contact the <a[_1]>helpdesk</a> for assistance.',$helplink).'</span><br /><br />';                      $new_user_create = '<p class="LC_warning">'.
                                          &mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.").' '.
                                          &mt('Please contact the [_1]helpdesk[_2] for assistance.','<a href="'.$helplink.'">','</a>').'</p><br />';
                 }                  }
             }              }
         }          }
Line 6703  ENDSCRIPT Line 6947  ENDSCRIPT
   
     my $output = <<"END_BLOCK";      my $output = <<"END_BLOCK";
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 function validateEntry(callingForm) {  function validateEntry(callingForm) {
   
     var checkok = 1;      var checkok = 1;
Line 6771  function validateEntry(callingForm) { Line 7016  function validateEntry(callingForm) {
   
 $newuserscript  $newuserscript
   
   // ]]>
 </script>  </script>
   
 $new_user_create  $new_user_create
Line 6948  sub personal_data_fieldtitles { Line 7194  sub personal_data_fieldtitles {
                         middlename => 'Middle Name',                          middlename => 'Middle Name',
                         generation => 'Generation',                          generation => 'Generation',
                         gen => 'Generation',                          gen => 'Generation',
                           inststatus => 'Affiliation',
                    );                     );
     return %fieldtitles;      return %fieldtitles;
 }  }
Line 7017  sub get_institutional_codes { Line 7264  sub get_institutional_codes {
   
 =pod  =pod
   
   =head1 Slot Helpers
   
   =over 4
   
   =item * sorted_slots()
   
   Sorts an array of slot names in order of slot start time (earliest first).
   
   Inputs:
   
   =over 4
   
   slotsarr  - Reference to array of unsorted slot names.
   
   slots     - Reference to hash of hash, where outer hash keys are slot names.
   
   =back
   
   Returns:
   
   =over 4
   
   sorted   - An array of slot names sorted by the start time of the slot.
   
   =back
   
   =back
   
   =cut
   
   
   sub sorted_slots {
       my ($slotsarr,$slots) = @_;
       my @sorted;
       if ((ref($slotsarr) eq 'ARRAY') && (ref($slots) eq 'HASH')) {
           @sorted =
               sort {
                        if (ref($slots->{$a}) && ref($slots->{$b})) {
                            return $slots->{$a}{'starttime'} <=> $slots->{$b}{'starttime'}
                        }
                        if (ref($slots->{$a})) { return -1;}
                        if (ref($slots->{$b})) { return 1;}
                        return 0;
                    } @{$slotsarr};
       }
       return @sorted;
   }
   
   =pod
   
 =back  =back
   
 =head1 HTTP Helpers  =head1 HTTP Helpers
Line 7569  sub upfile_select_html { Line 7866  sub upfile_select_html {
 #                 xml   => &mt('HTML/XML'),  #                 xml   => &mt('HTML/XML'),
                  );                   );
     my $Str = '<input type="file" name="upfile" size="50" />'.      my $Str = '<input type="file" name="upfile" size="50" />'.
         '<br />Type: <select name="upfiletype">';          '<br />'.&mt('Type').': <select name="upfiletype">';
     foreach my $type (sort(keys(%Types))) {      foreach my $type (sort(keys(%Types))) {
         $Str .= '<option value="'.$type.'" >'.$Types{$type}."</option>\n";          $Str .= '<option value="'.$type.'" >'.$Types{$type}."</option>\n";
     }      }
Line 8313  sub restore_settings { Line 8610  sub restore_settings {
   
 =item * &build_recipient_list()  =item * &build_recipient_list()
   
 Build recipient lists for three types of e-mail:  Build recipient lists for four types of e-mail:
 (a) Error Reports, (b) Package Updates, (c) Help requests, generated by  (a) Error Reports, (b) Package Updates, (c) lonstatus warnings/errors
 lonerrorhandler.pm, CHECKRPMS and lonsupportreq.pm respectively.  (d) Help requests, generated by
   lonerrorhandler.pm, CHECKRPMS, loncron, and lonsupportreq.pm respectively.
   
 Inputs:  Inputs:
 defmail (scalar - email address of default recipient),   defmail (scalar - email address of default recipient), 
Line 8339  sub build_recipient_list { Line 8637  sub build_recipient_list {
     my %domconfig =      my %domconfig =
          &Apache::lonnet::get_dom('configuration',['contacts'],$defdom);           &Apache::lonnet::get_dom('configuration',['contacts'],$defdom);
     if (ref($domconfig{'contacts'}) eq 'HASH') {      if (ref($domconfig{'contacts'}) eq 'HASH') {
         if (ref($domconfig{'contacts'}{$mailing}) eq 'HASH') {          if (exists($domconfig{'contacts'}{$mailing})) {
             my @contacts = ('adminemail','supportemail');              if (ref($domconfig{'contacts'}{$mailing}) eq 'HASH') {
             foreach my $item (@contacts) {                  my @contacts = ('adminemail','supportemail');
                 if ($domconfig{'contacts'}{$mailing}{$item}) {                  foreach my $item (@contacts) {
                     my $addr = $domconfig{'contacts'}{$item};                       if ($domconfig{'contacts'}{$mailing}{$item}) {
                     if (!grep(/^\Q$addr\E$/,@recipients)) {                          my $addr = $domconfig{'contacts'}{$item};
                         push(@recipients,$addr);                          if (!grep(/^\Q$addr\E$/,@recipients)) {
                               push(@recipients,$addr);
                           }
                     }                      }
                       $otheremails = $domconfig{'contacts'}{$mailing}{'others'};
                 }                  }
                 $otheremails = $domconfig{'contacts'}{$mailing}{'others'};  
             }              }
           } elsif ($origmail ne '') {
               push(@recipients,$origmail);
         }          }
     } elsif ($origmail ne '') {      } elsif ($origmail ne '') {
         push(@recipients,$origmail);          push(@recipients,$origmail);
Line 8993  sub construct_course { Line 9295  sub construct_course {
                    'policy.email',                     'policy.email',
                    'comment.email',                     'comment.email',
                    'pch.users.denied',                     'pch.users.denied',
                    'plc.users.denied'],                     'plc.users.denied',
                      'hidefromcat',
                      'categories'],
                    $$crsudom,$$crsunum);                     $$crsudom,$$crsunum);
     }      }
   
Line 9321  sub escape_url { Line 9625  sub escape_url {
     return join('/',@urlslices).'/'.$lastitem;      return join('/',@urlslices).'/'.$lastitem;
 }  }
   
   sub compare_arrays {
       my ($arrayref1,$arrayref2) = @_;
       my (@difference,%count);
       @difference = ();
       %count = ();
       if ((ref($arrayref1) eq 'ARRAY') && (ref($arrayref2) eq 'ARRAY')) {
           foreach my $element (@{$arrayref1}, @{$arrayref2}) { $count{$element}++; }
           foreach my $element (keys(%count)) {
               if ($count{$element} == 1) {
                   push(@difference,$element);
               }
           }
       }
       return @difference;
   }
   
 # -------------------------------------------------------- Initliaze user login  # -------------------------------------------------------- Initliaze user login
 sub init_user_environment {  sub init_user_environment {
     my ($r, $username, $domain, $authhost, $form, $args) = @_;      my ($r, $username, $domain, $authhost, $form, $args) = @_;
Line 9451  sub init_user_environment { Line 9771  sub init_user_environment {
     }      }
  }   }
   
           foreach my $tool ('aboutme','blog','portfolio') {
               $userenv{'availabletools.'.$tool} =
                   &Apache::lonnet::usertools_access($username,$domain,$tool,'reload');
           }
   
           foreach my $crstype ('official','unofficial') {
               $userenv{'canrequest.'.$crstype} =
                   &Apache::lonnet::usertools_access($username,$domain,$crstype,
                                                     'reload','requestcourses');
           }
   
  $env{'user.environment'} = "$lonids/$cookie.id";   $env{'user.environment'} = "$lonids/$cookie.id";
   
  if (tie(my %disk_env,'GDBM_File',"$lonids/$cookie.id",   if (tie(my %disk_env,'GDBM_File',"$lonids/$cookie.id",
Line 9489  sub _add_to_env { Line 9820  sub _add_to_env {
 # --- Get the symbolic name of a problem and the url  # --- Get the symbolic name of a problem and the url
 sub get_symb {  sub get_symb {
     my ($request,$silent) = @_;      my ($request,$silent) = @_;
     (my $url=$env{'form.url'}) =~ s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;      (my $url=$env{'form.url'}) =~ s-^https?\://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
     my $symb=($env{'form.symb'} ne '' ? $env{'form.symb'} : (&Apache::lonnet::symbread($url)));      my $symb=($env{'form.symb'} ne '' ? $env{'form.symb'} : (&Apache::lonnet::symbread($url)));
     if ($symb eq '') {      if ($symb eq '') {
         if (!$silent) {          if (!$silent) {
Line 9516  sub get_annotation { Line 9847  sub get_annotation {
 }  }
   
 sub clean_symb {  sub clean_symb {
     my ($symb) = @_;      my ($symb,$delete_enc) = @_;
   
     &Apache::lonenc::check_decrypt(\$symb);      &Apache::lonenc::check_decrypt(\$symb);
     my $enc = $env{'request.enc'};      my $enc = $env{'request.enc'};
     delete($env{'request.enc'});      if ($delete_enc) {
           delete($env{'request.enc'});
       }
   
     return ($symb,$enc);      return ($symb,$enc);
 }  }

Removed from v.1.692.4.1  
changed lines
  Added in v.1.692.4.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.