Diff for /loncom/interface/lonhelper.pm between versions 1.63 and 1.92

version 1.63, 2003/12/08 19:24:42 version 1.92, 2005/01/10 12:15:23
Line 230  my $paramHash; Line 230  my $paramHash;
 # In the debugger, this means that breakpoints are ignored until you step into  # In the debugger, this means that breakpoints are ignored until you step into
 # a function and get out of what must be a "faked up scope" in the Apache->  # a function and get out of what must be a "faked up scope" in the Apache->
 # mod_perl connection. In this code, it was manifesting itself in the existence  # mod_perl connection. In this code, it was manifesting itself in the existence
 # of two seperate file-scoped $helper variables, one set to the value of the  # of two separate file-scoped $helper variables, one set to the value of the
 # helper in the helper constructor, and one referenced by the handler on the  # helper in the helper constructor, and one referenced by the handler on the
 # "$helper->process()" line. Using the debugger, one could actually  # "$helper->process()" line. Using the debugger, one could actually
 # see the two different $helper variables, as hashes at completely  # see the two different $helper variables, as hashes at completely
Line 263  sub real_handler { Line 263  sub real_handler {
   
   
     # Send header, don't cache this page      # Send header, don't cache this page
     if ($r->header_only) {  
         if ($ENV{'browser.mathml'}) {  
             $r->content_type('text/xml; charset=UTF-8');  
         } else {  
             $r->content_type('text/html; charset=UTF-8');  
         }  
         $r->send_http_header;  
         return OK;  
     }  
     if ($ENV{'browser.mathml'}) {      if ($ENV{'browser.mathml'}) {
         $r->content_type('text/xml');   &Apache::loncommon::content_type($r,'text/xml');
     } else {      } else {
         $r->content_type('text/html');   &Apache::loncommon::content_type($r,'text/html');
     }      }
     $r->send_http_header;      $r->send_http_header;
       return OK if $r->header_only;
     $r->rflush();      $r->rflush();
   
     # Discard result, we just want the objects that get created by the      # Discard result, we just want the objects that get created by the
Line 462  sub _saveVars { Line 454  sub _saveVars {
     my $self = shift;      my $self = shift;
     my $result = "";      my $result = "";
     $result .= '<input type="hidden" name="CURRENT_STATE" value="' .      $result .= '<input type="hidden" name="CURRENT_STATE" value="' .
         HTML::Entities::encode($self->{STATE}) . "\" />\n";          HTML::Entities::encode($self->{STATE},'<>&"') . "\" />\n";
     $result .= '<input type="hidden" name="TOKEN" value="' .      $result .= '<input type="hidden" name="TOKEN" value="' .
         $self->{TOKEN} . "\" />\n";          $self->{TOKEN} . "\" />\n";
     $result .= '<input type="hidden" name="RETURN_PAGE" value="' .      $result .= '<input type="hidden" name="RETURN_PAGE" value="' .
         HTML::Entities::encode($self->{RETURN_PAGE}) . "\" />\n";          HTML::Entities::encode($self->{RETURN_PAGE},'<>&"') . "\" />\n";
   
     return $result;      return $result;
 }  }
Line 583  sub display { Line 575  sub display {
     }      }
   
     # Phase 4: Display.      # Phase 4: Display.
     my $stateTitle = &mt($state->title());      my $stateTitle=&mt($state->title());
     my $helperTitle = &mt($self->{TITLE});      my $helperTitle = &mt($self->{TITLE});
     my $bodytag = &Apache::loncommon::bodytag($helperTitle,'','');      my $bodytag = &Apache::loncommon::bodytag($helperTitle,'','');
     my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');      my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');
Line 998  sub start_message { Line 990  sub start_message {
         return '';          return '';
     }      }
   
     $paramHash->{MESSAGE_TEXT} = &Apache::lonxml::get_all_text('/message',      $paramHash->{MESSAGE_TEXT} = &mtn(&Apache::lonxml::get_all_text('/message',
                                                                $parser);                                                                 $parser));
   
     if (defined($token->[2]{'nextstate'})) {      if (defined($token->[2]{'nextstate'})) {
         $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};          $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};
Line 1169  sub start_choice { Line 1161  sub start_choice {
     }      }
   
     my $computer = $token->[2]{'computer'};      my $computer = $token->[2]{'computer'};
     my $human = &Apache::lonxml::get_all_text('/choice',      my $human = &mt(&Apache::lonxml::get_all_text('/choice',
                                               $parser);                                                $parser));
     my $nextstate = $token->[2]{'nextstate'};      my $nextstate = $token->[2]{'nextstate'};
     my $evalFlag = $token->[2]{'eval'};      my $evalFlag = $token->[2]{'eval'};
     push @{$paramHash->{CHOICES}}, [$human, $computer, $nextstate,       push @{$paramHash->{CHOICES}}, [$human, $computer, $nextstate, 
Line 1182  sub end_choice { Line 1174  sub end_choice {
     return '';      return '';
 }  }
   
   {
       # used to generate unique id attributes for <input> tags. 
       # internal use only.
       my $id = 0;
       sub new_id { return $id++; }
   }
   
 sub render {  sub render {
     my $self = shift;      my $self = shift;
     my $var = $self->{'variable'};      my $var = $self->{'variable'};
Line 1206  SCRIPT Line 1205  SCRIPT
     # Only print "select all" and "unselect all" if there are five or      # Only print "select all" and "unselect all" if there are five or
     # more choices; fewer then that and it looks silly.      # more choices; fewer then that and it looks silly.
     if ($self->{'multichoice'} && scalar(@{$self->{CHOICES}}) > 4) {      if ($self->{'multichoice'} && scalar(@{$self->{CHOICES}}) > 4) {
           my %lt=&Apache::lonlocal::texthash(
    'sa'  => "Select All",
           'ua'  => "Unselect All");
         $buttons = <<BUTTONS;          $buttons = <<BUTTONS;
 <br />  <br />
 <input type="button" onclick="checkall(true, '$var')" value="Select All" />  <input type="button" onclick="checkall(true, '$var')" value="$lt{'sa'}" />
 <input type="button" onclick="checkall(false, '$var')" value="Unselect All" />  <input type="button" onclick="checkall(false, '$var')" value="$lt{'ua'}" />
 <br />&nbsp;  <br />&nbsp;
 BUTTONS  BUTTONS
     }      }
Line 1261  BUTTONS Line 1263  BUTTONS
     my $type = "radio";      my $type = "radio";
     if ($self->{'multichoice'}) { $type = 'checkbox'; }      if ($self->{'multichoice'}) { $type = 'checkbox'; }
     foreach my $choice (@{$self->{CHOICES}}) {      foreach my $choice (@{$self->{CHOICES}}) {
           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 ";
         }          }
           $result .= qq{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 1276  BUTTONS Line 1280  BUTTONS
             $choiceLabel = eval($choiceLabel);              $choiceLabel = eval($choiceLabel);
             $choiceLabel = &$choiceLabel($helper, $self);              $choiceLabel = &$choiceLabel($helper, $self);
         }          }
         $result .= "/></td><td> " . &mtn($choiceLabel) . "</td></tr>\n";          $result .= "/></td><td> ".qq{<label for="$id">}.
               &mtn($choiceLabel). "</label></td></tr>\n";
     }      }
     $result .= "</table>\n\n\n";      $result .= "</table>\n\n\n";
     $result .= $buttons;      $result .= $buttons;
Line 1419  sub render { Line 1424  sub render {
     $result .= "<select name='${var}.forminput'>\n";      $result .= "<select name='${var}.forminput'>\n";
     foreach my $choice (@{$self->{CHOICES}}) {      foreach my $choice (@{$self->{CHOICES}}) {
         $result .= "<option value='" .           $result .= "<option value='" . 
             HTML::Entities::encode($choice->[1])               HTML::Entities::encode($choice->[1],"<>&\"'") 
             . "'";              . "'";
         if ($checkedChoices{$choice->[1]}) {          if ($checkedChoices{$choice->[1]}) {
             $result .= " selected";              $result .= " selected";
Line 1755  BEGIN { Line 1760  BEGIN {
     &Apache::lonhelper::register('Apache::lonhelper::resource',      &Apache::lonhelper::register('Apache::lonhelper::resource',
                               ('resource', 'filterfunc',                                 ('resource', 'filterfunc', 
                                'choicefunc', 'valuefunc',                                 'choicefunc', 'valuefunc',
                                'mapurl'));                                 'mapurl','option'));
 }  }
   
 sub new {  sub new {
Line 1777  sub start_resource { Line 1782  sub start_resource {
     $paramHash->{'suppressEmptySequences'} = $token->[2]{'suppressEmptySequences'};      $paramHash->{'suppressEmptySequences'} = $token->[2]{'suppressEmptySequences'};
     $paramHash->{'toponly'} = $token->[2]{'toponly'};      $paramHash->{'toponly'} = $token->[2]{'toponly'};
     $paramHash->{'addstatus'} = $token->[2]{'addstatus'};      $paramHash->{'addstatus'} = $token->[2]{'addstatus'};
       $paramHash->{'closeallpages'} = $token->[2]{'closeallpages'};
     return '';      return '';
 }  }
   
Line 1859  sub start_mapurl { Line 1865  sub start_mapurl {
   
 sub end_mapurl { return ''; }  sub end_mapurl { return ''; }
   
   
   sub start_option {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
       if (!defined($paramHash->{OPTION_TEXTS})) {
    $paramHash->{OPTION_TEXTS} = [ ];
    $paramHash->{OPTION_VARS}  = [ ];
   
       }
       # OPTION_TEXTS is a list of the text attribute
       #               values used to create column headings.
       # OPTION_VARS is a list of the variable names, used to create the checkbox
       #             inputs.
       #  We're ok with empty elements. as place holders
       # Although the 'variable' element should really exist.
       #
   
       my $option_texts  = $paramHash->{OPTION_TEXTS};
       my $option_vars   = $paramHash->{OPTION_VARS};
       push(@$option_texts,  $token->[2]{'text'});
       push(@$option_vars,   $token->[2]{'variable'});
   
       #  Need to create and declare the option variables as well to make them
       # persistent.
       #
       my $varname = $token->[2]{'variable'};
       $helper->declareVar($varname);
   
   
       return '';
   }
   
   sub end_option {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
       return '';
   }
   
 # A note, in case I don't get to this before I leave.  # A note, in case I don't get to this before I leave.
 # If someone complains about the "Back" button returning them  # If someone complains about the "Back" button returning them
 # to the previous folder state, instead of returning them to  # to the previous folder state, instead of returning them to
Line 1892  sub render { Line 1934  sub render {
     }      }
 </script>  </script>
 SCRIPT  SCRIPT
           my %lt=&Apache::lonlocal::texthash(
    'sar'  => "Select All Resources",
           'uar'  => "Unselect All Resources");
   
         $buttons = <<BUTTONS;          $buttons = <<BUTTONS;
 <br /> &nbsp;  <br /> &nbsp;
 <input type="button" onclick="checkall(true, '$var')" value="Select All Resources" />  <input type="button" onclick="checkall(true, '$var')" value="$lt{'sar'}" />
 <input type="button" onclick="checkall(false, '$var')" value="Unselect All Resources" />  <input type="button" onclick="checkall(false, '$var')" value="$lt{'uar'}" />
 <br /> &nbsp;  <br /> &nbsp;
 BUTTONS  BUTTONS
     }      }
Line 1906  BUTTONS Line 1952  BUTTONS
   
     $result .= $buttons;      $result .= $buttons;
   
     my $filterFunc = $self->{FILTER_FUNC};      my $filterFunc     = $self->{FILTER_FUNC};
     my $choiceFunc = $self->{CHOICE_FUNC};      my $choiceFunc     = $self->{CHOICE_FUNC};
     my $valueFunc = $self->{VALUE_FUNC};      my $valueFunc      = $self->{VALUE_FUNC};
     my $multichoice = $self->{'multichoice'};      my $multichoice   = $self->{'multichoice'};
       my $option_vars    = $self->{OPTION_VARS};
       my $option_texts   = $self->{OPTION_TEXTS};
       my $headings_done  = 0;
   
     # Evaluate the map url as needed      # Evaluate the map url as needed
     my $mapUrl;      my $mapUrl;
Line 1927  BUTTONS Line 1976  BUTTONS
     my $checked = 0;      my $checked = 0;
     my $renderColFunc = sub {      my $renderColFunc = sub {
         my ($resource, $part, $params) = @_;          my ($resource, $part, $params) = @_;
    my $result = "";
   
    if(!$headings_done) {
       if ($option_texts) {
    foreach my $text (@$option_texts) {
       $result .= "<th>$text</th>";
    }
       }
       $result .= "<th>Select</th>";
       $result .= "</tr><tr>"; # Close off the extra row and start a new one.
       $headings_done = 1;
    }
   
         my $inputType;          my $inputType;
         if ($multichoice) { $inputType = 'checkbox'; }          if ($multichoice) { $inputType = 'checkbox'; }
         else {$inputType = 'radio'; }          else {$inputType = 'radio'; }
   
         if (!&$choiceFunc($resource)) {          if (!&$choiceFunc($resource)) {
             return '<td>&nbsp;</td>';      $result .= '<td>&nbsp;</td>';
               return $result;
         } else {          } else {
             my $col = "<td><input type='$inputType' name='${var}.forminput' ";      my $col = "";
       my $resource_name =   
                      HTML::Entities::encode(&$valueFunc($resource),"<>&\"'");
       if($option_vars) {
    foreach my $option_var (@$option_vars) {
       $col .= 
                           "<td align='center'><input type='checkbox' name ='$option_var".
    ".forminput' value='".
    $resource_name . "' /> </td>";
    }
       }
   
               $col .= "<td align='center'><input type='$inputType' name='${var}.forminput' ";
             if (!$checked && !$multichoice) {              if (!$checked && !$multichoice) {
                 $col .= "checked ";                  $col .= "checked ";
                 $checked = 1;                  $checked = 1;
Line 1944  BUTTONS Line 2018  BUTTONS
  $col .= "checked ";   $col .= "checked ";
  $checked = 1;   $checked = 1;
     }      }
             $col .= "value='" .               $col .= "value='" . $resource_name  . "' /></td>";
                 HTML::Entities::encode(&$valueFunc($resource))               return $result.$col;
                 . "' /></td>";  
             return $col;  
         }          }
     };      };
   
Line 1962  BUTTONS Line 2034  BUTTONS
                                        'showParts' => 0,                                         'showParts' => 0,
                                        'filterFunc' => $filterFunc,                                         'filterFunc' => $filterFunc,
                                        'resource_no_folder_link' => 1,                                         'resource_no_folder_link' => 1,
          'closeAllPages' => $self->{'closeallpages'},
                                        'suppressEmptySequences' => $self->{'suppressEmptySequences'},                                         'suppressEmptySequences' => $self->{'suppressEmptySequences'},
                                        'iterator_map' => $mapUrl }                                         'iterator_map' => $mapUrl }
                                        );                                         );
Line 2088  sub render { Line 2161  sub render {
  for (i=0; i<document.forms.helpform.elements.length; i++) {   for (i=0; i<document.forms.helpform.elements.length; i++) {
     comp = document.forms.helpform.elements.chksec.value;      comp = document.forms.helpform.elements.chksec.value;
             if (document.forms.helpform.elements[i].value.indexOf(':'+comp+':') != -1) {              if (document.forms.helpform.elements[i].value.indexOf(':'+comp+':') != -1) {
                 document.forms.helpform.elements[i].checked=value;   if (document.forms.helpform.elements[i].value.indexOf(':Active') != -1) {
       document.forms.helpform.elements[i].checked=value;
    }
             }              }
         }          }
     }      }
Line 2096  sub render { Line 2171  sub render {
  for (i=0; i<document.forms.helpform.elements.length; i++) {   for (i=0; i<document.forms.helpform.elements.length; i++) {
             if (document.forms.helpform.elements[i].value.indexOf(':Active') != -1) {              if (document.forms.helpform.elements[i].value.indexOf(':Active') != -1) {
                 document.forms.helpform.elements[i].checked=true;                  document.forms.helpform.elements[i].checked=true;
             }              } 
           }
       }
       function uncheckexpired() {
    for (i=0; i<document.forms.helpform.elements.length; i++) {
               if (document.forms.helpform.elements[i].value.indexOf(':Expired') != -1) {
                   document.forms.helpform.elements[i].checked=false;
               } 
         }          }
     }      }
 </script>  </script>
 SCRIPT  SCRIPT
   
         my $selectAllStudents = &mt('Select All Students');           my %lt=&Apache::lonlocal::texthash(
  my $unselectAllStudents = &mt('Unselect All Students');                      'ocs'  => "Select Only Current Students",
                       'ues'  => "Unselect Expired Students",
                       'sas'  => "Select All Students",
                       'uas'  => "Unselect All Students",
                       'sfsg' => "Select Current Students for Section/Group",
       'ufsg' => "Unselect for Section/Group");
    
         $buttons = <<BUTTONS;          $buttons = <<BUTTONS;
 <br />  <br />
 <input type="button" onclick="checkactive()" value="Select Only Current Students" />  <table>
 <input type="button" onclick="checkall(true, '$var')" value="$selectAllStudents" />    <tr>
 <input type="button" onclick="checkall(false, '$var')" value="$unselectAllStudents" />    
 <input type="button" onclick="checksec(true)" value="Select for Section/Group">      <td><input type="button" onclick="checkactive()" value="$lt{'ocs'}" /></td>
 <input type="text" size="5" name="chksec">&nbsp;      <td><input type="button" onclick="uncheckexpired()" value="$lt{'ues'}" /><br /></td>
 <input type="button" onclick="checksec(false)" value="Unselect for Section/Group">    </tr>
     <tr>
        <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>
     </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>
 <br />  <br />
 BUTTONS  BUTTONS
     }      }
Line 2170  BUTTONS Line 2271  BUTTONS
  }   }
     }      }
   
     my $name = &mt($self->{'coursepersonnel'} ? 'Name' : 'Student Name');      my $name = $self->{'coursepersonnel'} ? &mt('Name') : &mt('Student Name');
     my $type = 'radio';      my $type = 'radio';
     if ($self->{'multichoice'}) { $type = 'checkbox'; }      if ($self->{'multichoice'}) { $type = 'checkbox'; }
     $result .= "<table cellspacing='2' cellpadding='2' border='0'>\n";      $result .= "<table cellspacing='2' cellpadding='2' border='0'>\n";
     $result .= "<tr><td></td><td align='center'><b>$name</b></td>".      $result .= "<tr><td></td><td align='center'><b>$name</b></td>".
         "<td align='center'><b>" . &mt('Section') . "</b></td>" .           "<td align='center'><b>" . &mt('Section') . "</b></td>" . 
  "<td align='center'><b>Status</b></td>" .    "<td align='center'><b>".&mt('Status')."</b></td>" . 
  "<td align='center'><b>" . &mt("Role") . "</b></td></tr>" .   "<td align='center'><b>" . &mt("Role") . "</b></td>" .
  "<td align='center'><b>Username:Domain</b></td></tr>";   "<td align='center'><b>".&mt('Username').":".&mt('Domain')."</b></td></tr>";
   
     my $checked = 0;      my $checked = 0;
     for my $choice (@$choices) {      for my $choice (@$choices) {
Line 2190  BUTTONS Line 2291  BUTTONS
             $checked = 1;              $checked = 1;
         }          }
         $result .=          $result .=
             " value='" . HTML::Entities::encode($choice->[0] . ':' . $choice->[2] . ':' . $choice->[1] . ':' . $choice->[3])              " value='" . HTML::Entities::encode($choice->[0] . ':' 
    .$choice->[2] . ':' 
    .$choice->[1] . ':' 
    .$choice->[3], "<>&\"'")
             . "' /></td><td>"              . "' /></td><td>"
             . HTML::Entities::encode($choice->[1])              . HTML::Entities::encode($choice->[1],'<>&"')
             . "</td><td align='center'>"               . "</td><td align='center'>" 
             . HTML::Entities::encode($choice->[2])              . HTML::Entities::encode($choice->[2],'<>&"')
             . "</td>\n<td>"               . "</td>\n<td>" 
     . HTML::Entities::encode($choice->[3])      . HTML::Entities::encode($choice->[3],'<>&"')
             . "</td>\n<td>"               . "</td>\n<td>" 
     . HTML::Entities::encode($choice->[4])      . HTML::Entities::encode($choice->[4],'<>&"')
             . "</td>\n<td>"               . "</td>\n<td>" 
     . HTML::Entities::encode($choice->[0])      . HTML::Entities::encode($choice->[0],'<>&"')
     . "</td></tr>\n";      . "</td></tr>\n";
     }      }
   
Line 2358  sub start_filefilter { Line 2462  sub start_filefilter {
   
 sub end_filefilter { return ''; }  sub end_filefilter { return ''; }
   
   { 
       # used to generate unique id attributes for <input> tags. 
       # internal use only.
       my $id=0;
       sub new_id { return $id++;}
   }
   
 sub render {  sub render {
     my $self = shift;      my $self = shift;
     my $result = '';      my $result = '';
Line 2401  sub render { Line 2512  sub render {
     }      }
 </script>  </script>
 SCRIPT  SCRIPT
         my $selectAllFiles = &mt("Select All Files");         my %lt=&Apache::lonlocal::texthash(
  my $unselectAllFiles = &mt("Unselect All Files");   'saf'  => "Select All Files",
         $buttons = <<BUTTONS;          'uaf'  => "Unselect All Files");
          $buttons = <<BUTTONS;
 <br /> &nbsp;  <br /> &nbsp;
 <input type="button" onclick="checkall(true, '$var')" value="$selectAllFiles" />  <input type="button" onclick="checkall(true, '$var')" value="$lt{'saf'}" />
 <input type="button" onclick="checkall(false, '$var')" value="$unselectAllFiles" />  <input type="button" onclick="checkall(false, '$var')" value="$lt{'uaf'}" />
 BUTTONS  BUTTONS
   
         my $selectAllPublished = &mt("Select All Published");         %lt=&Apache::lonlocal::texthash(
  my $unselectAllPublished= &mt("UnselectAllPublished");   'sap'  => "Select All Published",
           'uap'  => "Unselect All Published");
         if ($helper->{VARS}->{'construction'}) {          if ($helper->{VARS}->{'construction'}) {
             $buttons .= <<BUTTONS;         $buttons .= <<BUTTONS;
 <input type="button" onclick="checkallclass(true, 'Published')" value="$selectAllPublished" />  <input type="button" onclick="checkallclass(true, 'Published')" value="$lt{'sap'}" />
 <input type="button" onclick="checkallclass(false, 'Published')" value="$unselectAllPublished" />  <input type="button" onclick="checkallclass(false, 'Published')" value="$lt{'uap'}" />
 <br /> &nbsp;  <br /> &nbsp;
 BUTTONS  BUTTONS
        }         }
Line 2442  BUTTONS Line 2555  BUTTONS
     }      }
   
     # Sort the fileList into order      # Sort the fileList into order
     @fileList = sort @fileList;      @fileList = sort {lc($a) cmp lc($b)} @fileList;
   
     $result .= $buttons;      $result .= $buttons;
   
Line 2494  BUTTONS Line 2607  BUTTONS
             if ($status eq 'Published' && $helper->{VARS}->{'construction'}) {              if ($status eq 'Published' && $helper->{VARS}->{'construction'}) {
                 $onclick = 'onclick="a=1" ';                  $onclick = 'onclick="a=1" ';
             }              }
               my $id = &new_id();
             $result .= '<tr><td align="right"' . " bgcolor='$color'>" .              $result .= '<tr><td align="right"' . " bgcolor='$color'>" .
                 "<input $onclick type='$type' name='" . $var                  "<input $onclick type='$type' name='" . $var
             . ".forminput' 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';
             }              }
             $result .= "/></td><td bgcolor='$color'>" . $file . "</td>" .              $result .= "/></td><td bgcolor='$color'>".
                   qq{<label for="$id">}. $file . "</label></td>" .
                 "<td bgcolor='$color'>$title</td>" .                  "<td bgcolor='$color'>$title</td>" .
                 "<td bgcolor='$color'>$status</td>" . "</tr>\n";                  "<td bgcolor='$color'>$status</td>" . "</tr>\n";
             $choices++;              $choices++;
Line 2529  sub fileState { Line 2644  sub fileState {
     my $constructionSpaceDir = shift;      my $constructionSpaceDir = shift;
     my $file = shift;      my $file = shift;
           
       my ($uname,$udom)=($ENV{'user.name'},$ENV{'user.domain'});
       if ($ENV{'request.role'}=~/^ca\./) {
    (undef,$udom,$uname)=split(/\//,$ENV{'request.role'});
       }
     my $docroot = $Apache::lonnet::perlvar{'lonDocRoot'};      my $docroot = $Apache::lonnet::perlvar{'lonDocRoot'};
     my $subdirpart = $constructionSpaceDir;      my $subdirpart = $constructionSpaceDir;
     $subdirpart =~ s/^\/home\/$ENV{'user.name'}\/public_html//;      $subdirpart =~ s/^\/home\/$uname\/public_html//;
     my $resdir = $docroot . '/res/' . $ENV{'user.domain'} . '/' . $ENV{'user.name'} .      my $resdir = $docroot . '/res/' . $udom . '/' . $uname .
         $subdirpart;          $subdirpart;
   
     my @constructionSpaceFileStat = stat($constructionSpaceDir . '/' . $file);      my @constructionSpaceFileStat = stat($constructionSpaceDir . '/' . $file);
Line 2661  string honors the validation function, i Line 2780  string honors the validation function, i
 no strict;  no strict;
 @ISA = ("Apache::lonhelper::element");  @ISA = ("Apache::lonhelper::element");
 use strict;  use strict;
   use Apache::lonlocal;
   
 BEGIN {  BEGIN {
     &Apache::lonhelper::register('Apache::lonhelper::string',      &Apache::lonhelper::register('Apache::lonhelper::string',
Line 2779  be able to call methods on it. Line 2899  be able to call methods on it.
   
 =cut  =cut
   
   use Apache::lonlocal;
   
 BEGIN {  BEGIN {
     &Apache::lonhelper::register('Apache::lonhelper::general',      &Apache::lonhelper::register('Apache::lonhelper::general',
                                  'exec', 'condition', 'clause',                                   'exec', 'condition', 'clause',
Line 2999  sub render { Line 3121  sub render {
   
     if ($self->{'restartCourse'}) {      if ($self->{'restartCourse'}) {
  my $targetURL = '/adm/menu';   my $targetURL = '/adm/menu';
    if ($ENV{'course.'.$ENV{'request.course.id'}.'.url'}=~/^uploaded/) {
       $targetURL = '/adm/coursedocs';
    } else {
       $targetURL = '/adm/navmaps';
    }
  if ($ENV{'course.'.$ENV{'request.course.id'}.'.clonedfrom'}) {   if ($ENV{'course.'.$ENV{'request.course.id'}.'.clonedfrom'}) {
     $targetURL = '/adm/parmset?overview=1';      $targetURL = '/adm/parmset?overview=1';
  }   }
Line 3035  package Apache::lonhelper::parmwizfinal; Line 3162  package Apache::lonhelper::parmwizfinal;
 no strict;  no strict;
 @ISA = ('Apache::lonhelper::element');  @ISA = ('Apache::lonhelper::element');
 use strict;  use strict;
   use Apache::lonlocal;
   
 BEGIN {  BEGIN {
     &Apache::lonhelper::register('Apache::lonhelper::parmwizfinal',      &Apache::lonhelper::register('Apache::lonhelper::parmwizfinal',
Line 3086  sub render { Line 3214  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>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          $level = 9; # general course, see lonparmset.pm perldoc
         $affectedResourceId = "0.0";          $affectedResourceId = "0.0";
         $symb = 'a';          $symb = 'a';
Line 3096  sub render { Line 3224  sub render {
         my $res = $navmap->getByMapPc($vars->{RESOURCE_ID});          my $res = $navmap->getByMapPc($vars->{RESOURCE_ID});
         my $title = $res->compTitle();          my $title = $res->compTitle();
         $symb = $res->symb();          $symb = $res->symb();
         $navmap->untieHashes();          $resourceString .= '<li>'.&mt('for the map named [_1]',"<b>$title</b>").'</li>';
         $resourceString .= "<li>for the map named <b>$title</b></li>";  
         $level = 8;          $level = 8;
         $affectedResourceId = $vars->{RESOURCE_ID};          $affectedResourceId = $vars->{RESOURCE_ID};
         $paramlevel = 'map';          $paramlevel = 'map';
Line 3106  sub render { Line 3233  sub render {
         my $res = $navmap->getById($vars->{RESOURCE_ID});          my $res = $navmap->getById($vars->{RESOURCE_ID});
         $symb = $res->symb();          $symb = $res->symb();
         my $title = $res->compTitle();          my $title = $res->compTitle();
         $navmap->untieHashes();          $resourceString .= '<li>'.&mt('for the resource named [_1]',"<b>$title</b>").'</li>';
         $resourceString .= "<li>for the resource named <b>$title</b></li>";  
         $level = 7;          $level = 7;
         $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='get' action='/adm/parmset#$affectedResourceId&$parm_name&$level'>\n";
     $result .= '<p>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:
     $result .= '<li>Setting the <b>' . $dateTypeHash{$vars->{ACTION_TYPE}} . '</b>';      my $extra;
     if ($vars->{ACTION_TYPE} eq 'tries') {      if ($vars->{ACTION_TYPE} eq 'tries') {
  $result .= ' to <b>' . $vars->{TRIES} . '</b>';   $extra =  $vars->{TRIES};
     }      }
     if ($vars->{ACTION_TYPE} eq 'weight') {      if ($vars->{ACTION_TYPE} eq 'weight') {
  $result .= ' to <b>' . $vars->{WEIGHT} . '</b>';   $extra =  $vars->{WEIGHT};
       }
       $result .= "<li>";
       my $what = &mt($dateTypeHash{$vars->{ACTION_TYPE}});
       if ($extra) {
    $result .= &mt('Setting the [_1] to [_2]',"<b>$what</b>",$extra);
       } else {
    $result .= &mt('Setting the [_1]',"<b>$what</b>");
     }      }
     $result .= "</li>\n";      $result .= "</li>\n";
     if ($vars->{ACTION_TYPE} eq 'due_date' ||       if ($vars->{ACTION_TYPE} eq 'due_date' || 
Line 3153  sub render { Line 3286  sub render {
           
     # Print targets      # Print targets
     if ($vars->{TARGETS} eq 'course') {      if ($vars->{TARGETS} eq 'course') {
         $result .= '<li>for <b>all students in course</b></li>';          $result .= '<li>'.&mt('for <b>all students in course</b>').'</li>';
     } elsif ($vars->{TARGETS} eq 'section') {      } elsif ($vars->{TARGETS} eq 'section') {
         my $section = $vars->{SECTION_NAME};          my $section = $vars->{SECTION_NAME};
         $result .= "<li>for section <b>$section</b></li>";          $result .= '<li>'.&mt('for section [_1]',"<b>$section</b>").'</li>';
         $level -= 3;          $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();
Line 3167  sub render { Line 3300  sub render {
         # Chop off everything after the last colon (section)          # Chop off everything after the last colon (section)
         $username = substr($username, 0, rindex($username, ':'));          $username = substr($username, 0, rindex($username, ':'));
         my $name = $classlist->{$username}->[6];          my $name = $classlist->{$username}->[6];
         $result .= "<li>for <b>$name</b></li>";          $result .= '<li>'.&mt('for [_1]',"<b>$name</b>").'</li>';
         $level -= 6;          $level -= 6;
         my ($uname, $udom) = split /:/, $vars->{USER_NAME};          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='".
             HTML::Entities::encode($udom) . "' />\n";              HTML::Entities::encode($udom,"'<>&\"") . "' />\n";
     }      }
   
     # Print value      # Print value
     if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') {      if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') {
  $result .= "<li>to <b>" . ctime($vars->{PARM_DATE}) . "</b> (" .   $result .= '<li>'.&mt('to [_1] ([_2])',"<b>".ctime($vars->{PARM_DATE})."</b>",Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}))."</li>\n";
     Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE})   
     . ")</li>\n";  
     }      }
     
     # print pres_marker      # print pres_marker
Line 3193  sub render { Line 3324  sub render {
     $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' />";
   
     $result .= "<br /><br /><center><input type='submit' value='Finish Helper' /></center></form>\n";      $result .= "<br /><br /><center><input type='submit' value='".&mt('Finish Helper')."' /></center></form>\n";
   
     return $result;      return $result;
 }  }

Removed from v.1.63  
changed lines
  Added in v.1.92


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