Diff for /loncom/interface/loncommon.pm between versions 1.548 and 1.559

version 1.548, 2007/07/11 20:32:15 version 1.559, 2007/08/08 19:13:43
Line 334  sub studentbrowser_javascript { Line 334  sub studentbrowser_javascript {
    return (<<'ENDSTDBRW');     return (<<'ENDSTDBRW');
 <script type="text/javascript" language="Javascript" >  <script type="text/javascript" language="Javascript" >
     var stdeditbrowser;      var stdeditbrowser;
     function openstdbrowser(formname,uname,udom,roleflag) {      function openstdbrowser(formname,uname,udom,roleflag,ignorefilter) {
         var url = '/adm/pickstudent?';          var url = '/adm/pickstudent?';
         var filter;          var filter;
         eval('filter=document.'+formname+'.'+uname+'.value;');   if (!ignorefilter) {
       eval('filter=document.'+formname+'.'+uname+'.value;');
    }
         if (filter != null) {          if (filter != null) {
            if (filter != '') {             if (filter != '') {
                url += 'filter='+filter+'&';                 url += 'filter='+filter+'&';
Line 365  sub selectstudent_link { Line 367  sub selectstudent_link {
    return '';     return '';
        }         }
        return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.         return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.
         '","'.$udomele.'");'."'>".&mt('Select User')."</a>";          '","'.$udomele.'","","1");'."'>".&mt('Select User')."</a>";
    }     }
    if ($env{'request.role'}=~/^(au|dc|su)/) {     if ($env{'request.role'}=~/^(au|dc|su)/) {
        return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.         return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.
Line 709  sub help_open_topic { Line 711  sub help_open_topic {
     my ($topic, $text, $stayOnPage, $width, $height) = @_;      my ($topic, $text, $stayOnPage, $width, $height) = @_;
     $text = "" if (not defined $text);      $text = "" if (not defined $text);
     $stayOnPage = 0 if (not defined $stayOnPage);      $stayOnPage = 0 if (not defined $stayOnPage);
     if ($env{'browser.interface'} eq 'textual' ||      if ($env{'browser.interface'} eq 'textual') {
  $env{'environment.remote'} eq 'off' ) {  
  $stayOnPage=1;   $stayOnPage=1;
     }      }
     $width = 350 if (not defined $width);      $width = 350 if (not defined $width);
Line 802  ENDOUTPUT Line 803  ENDOUTPUT
 # now just updates the help link and generates a blue icon  # now just updates the help link and generates a blue icon
 sub help_open_menu {  sub help_open_menu {
     my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text)       my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) 
  = @_;   = @_;    
       
     $stayOnPage = 0 if (not defined $stayOnPage);      $stayOnPage = 0 if (not defined $stayOnPage);
     if ($env{'browser.interface'} eq 'textual' ||      # formerly only used pop-up help (stayOnPage = 0)
  $env{'environment.remote'} eq 'off' ) {      # if environment.remote is on (using remote control UI)
  $stayOnPage=1;      # if ($env{'browser.interface'} eq 'textual' ||
       # $env{'environment.remote'} eq 'off' ) {
       #   $stayOnPage=1;
       #}
       # Now making pop-up help the default even with remote control
       if ($env{'browser.interface'} eq 'textual') {
           $stayOnPage=1;
     }      }
     my $output;      my $output;
     if ($component_help) {      if ($component_help) {
Line 1263  sub domain_select { Line 1269  sub domain_select {
     } &Apache::lonnet::all_domains();      } &Apache::lonnet::all_domains();
     if ($multiple) {      if ($multiple) {
  $domains{''}=&mt('Any domain');   $domains{''}=&mt('Any domain');
    $domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))];
  return &multiple_select_form($name,$value,4,\%domains);   return &multiple_select_form($name,$value,4,\%domains);
     } else {      } else {
    $domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))];
  return &select_form($name,$value,%domains);   return &select_form($name,$value,%domains);
     }      }
 }  }
Line 1430  selected"); Line 1438  selected");
 #-------------------------------------------  #-------------------------------------------
 sub select_dom_form {  sub select_dom_form {
     my ($defdom,$name,$includeempty) = @_;      my ($defdom,$name,$includeempty) = @_;
     my @domains = sort(&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\">\n";
     foreach my $dom (@domains) {      foreach my $dom (@domains) {
Line 2154  sub getemails { Line 2162  sub getemails {
     }      }
 }  }
   
   sub flush_email_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('emailscache',$id);
   }
   
 # ------------------------------------------------------------------ Screenname  # ------------------------------------------------------------------ Screenname
   
 =pod  =pod
Line 2227  sub track_student_link { Line 2244  sub track_student_link {
         $target = '';          $target = '';
     }      }
     if ($start) { $link.='&amp;start='.$start; }      if ($start) { $link.='&amp;start='.$start; }
           $title = &mt($title);
       $linktext = &mt($linktext);
     return qq{<a href="$link" title="$title" $target>$linktext</a>}.      return qq{<a href="$link" title="$title" $target>$linktext</a>}.
  &help_open_topic('View_recent_activity');   &help_open_topic('View_recent_activity');
 }  }
Line 3338  sub designparm { Line 3356  sub designparm {
   
 =back  =back
   
 =head1 HTTP Helpers  =head1 HTML Helpers
   
 =over 4  =over 4
   
Line 3632  sub make_attr_string { Line 3650  sub make_attr_string {
   
 =pod  =pod
   
 =back  
   
 =head1 HTML Helpers  
   
 =over 4  
   
 =item * &endbodytag()  =item * &endbodytag()
   
 Returns a uniform footer for LON-CAPA web pages.  Returns a uniform footer for LON-CAPA web pages.
   
 Inputs: none  Inputs: none
   
 =back  
   
 =cut  =cut
   
 sub endbodytag {  sub endbodytag {
Line 3662  sub endbodytag { Line 3672  sub endbodytag {
   
 =pod  =pod
   
 =over 4  
   
 =item * &standard_css()  =item * &standard_css()
   
 Returns a style sheet  Returns a style sheet
Line 3674  Inputs: (all optional) Line 3682  Inputs: (all optional)
             function       -> force usage of a specific rolish color scheme              function       -> force usage of a specific rolish color scheme
             bgcolor        -> override the default page bgcolor              bgcolor        -> override the default page bgcolor
   
 =back  
   
 =cut  =cut
   
 sub standard_css {  sub standard_css {
Line 4507  END Line 4513  END
   
 =pod  =pod
   
 =over 4  
   
 =item * &headtag()  =item * &headtag()
   
 Returns a uniform footer for LON-CAPA web pages.  Returns a uniform footer for LON-CAPA web pages.
Line 4532  Inputs: $title - optional title for the Line 4536  Inputs: $title - optional title for the
             no_auto_mt_title              no_auto_mt_title
                            -> prevent &mt()ing the title arg                             -> prevent &mt()ing the title arg
   
 =back  
   
 =cut  =cut
   
 sub headtag {  sub headtag {
Line 4589  ADDMETA Line 4591  ADDMETA
   
 =pod  =pod
   
 =over 4  
   
 =item * &font_settings()  =item * &font_settings()
   
 Returns neccessary <meta> to set the proper encoding  Returns neccessary <meta> to set the proper encoding
   
 Inputs: none  Inputs: none
   
 =back  
   
 =cut  =cut
   
 sub font_settings {  sub font_settings {
Line 4615  sub font_settings { Line 4613  sub font_settings {
   
 =pod  =pod
   
 =over 4  
   
 =item * &xml_begin()  =item * &xml_begin()
   
 Returns the needed doctype and <html>  Returns the needed doctype and <html>
   
 Inputs: none  Inputs: none
   
 =back  
   
 =cut  =cut
   
 sub xml_begin {  sub xml_begin {
Line 4649  sub xml_begin { Line 4643  sub xml_begin {
   
 =pod  =pod
   
 =over 4  
   
 =item * &endheadtag()  =item * &endheadtag()
   
 Returns a uniform </head> for LON-CAPA web pages.  Returns a uniform </head> for LON-CAPA web pages.
   
 Inputs: none  Inputs: none
   
 =back  
   
 =cut  =cut
   
 sub endheadtag {  sub endheadtag {
Line 4667  sub endheadtag { Line 4657  sub endheadtag {
   
 =pod  =pod
   
 =over 4  
   
 =item * &head()  =item * &head()
   
 Returns a uniform complete <head>..</head> section for LON-CAPA web pages.  Returns a uniform complete <head>..</head> section for LON-CAPA web pages.
Line 4676  Returns a uniform complete <head>..</hea Line 4664  Returns a uniform complete <head>..</hea
 Inputs: $title - optional title for the page  Inputs: $title - optional title for the page
         $head_extra - optional extra HTML to put inside the <head>          $head_extra - optional extra HTML to put inside the <head>
   
 =back  
   
 =cut  =cut
   
 sub head {  sub head {
Line 4687  sub head { Line 4673  sub head {
   
 =pod  =pod
   
 =over 4  
   
 =item * &start_page()  =item * &start_page()
   
 Returns a complete <html> .. <body> section for LON-CAPA web pages.  Returns a complete <html> .. <body> section for LON-CAPA web pages.
Line 4727  Inputs: $title - optional title for the Line 4711  Inputs: $title - optional title for the
   
                   no_auto_mt_title -> prevent &mt()ing the title arg                    no_auto_mt_title -> prevent &mt()ing the title arg
   
 =back  
   
 =cut  =cut
   
 sub start_page {  sub start_page {
Line 4780  sub start_page { Line 4762  sub start_page {
   
 =pod  =pod
   
 =over 4  
   
 =item * &head()  =item * &head()
   
 Returns a complete </body></html> section for LON-CAPA web pages.  Returns a complete </body></html> section for LON-CAPA web pages.
Line 4988  sub inhibit_menu_check { Line 4968  sub inhibit_menu_check {
   
 =pod  =pod
   
   =back
   
   =head1 User Information Routines
   
   =over 4
   
 =item * &get_users_function()  =item * &get_users_function()
   
 Used by &bodytag to determine the current users primary role.  Used by &bodytag to determine the current users primary role.
Line 5548  sub get_secgrprole_info { Line 5534  sub get_secgrprole_info {
     return (\@sections,\@groups,$allroles,$rolehash,$accesshash);      return (\@sections,\@groups,$allroles,$rolehash,$accesshash);
 }  }
   
   sub user_picker {
       my ($dom,$srch,$forcenewuser) = @_;
       my $currdom = $dom;
       my %curr_selected = (
                           srchin => 'dom',
                           srchby => 'uname',
                         );
       my $srchterm;
       if (ref($srch) eq 'HASH') {
           if ($srch->{'srchby'} ne '') {
               $curr_selected{'srchby'} = $srch->{'srchby'};
           }
           if ($srch->{'srchin'} ne '') {
               $curr_selected{'srchin'} = $srch->{'srchin'};
           }
           if ($srch->{'srchtype'} ne '') {
               $curr_selected{'srchtype'} = $srch->{'srchtype'};
           }
           if ($srch->{'srchdomain'} ne '') {
               $currdom = $srch->{'srchdomain'};
           }
           $srchterm = $srch->{'srchterm'};
       }
       my %lt=&Apache::lonlocal::texthash(
                       'usr'       => 'Search for',
                       'or'        => 'or',
                       'doma'      => 'domain',
                       'uname'     => 'username',
                       'lastname'  => 'last name',
                       'lastfirst' => 'last name, first name',
                       'crs'       => 'in this course',
                       'dom'       => 'in this domain', 
                       'alc'       => 'all LON-CAPA',
                       'instd'     => 'in institutional directory',
                       'exact'     => 'is',
                       'contains'  => 'contains',
                                          );
       my $domform = &select_dom_form($currdom,'srchdomain',1);
   
       my $srchin;
   
       my @srchins = ('crs','dom','alc','instd');
   
       foreach my $option (@srchins) {
           # FIXME 'alc' option unavailable until 
           #       loncreateuser::print_user_query_page()
           #       has been completed.
           next if ($option eq 'alc');
           next if ($option eq 'crs' && !$env{'request.course.id'});
           my $checked =($curr_selected{'srchin'} eq $option) ?'checked="checked"'
                                                      :'';
    my $extra = ($option eq 'dom') ? $domform
                                  : '';
    $srchin.=<<ROW
    <tr>
      <td>
        <label><input type="radio" name="srchin" value="$option" $checked /> $lt{$option}</label> $extra
      </td>
   </tr>
   ROW
       }
   
       my $srchbysel =  ' <select name="srchby">';
       foreach my $option ('uname','lastname','lastfirst') {
           if ($curr_selected{'srchby'} eq $option) {
               $srchbysel .= '
      <option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>';
           } else {
               $srchbysel .= '
      <option value="'.$option.'">'.$lt{$option}.'</option>';
            }
       }
       $srchbysel .= "\n  </select>\n";
   
       my $srchtypesel = ' <select name="srchtype">';
       foreach my $option ('exact','contains') {
           if ($curr_selected{'srchtype'} eq $option) {
               $srchtypesel .= '
      <option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>';
           } else {
               $srchtypesel .= '
      <option value="'.$option.'">'.$lt{$option}.'</option>';
           }
       }
       $srchtypesel .= "\n  </select>\n";
   
       my ($newuserscript,$new_user_create);
   
       if ($forcenewuser) {
    $new_user_create = '<p> <input type="submit" name="forcenew" value="'.&HTML::Entities::encode(&mt('Make new user "[_1]"',$srchterm),'<>&"').'" onclick="javascript:setSearch(\'1\');" /> </p>';
           $newuserscript = <<"ENDSCRIPT";
   
   function setSearch(createnew) {
       if (createnew == 1) {
           for (var i=0; i<document.crtuser.srchby.length; i++) {
               if (document.crtuser.srchby.options[i].value == 'uname') {
                   document.crtuser.srchby.selectedIndex = i;
               }
           }
           for (var i=0; i<document.crtuser.srchin.length; i++) {
               if ( document.crtuser.srchin[i].value == 'dom') {
    document.crtuser.srchin[i].checked = 1;
               }
           }
           for (var i=0; i<document.crtuser.srchtype.length; i++) {
               if (document.crtuser.srchtype.options[i].value == 'exact') {
                   document.crtuser.srchtype.selectedIndex = i;
               }
           }
           for (var i=0; i<document.crtuser.srchdomain.length; i++) {
               if (document.crtuser.srchdomain.options[i].value == '$env{'request.role.domain'}') {
                   document.crtuser.srchdomain.selectedIndex = i;
               }
           }
       }
   }
   ENDSCRIPT
   
       }
   
       my $output = <<"END_BLOCK";
   <script type="text/javascript">
   function validateEntry() {
   
       var checkok = 1;
       var srchin;
       for (var i=0; i<document.crtuser.srchin.length; i++) {
    if ( document.crtuser.srchin[i].checked ) {
       srchin = document.crtuser.srchin[i].value;
    }
       }
   
       var srchtype = document.crtuser.srchtype.options[document.crtuser.srchtype.selectedIndex].value;
       var srchby = document.crtuser.srchby.options[document.crtuser.srchby.selectedIndex].value;
       var srchdomain = document.crtuser.srchdomain.options[document.crtuser.srchdomain.selectedIndex].value;
       var srchterm =  document.crtuser.srchterm.value;
       var msg = "";
   
       if (srchterm == "") {
           checkok = 0;
           msg += "You must include some text to search for.\\n";
       }
   
       if (srchtype== 'contains') {
           if (srchterm.length < 3) {
               checkok = 0;
               msg += "The text you are searching for must contain at least three characters when using a 'contained in' type search.\\n";
           }
       }
       if (srchin == 'instd') {
           if (srchdomain == '') {
               checkok = 0;
               msg += "You must choose a domain when using an institutional directory search.\\n";
           }
       }
       if (srchin == 'dom') {
           if (srchdomain == '') {
               checkok = 0;
               msg += "You must choose a domain when using a domain search.\\n";
           }
       }
       if (srchby == 'lastfirst') {
           if (srchterm.indexOf(",") == -1) {
               checkok = 0;
               msg += "When using searching by last,first you must include a comma as separator between last name and first name.\\n";
           }
           if (srchterm.indexOf(",") == srchterm.length -1) {
               checkok = 0;
               msg += "When searching by last,first you must include at least one character in the first name.\\n";
           }
       }
       if (checkok == 0) {
           alert("The following need to be corrected before the search can be run:\\n"+msg);
           return;
       }
       if (checkok == 1) {
           document.crtuser.submit();
       }
   }
   
   $newuserscript
   
   </script>
   
   $new_user_create
   
   <table>
    <tr>
     <td> $srchbysel
          $srchtypesel 
          <input type="text" size="15" name="srchterm" value="$srchterm" />
     </td>
    </tr>
   $srchin
   </table>
   <br />
   END_BLOCK
   
       return $output;
   }
   
   
   
 =pod  =pod
   
   =back
   
   =head1 HTTP Helpers
   
   =over 4
   
 =item * get_unprocessed_cgi($query,$possible_names)  =item * get_unprocessed_cgi($query,$possible_names)
   
 Modify the %env hash to contain unprocessed CGI form parameters held in  Modify the %env hash to contain unprocessed CGI form parameters held in

Removed from v.1.548  
changed lines
  Added in v.1.559


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>