Diff for /loncom/interface/lonhelper.pm between versions 1.101 and 1.127

version 1.101, 2005/04/07 21:36:22 version 1.127, 2005/10/17 21:17:59
Line 1188  sub render { Line 1188  sub render {
   
     if ($self->{'multichoice'}) {      if ($self->{'multichoice'}) {
         $result .= <<SCRIPT;          $result .= <<SCRIPT;
 <script>  <script type="text/javascript">
   // <!--
     function checkall(value, checkName) {      function checkall(value, checkName) {
  for (i=0; i<document.forms.helpform.elements.length; i++) {   for (i=0; i<document.forms.helpform.elements.length; i++) {
             ele = document.forms.helpform.elements[i];              ele = document.forms.helpform.elements[i];
Line 1197  sub render { Line 1198  sub render {
             }              }
         }          }
     }      }
   // -->
 </script>  </script>
 SCRIPT  SCRIPT
     }      }
Line 1265  BUTTONS Line 1267  BUTTONS
         my $id = &new_id();          my $id = &new_id();
         $result .= "<tr>\n<td width='20'>&nbsp;</td>\n";          $result .= "<tr>\n<td width='20'>&nbsp;</td>\n";
         $result .= "<td valign='top'><input type='$type' name='$var.forminput'"          $result .= "<td valign='top'><input type='$type' name='$var.forminput'"
             . "' value='" .               . " value='" . 
             HTML::Entities::encode($choice->[1],"<>&\"'")               HTML::Entities::encode($choice->[1],"<>&\"'") 
             . "'";              . "'";
         if ($checkedChoices{$choice->[1]}) {          if ($checkedChoices{$choice->[1]}) {
             $result .= " checked ";              $result .= " checked='checked' ";
         }          }
         $result .= qq{id="$id"};          $result .= qq{id="id$id"};
         my $choiceLabel = $choice->[0];          my $choiceLabel = $choice->[0];
         if ($choice->[4]) {  # if we need to evaluate this choice          if ($choice->[4]) {  # if we need to evaluate this choice
             $choiceLabel = "sub { my $helper = shift; my $state = shift;" .              $choiceLabel = "sub { my $helper = shift; my $state = shift;" .
Line 1279  BUTTONS Line 1281  BUTTONS
             $choiceLabel = eval($choiceLabel);              $choiceLabel = eval($choiceLabel);
             $choiceLabel = &$choiceLabel($helper, $self);              $choiceLabel = &$choiceLabel($helper, $self);
         }          }
         $result .= "/></td><td> ".qq{<label for="$id">}.          $result .= "/></td><td> ".qq{<label for="id$id">}.
             $choiceLabel. "</label></td></tr>\n";              $choiceLabel. "</label></td></tr>\n";
     }      }
     $result .= "</table>\n\n\n";      $result .= "</table>\n\n\n";
Line 1427  sub render { Line 1429  sub render {
             HTML::Entities::encode($choice->[1],"<>&\"'")               HTML::Entities::encode($choice->[1],"<>&\"'") 
             . "'";              . "'";
         if ($checkedChoices{$choice->[1]}) {          if ($checkedChoices{$choice->[1]}) {
             $result .= " selected";              $result .= " selected='selected' ";
         }          }
         my $choiceLabel = $choice->[0];          my $choiceLabel = $choice->[0];
         if ($choice->[4]) {  # if we need to evaluate this choice          if ($choice->[4]) {  # if we need to evaluate this choice
Line 1436  sub render { Line 1438  sub render {
             $choiceLabel = eval($choiceLabel);              $choiceLabel = eval($choiceLabel);
             $choiceLabel = &$choiceLabel($helper, $self);              $choiceLabel = &$choiceLabel($helper, $self);
         }          }
         $result .= ">" . &mtn($choiceLabel) . "\n";          $result .= ">" . &mtn($choiceLabel) . "</option>\n";
     }      }
     $result .= "</select>\n";      $result .= "</select>\n";
   
Line 1534  sub start_date { Line 1536  sub start_date {
     $paramHash->{'variable'} = $token->[2]{'variable'};      $paramHash->{'variable'} = $token->[2]{'variable'};
     $helper->declareVar($paramHash->{'variable'});      $helper->declareVar($paramHash->{'variable'});
     $paramHash->{'hoursminutes'} = $token->[2]{'hoursminutes'};      $paramHash->{'hoursminutes'} = $token->[2]{'hoursminutes'};
       $paramHash->{'anytime'} = $token->[2]{'anytime'};
 }  }
   
 sub end_date {  sub end_date {
Line 1552  sub render { Line 1555  sub render {
     my $var = $self->{'variable'};      my $var = $self->{'variable'};
   
     my $date;      my $date;
       
       my $time=time;
       my ($anytime,$onclick);
   
       if (defined($self->{DEFAULT_VALUE})) {
           my $valueFunc = eval($self->{DEFAULT_VALUE});
           die('Error in default value code for variable ' . 
               $self->{'variable'} . ', Perl said: ' . $@) if $@;
           $time = &$valueFunc($helper, $self);
    if (lc($time) eq 'anytime') { $time=time; $anytime=1; }
       }
       if ($anytime) {
    $onclick = "onclick=\"javascript:updateCheck(this.form,'${var}anytime',false)\"";
       }
     # Default date: The current hour.      # Default date: The current hour.
     $date = localtime();      $date = localtime($time);
     $date->min(0);      $date->min(0);
   
     if (defined $self->{ERROR_MSG}) {      if (defined $self->{ERROR_MSG}) {
Line 1563  sub render { Line 1579  sub render {
   
     # Month      # Month
     my $i;      my $i;
     $result .= "<select name='${var}month'>\n";      $result .= "<select $onclick name='${var}month'>\n";
     for ($i = 0; $i < 12; $i++) {      for ($i = 0; $i < 12; $i++) {
         if ($i == $date->mon) {          if ($i == $date->mon) {
             $result .= "<option value='$i' selected>";              $result .= "<option value='$i' selected='selected'>";
         } else {          } else {
             $result .= "<option value='$i'>";              $result .= "<option value='$i'>";
         }          }
Line 1575  sub render { Line 1591  sub render {
     $result .= "</select>\n";      $result .= "</select>\n";
   
     # Day      # Day
     $result .= "<select name='${var}day'>\n";      $result .= "<select $onclick name='${var}day'>\n";
     for ($i = 1; $i < 32; $i++) {      for ($i = 1; $i < 32; $i++) {
         if ($i == $date->mday) {          if ($i == $date->mday) {
             $result .= '<option selected>';              $result .= '<option selected="selected">';
         } else {          } else {
             $result .= '<option>';              $result .= '<option>';
         }          }
Line 1587  sub render { Line 1603  sub render {
     $result .= "</select>,\n";      $result .= "</select>,\n";
   
     # Year      # Year
     $result .= "<select name='${var}year'>\n";      $result .= "<select $onclick name='${var}year'>\n";
     for ($i = 2000; $i < 2030; $i++) { # update this after 64-bit dates      for ($i = 2000; $i < 2030; $i++) { # update this after 64-bit dates
         if ($date->year + 1900 == $i) {          if ($date->year + 1900 == $i) {
             $result .= "<option selected>";              $result .= "<option selected='selected'>";
         } else {          } else {
             $result .= "<option>";              $result .= "<option>";
         }          }
Line 1604  sub render { Line 1620  sub render {
  my $am = &mt('a.m.');   my $am = &mt('a.m.');
  my $pm = &mt('p.m.');   my $pm = &mt('p.m.');
         # Build hour          # Build hour
         $result .= "<select name='${var}hour'>\n";          $result .= "<select $onclick name='${var}hour'>\n";
         $result .= "<option " . ($date->hour == 0 ? 'selected ':'') .          $result .= "<option " . ($date->hour == 0 ? 'selected="selected" ':'') .
             " value='0'>" . &mt('midnight') . "</option>\n";              " value='0'>" . &mt('midnight') . "</option>\n";
         for ($i = 1; $i < 12; $i++) {          for ($i = 1; $i < 12; $i++) {
             if ($date->hour == $i) {              if ($date->hour == $i) {
                 $result .= "<option selected value='$i'>$i $am</option>\n";                  $result .= "<option selected='selected' value='$i'>$i $am</option>\n";
             } else {              } else {
                 $result .= "<option value='$i'>$i $am</option>\n";                  $result .= "<option value='$i'>$i $am</option>\n";
             }              }
         }          }
         $result .= "<option " . ($date->hour == 12 ? 'selected ':'') .          $result .= "<option " . ($date->hour == 12 ? 'selected="selected" ':'') .
             " value='12'>" . &mt('noon') . "</option>\n";              " value='12'>" . &mt('noon') . "</option>\n";
         for ($i = 13; $i < 24; $i++) {          for ($i = 13; $i < 24; $i++) {
             my $printedHour = $i - 12;              my $printedHour = $i - 12;
             if ($date->hour == $i) {              if ($date->hour == $i) {
                 $result .= "<option selected value='$i'>$printedHour $pm</option>\n";                  $result .= "<option selected='selected' value='$i'>$printedHour $pm</option>\n";
             } else {              } else {
                 $result .= "<option value='$i'>$printedHour $pm</option>\n";                  $result .= "<option value='$i'>$printedHour $pm</option>\n";
             }              }
Line 1627  sub render { Line 1643  sub render {
   
         $result .= "</select> :\n";          $result .= "</select> :\n";
   
         $result .= "<select name='${var}minute'>\n";          $result .= "<select $onclick name='${var}minute'>\n";
         for ($i = 0; $i < 60; $i++) {   my $selected=0;
           for my $i ((0,15,30,45,59,undef,0..59)) {
             my $printedMinute = $i;              my $printedMinute = $i;
             if ($i < 10) {              if (defined($i) && $i < 10) {
                 $printedMinute = "0" . $printedMinute;                  $printedMinute = "0" . $printedMinute;
             }              }
             if ($date->min == $i) {              if (!$selected && $date->min == $i) {
                 $result .= "<option selected>";                  $result .= "<option selected='selected'>";
    $selected=1;
             } else {              } else {
                 $result .= "<option>";                  $result .= "<option>";
             }              }
Line 1642  sub render { Line 1660  sub render {
         }          }
         $result .= "</select>\n";          $result .= "</select>\n";
     }      }
       if ($self->{'anytime'}) {
    $result.=(<<CHECK);
   <script type="text/javascript">
   // <!--
       function updateCheck(form,name,value) {
    var checkbox=form[name];
    checkbox.checked = value;
       }
   // -->
   </script>
   CHECK
    $result.="&nbsp;or&nbsp;<label><input type='checkbox' ";
    if ($anytime) {
       $result.=' checked="checked" '
    }
    $result.="name='${var}anytime'/>".&mt('Anytime').'</label>'
       }
     return $result;      return $result;
   
 }  }
Line 1650  sub render { Line 1684  sub render {
 sub postprocess {  sub postprocess {
     my $self = shift;      my $self = shift;
     my $var = $self->{'variable'};      my $var = $self->{'variable'};
     my $month = $env{'form.' . $var . 'month'};       if ($env{'form.' . $var . 'anytime'}) {
     my $day = $env{'form.' . $var . 'day'};    $helper->{VARS}->{$var} = undef;
     my $year = $env{'form.' . $var . 'year'};       } else {
     my $min = 0;    my $month = $env{'form.' . $var . 'month'}; 
     my $hour = 0;   my $day = $env{'form.' . $var . 'day'}; 
     if ($self->{'hoursminutes'}) {   my $year = $env{'form.' . $var . 'year'}; 
         $min = $env{'form.' . $var . 'minute'};   my $min = 0; 
         $hour = $env{'form.' . $var . 'hour'};   my $hour = 0;
     }   if ($self->{'hoursminutes'}) {
       $min = $env{'form.' . $var . 'minute'};
       $hour = $env{'form.' . $var . 'hour'};
    }
   
    my $chosenDate;
    eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);};
    my $error = $@;
   
    # Check to make sure that the date was not automatically co-erced into a 
    # valid date, as we want to flag that as an error
    # This happens for "Feb. 31", for instance, which is coerced to March 2 or
    # 3, depending on if it's a leap year
    my $checkDate = localtime($chosenDate);
   
    if ($error || $checkDate->mon != $month || $checkDate->mday != $day ||
       $checkDate->year + 1900 != $year) {
       unless (Apache::lonlocal::current_language()== ~/^en/) {
    $self->{ERROR_MSG} = &mt("Invalid date entry");
    return 0;
       }
       # LOCALIZATION FIXME: Needs to be parameterized
       $self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a "
    . "date because it doesn't exist. Please enter a valid date.";
   
     my $chosenDate;  
     eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);};  
     my $error = $@;  
   
     # Check to make sure that the date was not automatically co-erced into a   
     # valid date, as we want to flag that as an error  
     # This happens for "Feb. 31", for instance, which is coerced to March 2 or  
     # 3, depending on if it's a leap year  
     my $checkDate = localtime($chosenDate);  
   
     if ($error || $checkDate->mon != $month || $checkDate->mday != $day ||  
         $checkDate->year + 1900 != $year) {  
  unless (Apache::lonlocal::current_language()== ~/^en/) {  
     $self->{ERROR_MSG} = &mt("Invalid date entry");  
     return 0;      return 0;
  }   }
  # LOCALIZATION FIXME: Needs to be parameterized   $helper->{VARS}->{$var} = $chosenDate;
         $self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a "  
             . "date because it doesn't exist. Please enter a valid date.";  
   
         return 0;  
     }      }
   
     $helper->{VARS}->{$var} = $chosenDate;  
   
     if (defined($self->{NEXTSTATE})) {      if (defined($self->{NEXTSTATE})) {
         $helper->changeState($self->{NEXTSTATE});          $helper->changeState($self->{NEXTSTATE});
     }      }
Line 1930  sub render { Line 1967  sub render {
   
     if ($self->{'multichoice'}) {      if ($self->{'multichoice'}) {
         $result = <<SCRIPT;          $result = <<SCRIPT;
 <script>  <script type="text/javascript">
   // <!--
     function checkall(value, checkName) {      function checkall(value, checkName) {
  for (i=0; i<document.forms.helpform.elements.length; i++) {   for (i=0; i<document.forms.helpform.elements.length; i++) {
             ele = document.forms.helpform.elements[i];              ele = document.forms.helpform.elements[i];
Line 1939  sub render { Line 1977  sub render {
             }              }
         }          }
     }      }
   // -->
 </script>  </script>
 SCRIPT  SCRIPT
         my %lt=&Apache::lonlocal::texthash(          my %lt=&Apache::lonlocal::texthash(
Line 1978  BUTTONS Line 2017  BUTTONS
  $mapUrl = $self->{MAP_URL};   $mapUrl = $self->{MAP_URL};
     }      }
   
       my %defaultSymbs;
       if (defined($self->{DEFAULT_VALUE})) {
           my $valueFunc = eval($self->{DEFAULT_VALUE});
           die 'Error in default value code for variable ' . 
               $self->{'variable'} . ', Perl said: ' . $@ if $@;
           my @defaultSymbs = &$valueFunc($helper, $self);
    if (!$multichoice && @defaultSymbs) { # only allowed 1
       @defaultSymbs = ($defaultSymbs[0]);
    }
    %defaultSymbs = map { if ($_) {($_,1) } } @defaultSymbs;
    delete($defaultSymbs{''});
       }
   
     # Create the composite function that renders the column on the nav map      # Create the composite function that renders the column on the nav map
     # have to admit any language that lets me do this can't be all bad      # have to admit any language that lets me do this can't be all bad
Line 2016  BUTTONS Line 2067  BUTTONS
  "\|\|\|";   "\|\|\|";
     my $checked ="";      my $checked ="";
     if($var_value =~ /\Q|||$raw_name|||\E/) {      if($var_value =~ /\Q|||$raw_name|||\E/) {
  $checked = "checked";   $checked = "checked='checked'";
     }      }
     $col .=       $col .= 
                         "<td align='center'><input type='checkbox' name ='$option_var".                          "<td align='center'><input type='checkbox' name ='$option_var".
Line 2026  BUTTONS Line 2077  BUTTONS
     }      }
   
             $col .= "<td align='center'><input type='$inputType' name='${var}.forminput' ";              $col .= "<td align='center'><input type='$inputType' name='${var}.forminput' ";
             if (!$checked && !$multichoice) {      if (%defaultSymbs) {
                 $col .= "checked ";   my $symb=$resource->symb();
                 $checked = 1;   if (exists($defaultSymbs{$symb})) {
             }      $col .= "checked='checked' ";
     if ($multichoice) { # all resources start checked; see bug 1174      $checked = 1;
  $col .= "checked ";   }
  $checked = 1;      } else {
    if (!$checked && !$multichoice) {
       $col .= "checked='checked' ";
       $checked = 1;
    }
    if ($multichoice) { # all resources start checked; see bug 1174
       $col .= "checked='checked' ";
       $checked = 1;
    }
     }      }
             $col .= "value='" . $resource_name  . "' /></td>";              $col .= "value='" . $resource_name  . "' /></td>";
   
Line 2057  BUTTONS Line 2116  BUTTONS
     };      };
     $result.=(<<RADIO);      $result.=(<<RADIO);
 <script type="text/javascript">  <script type="text/javascript">
   // <!--
     function updateRadio(form,name,value) {      function updateRadio(form,name,value) {
  var radiobutton=form[name];   var radiobutton=form[name];
  for (var i=0; i<radiobutton.length; i++) {   for (var i=0; i<radiobutton.length; i++) {
Line 2072  BUTTONS Line 2132  BUTTONS
  var which=select.selectedIndex;   var which=select.selectedIndex;
  hidden.value=select.options[which].value;   hidden.value=select.options[which].value;
     }      }
   // -->
 </script>  </script>
 <input type="hidden" name="${var}_part.forminput" />  <input type="hidden" name="${var}_part.forminput" />
   
Line 2148  selection. Defaults to false. Line 2209  selection. Defaults to false.
 If true, only active students and course personnel will be  If true, only active students and course personnel will be
 shown. Defaults to false.  shown. Defaults to false.
   
   =item * B<emptyallowed>:
   
   If true, the selection of no users is allowed. Defaults to false.
   
 =back  =back
   
 =cut  =cut
Line 2183  sub start_student { Line 2248  sub start_student {
     if (defined($token->[2]{'nextstate'})) {      if (defined($token->[2]{'nextstate'})) {
         $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};          $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};
     }      }
       $paramHash->{'emptyallowed'} = $token->[2]{'emptyallowed'};
           
 }      }    
   
Line 2203  sub render { Line 2269  sub render {
   
     if ($self->{'multichoice'}) {      if ($self->{'multichoice'}) {
         $result = <<SCRIPT;          $result = <<SCRIPT;
 <script>  <script type="text/javascript">
   // <!--
     function checkall(value, checkName) {      function checkall(value, checkName) {
  for (i=0; i<document.forms.helpform.elements.length; i++) {   for (i=0; i<document.forms.helpform.elements.length; i++) {
             ele = document.forms.helpform.elements[i];              ele = document.forms.helpform.elements[i];
Line 2236  sub render { Line 2303  sub render {
             }               } 
         }          }
     }      }
       function getDesiredState() {     // Return desired person state radio value.
           numRadio = document.forms.helpform.personstate.length;
           for (i =0; i < numRadio; i++) {
       if (document.forms.helpform.personstate[i].checked) {
                   return document.forms.helpform.personstate[i].value;
               }
           }
           return "";
       }
   
       function checksections(value) {    // Check selected sections.
           numSections  = document.forms.helpform.chosensections.length;
    desiredState = getDesiredState();
   
    for (var option = 0; option < numSections; option++) {
       if(document.forms.helpform.chosensections.options[option].selected) {
    section = document.forms.helpform.chosensections.options[option].text;
    if (section == "none") {
       section ="";
    }
    for (i = 0; i < document.forms.helpform.elements.length; i++ ) {
       if (document.forms.helpform.elements[i].value.indexOf(':') != -1) {
    info = document.forms.helpform.elements[i].value.split(':');
    hisSection = info[2];
    hisState   = info[4];
    if (desiredState == hisState ||
       desiredState == "All") {
       if(hisSection == section ||
          section =="" ) {
    document.forms.helpform.elements[i].checked = value;
       }
    }
       }
    }
               }
    }
      }
   // -->
 </script>  </script>
 SCRIPT  SCRIPT
   
Line 2250  SCRIPT Line 2355  SCRIPT
         $buttons = <<BUTTONS;          $buttons = <<BUTTONS;
 <br />  <br />
 <table>  <table>
   <tr>  
       
     <td><input type="button" onclick="checkactive()" value="$lt{'ocs'}" /></td>  
     <td><input type="button" onclick="uncheckexpired()" value="$lt{'ues'}" /><br /></td>  
   </tr>  
   <tr>    <tr>
      <td><input type="button" onclick="checkall(true, '$var')" value="$lt{'sas'}" /></td>       <td><input type="button" onclick="checkall(true, '$var')" value="$lt{'sas'}" /></td>
      <td> <input type="button" onclick="checkall(false, '$var')" value="$lt{'uas'}" /><br /></td>       <td> <input type="button" onclick="checkall(false, '$var')" value="$lt{'uas'}" /><br /></td>
   </tr>    </tr>
   <tr>    
       <td><input type="button" onclick="checksec(true)" value="$lt{'sfsg'}"></td>  
       <td><input type="text" size="5" name="chksec">&nbsp;</td>  
   </tr>  
   <tr>  
       <td><input type="button" onclick="checksec(false)" value="$lt{'ufsg'}"></td>  
       <td></td>  
   </tr>  
 </table>  </table>
 <br />  <br />
 BUTTONS  BUTTONS
Line 2276  BUTTONS Line 2370  BUTTONS
         $result .= '<font color="#FF0000">' . $self->{ERROR_MSG} . '</font><br /><br />';          $result .= '<font color="#FF0000">' . $self->{ERROR_MSG} . '</font><br /><br />';
     }      }
   
       my %defaultUsers;
       if (defined($self->{DEFAULT_VALUE})) {
           my $valueFunc = eval($self->{DEFAULT_VALUE});
           die 'Error in default value code for variable ' . 
               $self->{'variable'} . ', Perl said: ' . $@ if $@;
           my @defaultUsers = &$valueFunc($helper, $self);
    if (!$self->{'multichoice'} && @defaultUsers) { # only allowed 1
       @defaultUsers = ($defaultUsers[0]);
    }
    %defaultUsers = map { if ($_) {($_,1) } } @defaultUsers;
    delete($defaultUsers{''});
       }
     my $choices = [];      my $choices = [];
   
     # Load up the non-students, if necessary      # Load up the non-students, if necessary
Line 2341  BUTTONS Line 2447  BUTTONS
         $result .= "<tr><td><input type='$type' name='" .          $result .= "<tr><td><input type='$type' name='" .
             $self->{'variable'} . '.forminput' . "'";              $self->{'variable'} . '.forminput' . "'";
                           
         if (!$self->{'multichoice'} && !$checked) {   if (%defaultUsers) {
             $result .= " checked ";      my $user=$choice->[0];
       if (exists($defaultUsers{$user})) {
    $result .= " checked='checked' ";
    $checked = 1;
       }
    } elsif (!$self->{'multichoice'} && !$checked) {
               $result .= " checked='checked' ";
             $checked = 1;              $checked = 1;
         }          }
         $result .=          $result .=
Line 2364  BUTTONS Line 2476  BUTTONS
     }      }
   
     $result .= "</table>\n\n";      $result .= "</table>\n\n";
     $result .= $buttons;          $result .= $buttons;   
           #
       #  now add the fancy section choice... first enumerate the sections:
       if ($self->{'multichoice'}) {
    my %sections;
    for my $key (@keys) {
       my $section_name = $classlist->{$key}->[$section];
       if ($section_name ne "") {
    $sections{$section_name} = 1;
       }
    }
    #  The variable $choice_widget will have the html to make the choice 
    #  selector.
    my $size=5;
    if (scalar(keys(%sections)) < 5) {
       $size=scalar(keys(%sections));
    }
    my $choice_widget = '<select multiple name="chosensections" size="'.$size.'">'."\n";
    foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) {
       $choice_widget .= "<option name=\"$sec\">$sec</option>\n";
    }
    $choice_widget .= "<option>none</option></select>\n";
   
    # Build a table without any borders to contain the section based
    # selection:
   
    my $section_selectors =<<SECTIONSELECT;
   <table border="0">
     <tr valign="top">
      <td>For Sections:</td><td>$choice_widget</td>
      <td><label><input type="radio" name="personstate" value="Active" checked />
                  Current Students</label></td>
      <td><label><input type="radio" name="personstate" value="All" />
                  All students</label></td>
      <td><label><input type="radio" name="personstate" value="Expired" />
                  Expired Students</label></td>
     </tr>
     <tr>
      <td><input type="button" value="Select" onclick="checksections(true);" /></td>
      <td><input type="button" value="Unselect" onclick="checksections(false);" /></td></tr>
   </table>
   <br />
   SECTIONSELECT
            $result .= $section_selectors;
       }
     return $result;      return $result;
 }  }
   
Line 2373  sub postprocess { Line 2528  sub postprocess {
     my $self = shift;      my $self = shift;
   
     my $result = $env{'form.' . $self->{'variable'} . '.forminput'};      my $result = $env{'form.' . $self->{'variable'} . '.forminput'};
     if (!$result) {      if (!$result && !$self->{'emptyallowed'}) {
         $self->{ERROR_MSG} =    if ($self->{'coursepersonnel'}) {
     &mt('You must choose at least one student to continue.');      $self->{ERROR_MSG} = 
    &mt('You must choose at least one user to continue.');
    } else {
       $self->{ERROR_MSG} = 
    &mt('You must choose at least one student to continue.');
    }
         return 0;          return 0;
     }      }
   
Line 2547  sub render { Line 2707  sub render {
   
     if ($self->{'multichoice'}) {      if ($self->{'multichoice'}) {
         $result = <<SCRIPT;          $result = <<SCRIPT;
 <script>  <script type="text/javascript">
   // <!--
     function checkall(value, checkName) {      function checkall(value, checkName) {
  for (i=0; i<document.forms.helpform.elements.length; i++) {   for (i=0; i<document.forms.helpform.elements.length; i++) {
             ele = document.forms.helpform.elements[i];              ele = document.forms.helpform.elements[i];
Line 2565  sub render { Line 2726  sub render {
             }              }
         }          }
     }      }
   // -->
 </script>  </script>
 SCRIPT  SCRIPT
        my %lt=&Apache::lonlocal::texthash(         my %lt=&Apache::lonlocal::texthash(
Line 2594  BUTTONS Line 2756  BUTTONS
     # If the subdirectory is in local CSTR space      # If the subdirectory is in local CSTR space
     my $metadir;      my $metadir;
     if ($subdir =~ m|/home/([^/]+)/public_html/(.*)|) {      if ($subdir =~ m|/home/([^/]+)/public_html/(.*)|) {
         my $user = $1;   my ($user,$domain)= 
         my $domain = $Apache::lonnet::perlvar{'lonDefDomain'};      &Apache::loncacc::constructaccess($subdir,
        $Apache::lonnet::perlvar{'lonDefDomain'});
  $metadir='/res/'.$domain.'/'.$user.'/'.$2;   $metadir='/res/'.$domain.'/'.$user.'/'.$2;
         @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');          @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');
     } elsif ($subdir =~ m|^~([^/]+)/(.*)$|) {      } elsif ($subdir =~ m|^~([^/]+)/(.*)$|) {
  $subdir='/home/'.$1.'/public_html/'.$2;   $subdir='/home/'.$1.'/public_html/'.$2;
         my $user = $1;   my ($user,$domain)= 
         my $domain = $Apache::lonnet::perlvar{'lonDefDomain'};      &Apache::loncacc::constructaccess($subdir,
        $Apache::lonnet::perlvar{'lonDefDomain'});
  $metadir='/res/'.$domain.'/'.$user.'/'.$2;   $metadir='/res/'.$domain.'/'.$user.'/'.$2;
         @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');          @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');
     } else {      } else {
Line 2668  BUTTONS Line 2832  BUTTONS
             . ".forminput' ".qq{id="$id"}." value='" . HTML::Entities::encode($fileName,"<>&\"'").              . ".forminput' ".qq{id="$id"}." value='" . HTML::Entities::encode($fileName,"<>&\"'").
                 "'";                  "'";
             if (!$self->{'multichoice'} && $choices == 0) {              if (!$self->{'multichoice'} && $choices == 0) {
                 $result .= ' checked';                  $result .= ' checked="checked"';
             }              }
             $result .= "/></td><td bgcolor='$color'>".              $result .= "/></td><td bgcolor='$color'>".
                 qq{<label for="$id">}. $file . "</label></td>" .                  qq{<label for="$id">}. $file . "</label></td>" .
Line 2955  be able to call methods on it. Line 3119  be able to call methods on it.
 =cut  =cut
   
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::lonnet;
   
 BEGIN {  BEGIN {
     &Apache::lonhelper::register('Apache::lonhelper::general',      &Apache::lonhelper::register('Apache::lonhelper::general',
Line 3182  sub render { Line 3347  sub render {
     my $targetURL = '';      my $targetURL = '';
     my $finish=&mt('Finish');      my $finish=&mt('Finish');
     if ($self->{'restartCourse'}) {      if ($self->{'restartCourse'}) {
  my $actionURL = '/adm/roles';   $actionURL = '/adm/roles';
  $targetURL = '/adm/menu';   $targetURL = '/adm/menu';
  if ($env{'course.'.$env{'request.course.id'}.'.url'}=~/^uploaded/) {   if ($env{'course.'.$env{'request.course.id'}.'.url'}=~/^uploaded/) {
     $targetURL = '/adm/coursedocs';      $targetURL = '/adm/coursedocs';
Line 3196  sub render { Line 3361  sub render {
     }      }
     my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');      my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');
     my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"');      my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"');
       my $target = " target='loncapaclient'";
       if (($env{'browser.interface'} eq 'textual') ||
           ($env{'environment.remote'} eq 'off')) {  $target='';  }
     $result .= "<center>\n" .      $result .= "<center>\n" .
  "<form action='".$actionURL."' method='post' target='loncapaclient'>\n" .   "<form action='".$actionURL."' method='post' $target>\n" .
  "<input type='button' onclick='history.go(-1)' value='$previous' />" .   "<input type='button' onclick='history.go(-1)' value='$previous' />" .
  "<input type='hidden' name='orgurl' value='$targetURL' />" .   "<input type='hidden' name='orgurl' value='$targetURL' />" .
  "<input type='hidden' name='selectrole' value='1' />\n" .   "<input type='hidden' name='selectrole' value='1' />\n" .
Line 3225  no strict; Line 3393  no strict;
 @ISA = ('Apache::lonhelper::element');  @ISA = ('Apache::lonhelper::element');
 use strict;  use strict;
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::lonnet;
   
 BEGIN {  BEGIN {
     &Apache::lonhelper::register('Apache::lonhelper::parmwizfinal',      &Apache::lonhelper::register('Apache::lonhelper::parmwizfinal',
Line 3266  sub render { Line 3435  sub render {
                         'answer_date' => "0_answerdate",                          'answer_date' => "0_answerdate",
  'tries' => '0_maxtries',   'tries' => '0_maxtries',
  'weight' => '0_weight' );   'weight' => '0_weight' );
       my %realParmName = ('open_date' => "opendate",
                           'due_date' => "duedate",
                           'answer_date' => "answerdate",
    'tries' => 'maxtries',
    'weight' => 'weight' );
           
     my $affectedResourceId = "";      my $affectedResourceId = "";
     my $parm_name = $parmTypeHash{$vars->{ACTION_TYPE}};      my $parm_name = $parmTypeHash{$vars->{ACTION_TYPE}};
Line 3277  sub render { Line 3451  sub render {
     # Print the granularity, depending on the action      # Print the granularity, depending on the action
     if ($vars->{GRANULARITY} eq 'whole_course') {      if ($vars->{GRANULARITY} eq 'whole_course') {
         $resourceString .= '<li>'.&mt('for <b>all resources in the course</b>').'</li>';          $resourceString .= '<li>'.&mt('for <b>all resources in the course</b>').'</li>';
         $level = 9; # general course, see lonparmset.pm perldoc   if ($vars->{TARGETS} eq 'course') {
       $level = 11; # general course, see lonparmset.pm perldoc
    } elsif ($vars->{TARGETS} eq 'section') {
       $level = 6;
    } else {
       $level = 3;
    }
         $affectedResourceId = "0.0";          $affectedResourceId = "0.0";
         $symb = 'a';          $symb = 'a';
         $paramlevel = 'general';          $paramlevel = 'general';
Line 3287  sub render { Line 3467  sub render {
         my $title = $res->compTitle();          my $title = $res->compTitle();
         $symb = $res->symb();          $symb = $res->symb();
         $resourceString .= '<li>'.&mt('for the map named [_1]',"<b>$title</b>").'</li>';          $resourceString .= '<li>'.&mt('for the map named [_1]',"<b>$title</b>").'</li>';
         $level = 8;   if ($vars->{TARGETS} eq 'course') {
       $level = 10; # general course, see lonparmset.pm perldoc
    } elsif ($vars->{TARGETS} eq 'section') {
       $level = 5;
    } else {
       $level = 2;
    }
         $affectedResourceId = $vars->{RESOURCE_ID};          $affectedResourceId = $vars->{RESOURCE_ID};
         $paramlevel = 'map';          $paramlevel = 'map';
     } else {      } else {
Line 3298  sub render { Line 3484  sub render {
         $symb = $res->symb();          $symb = $res->symb();
         my $title = $res->compTitle();          my $title = $res->compTitle();
         $resourceString .= '<li>'.&mt('for the resource named [_1] part [_2]',"<b>$title</b>","<b>$part</b>").'</li>';          $resourceString .= '<li>'.&mt('for the resource named [_1] part [_2]',"<b>$title</b>","<b>$part</b>").'</li>';
         $level = 7;   if ($vars->{TARGETS} eq 'course') {
       $level = 7; # general course, see lonparmset.pm perldoc
    } elsif ($vars->{TARGETS} eq 'section') {
       $level = 4;
    } else {
       $level = 1;
    }
         $affectedResourceId = $vars->{RESOURCE_ID};          $affectedResourceId = $vars->{RESOURCE_ID};
         $paramlevel = 'full';          $paramlevel = 'full';
     }      }
   
     my $result = "<form name='helpform' method='get' action='/adm/parmset#$affectedResourceId&$parm_name&$level'>\n";      my $result = "<form name='helpform' method='POST' action='/adm/parmset#$affectedResourceId&$parm_name&$level'>\n";
       $result .= "<input type='hidden' name='action' value='settable' />\n";
       $result .= "<input type='hidden' name='dis' value='helper' />\n";
       $result .= "<input type='hidden' name='pscat' value='".
    $realParmName{$vars->{ACTION_TYPE}}."' />\n";
     if ($vars->{GRANULARITY} eq 'resource') {      if ($vars->{GRANULARITY} eq 'resource') {
  $result .= "<input type='hidden' name='symb' value='".   $result .= "<input type='hidden' name='symb' value='".
     HTML::Entities::encode($symb,"'<>&\"") . "' />\n";      HTML::Entities::encode($symb,"'<>&\"") . "' />\n";
  $result .= "<input type='hidden' name='pscat' value='".      } elsif ($vars->{GRANULARITY} eq 'map') {
     HTML::Entities::encode($vars->{ACTION_TYPE},"'<>&\"") . "' />\n";   $result .= "<input type='hidden' name='pschp' value='".
  my $part = $vars->{RESOURCE_ID_part};      $affectedResourceId."' />\n";
  if ($part eq 'All Parts' || !$part) { $part=0; }  
  $result .= "<input type='hidden' name='psprt' value='".  
     HTML::Entities::encode($part,"'<>&\"") . "' />\n";  
     }      }
       my $part = $vars->{RESOURCE_ID_part};
       if ($part eq 'All Parts' || !$part) { $part=0; }
       $result .= "<input type='hidden' name='psprt' value='".
    HTML::Entities::encode($part,"'<>&\"") . "' />\n";
   
     $result .= '<p>'.&mt('Confirm that this information is correct, then click &quot;Finish Helper&quot; to complete setting the parameter.').'<ul>';      $result .= '<p>'.&mt('Confirm that this information is correct, then click &quot;Finish Helper&quot; to complete setting the parameter.').'<ul>';
           
     # Print the type of manipulation:      # Print the type of manipulation:
Line 3351  sub render { Line 3549  sub render {
     } elsif ($vars->{ACTION_TYPE} eq 'tries') {      } elsif ($vars->{ACTION_TYPE} eq 'tries') {
  $result .= "<input type='hidden' name='pres_value' " .   $result .= "<input type='hidden' name='pres_value' " .
     "value='" . $vars->{TRIES} . "' />\n";      "value='" . $vars->{TRIES} . "' />\n";
           $result .= "<input type='hidden' name='pres_type' " .
               "value='int_pos' />\n";
     } elsif ($vars->{ACTION_TYPE} eq 'weight') {      } elsif ($vars->{ACTION_TYPE} eq 'weight') {
  $result .= "<input type='hidden' name='pres_value' " .   $result .= "<input type='hidden' name='pres_value' " .
     "value='" . $vars->{WEIGHT} . "' />\n";      "value='" . $vars->{WEIGHT} . "' />\n";
Line 3364  sub render { Line 3564  sub render {
     } elsif ($vars->{TARGETS} eq 'section') {      } elsif ($vars->{TARGETS} eq 'section') {
         my $section = $vars->{SECTION_NAME};          my $section = $vars->{SECTION_NAME};
         $result .= '<li>'.&mt('for section [_1]',"<b>$section</b>").'</li>';          $result .= '<li>'.&mt('for section [_1]',"<b>$section</b>").'</li>';
         $level -= 3;   $result .= "<input type='hidden' name='csec' value='" .
         $result .= "<input type='hidden' name='csec' value='" .  
             HTML::Entities::encode($section,"'<>&\"") . "' />\n";              HTML::Entities::encode($section,"'<>&\"") . "' />\n";
     } else {      } else {
         # FIXME: This is probably wasteful! Store the name!          # FIXME: This is probably wasteful! Store the name!
         my $classlist = Apache::loncoursedata::get_classlist();          my $classlist = Apache::loncoursedata::get_classlist();
         my $username = $vars->{USER_NAME};   my ($uname,$udom)=split(':',$vars->{USER_NAME});
         # Chop off everything after the last colon (section)          my $name = $classlist->{$uname.':'.$udom}->[6];
         $username = substr($username, 0, rindex($username, ':'));  
         my $name = $classlist->{$username}->[6];  
         $result .= '<li>'.&mt('for [_1]',"<b>$name</b>").'</li>';          $result .= '<li>'.&mt('for [_1]',"<b>$name</b>").'</li>';
         $level -= 6;  
         my ($uname, $udom) = split /:/, $vars->{USER_NAME};  
         $result .= "<input type='hidden' name='uname' value='".          $result .= "<input type='hidden' name='uname' value='".
             HTML::Entities::encode($uname,"'<>&\"") . "' />\n";              HTML::Entities::encode($uname,"'<>&\"") . "' />\n";
         $result .= "<input type='hidden' name='udom' value='".          $result .= "<input type='hidden' name='udom' value='".
Line 3394  sub render { Line 3589  sub render {
           
     # Make the table appear      # Make the table appear
     $result .= "\n<input type='hidden' value='true' name='prevvisit' />";      $result .= "\n<input type='hidden' value='true' name='prevvisit' />";
     $result .= "\n<input type='hidden' value='all' name='pschp' />";  
     $result .= "\n<input type='hidden' value='$symb' name='pssymb' />";      $result .= "\n<input type='hidden' value='$symb' name='pssymb' />";
     $result .= "\n<input type='hidden' value='$paramlevel' name='parmlev' />";      $result .= "\n<input type='hidden' value='$paramlevel' name='parmlev' />";
   

Removed from v.1.101  
changed lines
  Added in v.1.127


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