Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.111 and 1.112

version 1.111, 2005/08/05 18:14:40 version 1.112, 2005/10/04 19:59:15
Line 1217  returns: nothing Line 1217  returns: nothing
 ############################################################  ############################################################
 ############################################################  ############################################################
   
   # Nested table routines.
   #
   # Routines to display form items in a multi-row table with 2 columns.
   # Uses nested tables to divide form elements into segments.
   # For examples of use see loncom/interface/lonnotify.pm 
   #
   # Can be used in following order: ...
   # &start_pick_box()
   # row1
   # row2
   # row3   ... etc.
   # &submit_row(0
   # &end_pickbox()
   #
   # where row1, row 2 etc. are chosen from &role_select_row,&course_select_row,
   # &status_select_row and &email_default_row
   #
   # Can also be used in following order:
   #
   # &start_pick_box()
   # &row_title()
   # &row_closure()
   # &row_title()
   # &row_closure()  ... etc.
   # &submit_row()
   # &end_pick_box()
   #
   # In general a &submit_row() call should proceed the call to &end_pick_box(),
   # as this routine adds a button for form submission.
   # &submit_row(0 does not require a &row_closure after it.
   #  
   # &start_pick_box() creates a bounding table with 1-pixel wide black border.
   # rows should be placed between calls to &start_pick_box() and &end_pick_box.
   #
   # &row_title() adds a title in the left column for each segment.
   # &row_closure() closes a row with a 1-pixel wide black line.
   #
   # &role_select_row() provides a select box from which to choose 1 or more roles 
   # &course_select_row provides ways of picking groups of courses
   #    radio buttons: all, by category or by picking from a course picker pop-up
   #      note: by category option is only displayed if a domain has implemented 
   #                selection by year, semester, department, number etc.
   #
   # &status_select_row() provides a select box from which to choose 1 or more
   #  access types (current access, prior access, and future access)  
   #
   # &email_default_row() provides text boxes for default e-mail suffixes for
   #  different authentication types in a domain.
   #
   # &row_title() and &row_closure() are called internally by the &*_select_row
   # routines, but can also be called directly to start and end rows which have 
   # needs that are not accommodated by the *_select_row() routines.    
   
   sub start_pick_box {
       my ($table_width) = @_;
       my $output = <<"END";
    <table width="$table_width" border="0" cellpadding="0" cellspacing="1" bgcolor="#000000">
     <tr>
         <td>
          <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
           <tr>
            <td>
             <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#ffffff">
   END
       return $output;
   }
   
   sub end_pick_box {
       my $output = <<"END";
          </table>
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>
   END
       return $output;
   }
   
   sub row_title {
       my ($col_width,$tablecolor,$title) = @_;
       my $output = <<"ENDONE";
              <tr>
               <td width="$col_width" bgcolor="$tablecolor">
                <table width="$col_width" border="0" cellpadding="8" cellspacing="0">
                 <tr>
                  <td align="right"><b>$title:</b>
                  </td>
                 </tr>
                </table>
               </td>
               <td width="100%" valign="top">
                <table width="100%" border="0" cellpadding="8" cellspacing="0">
                 <tr>
   ENDONE
       return $output;
   }
   
   sub row_closure {
       my $output .= <<"ENDTWO";
                 </tr>
                </table>
               </td>
              </tr>
              <tr>
               <td width="100%" colspan="2" bgcolor="#000000">
                <img src="/adm/lonMisc/blackdot.gif" /><br />
               </td>
              </tr>
   ENDTWO
       return $output;
   }
   
   sub role_select_row {
       my ($roles,$col_width,$tablecolor,$title) = @_;
       my $output = &row_title($col_width,$tablecolor,$title);
       $output .= qq|               <td>
                                     <select name="roles" multiple >\n|;
       foreach (@$roles) {
           my $plrole=&Apache::lonnet::plaintext($_);
           $output .= '  <option value="'.$_.'">'.$plrole.'</option>';
       }
       $output .= qq|                </select>
                                    </td>\n|;
       $output .= &row_closure();
       return $output;
   }
   
   sub course_select_row {
       my ($col_width,$tablecolor,$title,$formname,$totcodes,$codetitles,$idlist,$idlist_titles) = @_;
       my $output = &row_title($col_width,$tablecolor,$title);
       $output .= "          <td>\n";
       $output .= qq|
   <script type="text/javascript" language="Javascript" >
       function coursePick (formname) {
           for  (var i=0; i<formname.coursepick.length; i++) {
               if (!formname.coursepick[i].checked) {
                   if (formname.coursepick[i].value == 'category') {
                       courseSet('');
                   }
                   if (formname.coursepick[i].value == 'specific') {
                       formname.coursetotal.value = 0;
                       formname.courselist = '';
                   }
               }
           }
       }
   </script>
       |;
       my $courseform='<b>'.&Apache::loncommon::selectcourse_link
                        ($formname,'pickcourse','pickdomain','coursedesc').'</b>';
       if ($totcodes > 0) {
           $output .= '<input type="radio" name="coursepick" value="all" onclick="coursePick(this.form)" />'.&mt('All courses');
           my $numtitles = @$codetitles;
           if ($numtitles > 0) {
               $output .= '<br /><input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').' <br />';
               $output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n".
                  '<select name="'.$$codetitles[0].
                  '" onChange="courseSet('."'$$codetitles[0]'".')">'."\n".
                  ' <option value="-1" />Select'."\n";
               my @items = ();
               my @longitems = ();
               if ($$idlist{$$codetitles[0]} =~ /","/) {
                   @items = split/","/,$$idlist{$$codetitles[0]};
               } else {
                   $items[0] = $$idlist{$$codetitles[0]};
               }
               if (defined($$idlist_titles{$$codetitles[0]})) {
                   if ($$idlist_titles{$$codetitles[0]} =~ /","/) {
                       @longitems = split/","/,$$idlist_titles{$$codetitles[0]};
                   } else {
                       $longitems[0] = $$idlist_titles{$$codetitles[0]};
                   }
                   for (my $i=0; $i<@longitems; $i++) {
                       if ($longitems[$i] eq '') {
                           $longitems[$i] = $items[$i];
                       }
                   }
               } else {
                   @longitems = @items;
               }
               for (my $i=0; $i<@items; $i++) {
                   $output .= ' <option value="'.$items[$i].'">'.$longitems[$i].'</option>';
               }
               $output .= '</select></td>';
               for (my $i=1; $i<$numtitles; $i++) {
                   $output .= '<td>'.$$codetitles[$i].'<br />'."\n".
                             '<select name="'.$$codetitles[$i].
                             '" onChange="courseSet('."'$$codetitles[$i]'".')">'."\n".
                             '<option value="-1">&lt;-Pick '.$$codetitles[$i-1].'</option>'."\n".
                             '</select>'."\n".
                             '</td>';
               }
               $output .= '</tr></table><br />';
           }
       }
       $output .= '<input type="radio" name="coursepick" value="specific" onclick="coursePick(this.form);opencrsbrowser('."'".'rolefilter'."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."',''".')" />'.&mt('Pick specific course(s):').' '.$courseform.'&nbsp;&nbsp;<input type="text" value="0" size="4" name="coursetotal" /><input type="hidden" name="courselist" value="" />selected.<br /></td>'."\n";
       $output .= &row_closure();
       return $output;
   }
   
   sub status_select_row {
       my ($types,$col_width,$tablecolor,$title) = @_;
       my $output = &row_title($col_width,$tablecolor,$title);
       $output .= qq|              <td>
                                       <select name="types" multiple>\n|;
       foreach my $status_type (sort keys (%{$types})) {
           $output .= '  <option value="'.$status_type.'">'.$$types{$status_type}.'</option>';
       }
       $output .= qq|                   </select>
                                       </td>\n|; 
       $output .= &row_closure();
       return $output;
   }
   
   sub email_default_row {
       my ($authtypes,$col_width,$tablecolor,$title,$descrip) = @_;
       my $output = &row_title($col_width,$tablecolor,$title);
       my @rowcols = ('#eeeeee','#dddddd');
       $output .= '              <td>'.$descrip.'
                                  <table>
                                   <tr>
                                    <td><b>'.&mt('Authentication Method').'</b></td><td>&nbsp;&nbsp;&nbsp;</td><td>&nbsp;&nbsp;&nbsp;</td><td><b>'.&mt('Username -> e-mail conversion').'</b></td>
                                   </tr>'."\n";
       my $rownum = 0;
       foreach my $auth (sort keys (%{$authtypes})) {
           my ($userentry,$size);
           my $rowiter = $rownum%2;
           if ($auth =~ /^krb/) {
               $userentry = '';
               $size = 25;
           } else {
               $userentry = 'username@';
               $size = 15;
           }
           $output .= '<tr rowcolor="'.$rowcols[$rowiter].'"><td>  '.$$authtypes{$auth}.'</td><td>&nbsp;&nbsp;&nbsp;</td><td align="right">'.$userentry.'</td><td><input type="text" name="'.$auth.'" size="'.$size.'" /></td></tr>';
           $rownum ++;
       }
       $output .= "                   </table>
                                     </td>\n";
       $output .= &row_closure();
       return $output;
   }
   
   
   sub submit_row {
       my ($col_width,$tablecolor,$title,$cmd,$submit_text) = @_;
       my $output .= &row_title($col_width,$tablecolor,$title);
       $output .= qq|
               <td width="100%" valign="top" align="right">
                <br />
                <input type="hidden" name="command" value="$cmd" />
                <input type="submit" value="$submit_text"/> &nbsp;
                <br /><br />
               </td>\n|;
       return $output;
   }
   
 1;  1;
   

Removed from v.1.111  
changed lines
  Added in v.1.112


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