Diff for /loncom/interface/lonhelper.pm between versions 1.173 and 1.177

version 1.173, 2009/05/27 16:54:57 version 1.177, 2010/01/12 10:40:01
Line 589  sub display { Line 589  sub display {
  &Apache::loncommon::browser_and_searcher_javascript().   &Apache::loncommon::browser_and_searcher_javascript().
  "\n".'</script>';   "\n".'</script>';
   
       # Breadcrumbs
       my $brcrum = [{'href' => '',
                      'text' => 'Helper'}];
       # FIXME: Dynamically add context sensitive breadcrumbs
       #        depending on the caller,
       #        e.g. printing, parametrization, etc.
       # FIXME: Add breadcrumbs to reflect current helper state
   
     $result .= &Apache::loncommon::start_page($self->{TITLE},      $result .= &Apache::loncommon::start_page($self->{TITLE},
       $browser_searcher_js);                                                $browser_searcher_js,
                                                     {'bread_crumbs' => $brcrum,});
   
     my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');      my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');
     my $next = HTML::Entities::encode(&mt("Next"), '<>&"');      my $next = HTML::Entities::encode(&mt("Next"), '<>&"');
     # FIXME: This should be parameterized, not concatenated - Jeremy      # FIXME: This should be parameterized, not concatenated - Jeremy
Line 599  sub display { Line 608  sub display {
   
     if (!$state->overrideForm()) { $result.='<form name="helpform" method="post">'; }      if (!$state->overrideForm()) { $result.='<form name="helpform" method="post">'; }
     if ($stateHelp) {      if ($stateHelp) {
  $stateHelp = &Apache::loncommon::help_open_topic($stateHelp);          $stateHelp = &Apache::loncommon::help_open_topic($stateHelp);
     }  
     $result .= <<HEADER;  
         <table border="0" width='100%'><tr><td>  
         <h2><i>$stateTitle</i>$stateHelp</h2>  
 HEADER  
   
     $result .= "<table cellpadding='10' width='100%'><tr><td rowspan='2' valign='top'>";  
   
     if (!$state->overrideForm()) {  
         $result .= $self->_saveVars();  
     }      }
     $result .= $state->render();  
   
     $result .= "</td><td valign='top' align='right'>";  
   
     # Warning: Copy and pasted from below, because it's too much trouble to       # Prepare buttons
     # turn this into a subroutine      my $buttons;
     if (!$state->overrideForm()) {      if (!$state->overrideForm()) {
         if ($self->{STATE} ne $self->{START_STATE}) {          if ($self->{STATE} ne $self->{START_STATE}) {
             #$result .= '<input name="SUBMIT" type="submit" value="&lt;- Previous" />&nbsp;&nbsp;';              #$result .= '<input name="SUBMIT" type="submit" value="&lt;- Previous" />&nbsp;&nbsp;';
         }          }
           $buttons = '<p>'; # '<fieldset>';
         if ($self->{DONE}) {          if ($self->{DONE}) {
             my $returnPage = $self->{RETURN_PAGE};              my $returnPage = $self->{RETURN_PAGE};
             $result .= "<a href=\"$returnPage\">" . &mt("End Helper") . "</a>";              $buttons .= '<a href="'.$returnPage.'">'.&mt('End Helper').'</a>';
         }          }
         else {          else {
             $result .= '<span class="LC_nobreak"><input name="back" type="button" ';              $buttons .= '<span class="LC_nobreak">'
             $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';                         .'<input name="back" type="button" '
             $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></span>';                         .'value="'.$previous.'" onclick="history.go(-1)" /> '
                          .'<input name="SUBMIT" type="submit" value="'.$next.'" />'
                          .'</span>';
         }          }
       $buttons .= '</p>'; # '</fieldset>';
     }      }
   
     $result .= "</td></tr><tr><td valign='bottom' align='right'>";  
   
     # Warning: Copy and pasted from above, because it's too much trouble to   
     # turn this into a subroutine      $result .= '<h2>'.$stateTitle.$stateHelp.'</h2>';
   
   #   $result .= '<div>';
   
       # Top buttons
       $result .= $buttons;
   
       # Main content of current helper screen
     if (!$state->overrideForm()) {      if (!$state->overrideForm()) {
         if ($self->{STATE} ne $self->{START_STATE}) {          $result .= $self->_saveVars();
             #$result .= '<input name="SUBMIT" type="submit" value="&lt;- Previous" />&nbsp;&nbsp;';  
         }  
         if ($self->{DONE}) {  
             my $returnPage = $self->{RETURN_PAGE};  
             $result .= "<a href=\"$returnPage\">" . &mt('End Helper') . "</a>";  
         }  
         else {  
             $result .= '<span class="LC_nobreak"><input name="back" type="button" ';  
             $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';  
             $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></span>';  
         }  
     }      }
       $result .= $state->render();
   
       # Bottom buttons
       $result .= $buttons;
   
   
     #foreach my $key (keys %{$self->{VARS}}) {      #foreach my $key (keys %{$self->{VARS}}) {
     #    $result .= "|$key| -> " . $self->{VARS}->{$key} . "<br />";      #    $result .= "|$key| -> " . $self->{VARS}->{$key} . "<br />";
     #}      #}
   
     $result .= "</td></tr></table>";  #   $result .= '</div>';
   
     $result .= <<FOOTER;      $result .= <<FOOTER;
               </td>  
             </tr>  
           </table>  
         </form>          </form>
 FOOTER  FOOTER
   
Line 2198  sub start_option { Line 2195  sub start_option {
     if (!defined($paramHash->{OPTION_TEXTS})) {      if (!defined($paramHash->{OPTION_TEXTS})) {
  $paramHash->{OPTION_TEXTS} = [ ];   $paramHash->{OPTION_TEXTS} = [ ];
  $paramHash->{OPTION_VARS}  = [ ];   $paramHash->{OPTION_VARS}  = [ ];
    $paramHash->{OPTION_TYPES} = [ ];
   
     }      }
       #  We can have an attribute: type which can have the
       #  values: "checkbox" or "text" which defaults to 
       #           checkbox allowing us to change the type of input
       #           for the option:
       #
       my $input_widget_type = 'checkbox';
       if(defined($token->[2]{'type'})) {
    my $widget_type  = $token->[2]{'type'};
    if ($widget_type eq 'text') {          # only accept legal alternatives
       $input_widget_type = $widget_type; # Illegals are checks.
    } elsif ($widget_type eq 'hidden') {
       $input_widget_type = $widget_type;
    }
       }
   
     # OPTION_TEXTS is a list of the text attribute      # OPTION_TEXTS is a list of the text attribute
     #               values used to create column headings.      #               values used to create column headings.
     # OPTION_VARS is a list of the variable names, used to create the checkbox      # OPTION_VARS is a list of the variable names, used to create the checkbox
     #             inputs.      #             inputs.
       # OPTION_TYPES is a list of the option types:
       #
     #  We're ok with empty elements. as place holders      #  We're ok with empty elements. as place holders
     # Although the 'variable' element should really exist.      # Although the 'variable' element should really exist.
     #      #
   
   
     my $option_texts  = $paramHash->{OPTION_TEXTS};      my $option_texts  = $paramHash->{OPTION_TEXTS};
     my $option_vars   = $paramHash->{OPTION_VARS};      my $option_vars   = $paramHash->{OPTION_VARS};
       my $option_types   = $paramHash->{OPTION_TYPES};
     push(@$option_texts,  $token->[2]{'text'});      push(@$option_texts,  $token->[2]{'text'});
     push(@$option_vars,   $token->[2]{'variable'});      push(@$option_vars,   $token->[2]{'variable'});
       push(@$option_types,   $input_widget_type);
   
   
     #  Need to create and declare the option variables as well to make them      #  Need to create and declare the option variables as well to make them
     # persistent.      # persistent.
Line 2287  BUTTONS Line 2306  BUTTONS
     my $multichoice    = $self->{'multichoice'};      my $multichoice    = $self->{'multichoice'};
     my $option_vars    = $self->{OPTION_VARS};      my $option_vars    = $self->{OPTION_VARS};
     my $option_texts   = $self->{OPTION_TEXTS};      my $option_texts   = $self->{OPTION_TEXTS};
       my $option_types   = $self->{OPTION_TYPES};
     my $addparts       = $self->{'addparts'};      my $addparts       = $self->{'addparts'};
     my $headings_done  = 0;      my $headings_done  = 0;
   
Line 2345  BUTTONS Line 2365  BUTTONS
     my $resource_name =         my $resource_name =   
                    HTML::Entities::encode($raw_name,"<>&\"'");                     HTML::Entities::encode($raw_name,"<>&\"'");
     if($option_vars) {      if($option_vars) {
    my $option_num = 0;
  foreach my $option_var (@$option_vars) {   foreach my $option_var (@$option_vars) {
       my $option_type = $option_types->[$option_num];
       $option_num++;
     my $var_value = "\|\|\|" . $helper->{VARS}->{$option_var} .       my $var_value = "\|\|\|" . $helper->{VARS}->{$option_var} . 
  "\|\|\|";   "\|\|\|";
     my $checked ="";      my $checked ="";
     if($var_value =~ /\Q|||$raw_name|||\E/) {      if($var_value =~ /\Q|||$raw_name|||\E/) {
  $checked = "checked='checked'";   $checked = "checked='checked'";
     }      }
     $col .=       if ($option_type eq 'text') {
                         "<td align='center'><input type='checkbox' name ='$option_var".   #
  "_forminput' value='".   # For text's the variable value is a ||| separated set of
  $resource_name . "' $checked /> </td>";   # resource_name=value 
    #
    my @values = split(/\|\|\|/, $helper->{VARS}->{$option_var});
   
    # Normal practice would be to toss this in a hash but 
    # the only thing that saves is the compare in the loop
    # below and for all but one case we'll break out of the loop
    # before it completes.
   
    my $text_value = '';    # In case there's no match.
    foreach my $value (@values) {
       my ($res, $skip) = split(/=/, $value);
       if($res eq $resource_name) {
    $text_value = $skip;
    last;
       }
    }
   
    $col .=
       "<td align='center'><input type='text' name ='$option_var".
       "_forminput' value='".$text_value."' size='5' /> </td>";
       } elsif ($option_type eq 'hidden') {
     $col .= "<td align='center'><input type='hidden' name ='$option_var".
       "_forminput' value='".
       $resource_name . "'/> </td>";
       } else {
    $col .= 
       "<td align='center'><input type=$option_type name ='$option_var".
       "_forminput' value='".
       $resource_name . "' $checked /> </td>";
       }
  }   }
     }      }
   
Line 3441  snippets and collecting the results. Fin Line 3494  snippets and collecting the results. Fin
 helper, going to a provided page.  helper, going to a provided page.
   
 If the parameter "restartCourse" is true, this will override the buttons and  If the parameter "restartCourse" is true, this will override the buttons and
 will make a "Finish Helper" button that will re-initialize the course for them,  will make a Save button (Finish Helper) that will re-initialize the course for them,
 which is useful for the Course Initialization helper so the users never see  which is useful for the Course Initialization helper so the users never see
 the old values taking effect.  the old values taking effect.
   
Line 3548  sub render { Line 3601  sub render {
   
     my $actionURL = $self->{EXIT_PAGE};      my $actionURL = $self->{EXIT_PAGE};
     my $targetURL = '';      my $targetURL = '';
     my $finish=&mt('Finish');   my $finish=&mt('Save');
     if ($self->{'restartCourse'}) {      if ($self->{'restartCourse'}) {
  $actionURL = '/adm/roles';   $actionURL = '/adm/roles';
  $targetURL = '/adm/menu';   $targetURL = '/adm/menu';
Line 3560  sub render { Line 3613  sub render {
  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';
  }   }
  my $finish=&mt('Finish Course Initialization');  
     }      }
     my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');      my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');
     my $next = HTML::Entities::encode(&mt("Next"), '<>&"');      my $next = HTML::Entities::encode(&mt("Next"), '<>&"');
     my $target = " target='loncapaclient'";      my $target = " target='loncapaclient'";
     if ($env{'environment.remote'} eq 'off') {  $target='';  }      if ($env{'environment.remote'} eq 'off') {  $target='';  }
     $result .= "<center>\n" .      $result .= "<p>\n" .
  "<form action='".$actionURL."' method='post' $target>\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" .
  "<input type='hidden' name='" . $env{'request.role'} .    "<input type='hidden' name='" . $env{'request.role'} . 
  "' value='1' />\n<input type='submit' value='" . $finish . "' />\n" .   "' value='1' />\n<input type='submit' value='" . $finish . "' />\n" .
  "</form></center>";   "</form></p>\n";
   
     return $result;      return $result;
 }  }
Line 3696  sub render { Line 3748  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();
             $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>';
         } else {          } else {
             $resourceString .= '<li>'.&mt('for the resource ID [_1] (name unavailable) part [_2]','<b>'.$vars->{RESOURCE_ID}.'</b>',"<b>$part</b>").'</li>';              $resourceString .= '<li>'.&mt('for the resource ID [_1] (name unavailable), part [_2]','<b>'.$vars->{RESOURCE_ID}.'</b>',"<b>$part</b>").'</li>';
             &Apache::lonnet::logthis('Retrieval of resource title failed in lonhelper.pm - could not create navmap object for course.');              &Apache::lonnet::logthis('Retrieval of resource title failed in lonhelper.pm - could not create navmap object for course.');
         }          }
  if ($vars->{TARGETS} eq 'course') {   if ($vars->{TARGETS} eq 'course') {
Line 3731  sub render { Line 3783  sub render {
     $result .= "<input type='hidden' name='psprt' value='".      $result .= "<input type='hidden' name='psprt' value='".
  HTML::Entities::encode($part,"'<>&\"") . "' />\n";   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 class="LC_info">'
                 .&mt('Confirm that this information is correct, then click &quot;Save&quot; to complete setting the parameter.')
                 .'</p>'
                 .'<ul>';
           
     # Print the type of manipulation:      # Print the type of manipulation:
     my $extra;      my $extra;
Line 3807  sub render { Line 3862  sub render {
         my $showdate = &Apache::lonlocal::locallocaltime($vars->{PARM_DATE});          my $showdate = &Apache::lonlocal::locallocaltime($vars->{PARM_DATE});
  $result .= '<li>'.&mt('to [_1] ([_2])',"<b>".$showdate."</b>",Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}))."</li>\n";   $result .= '<li>'.&mt('to [_1] ([_2])',"<b>".$showdate."</b>",Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}))."</li>\n";
     }      }
   
    $result .= '</ul>';
     
   # FIXME: Make previous button working
   #        Found to be dysfunctional when used to change the selected student
   #   my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');
       my $buttons .= '<p><span class="LC_nobreak">'
   #                 .'<input name="back" type="button"'
   #                 .' value="'.$previous.'" onclick="history.go(-1)" />'
                     .' <input type="submit" value="'.&mt('Save').'" />' # Finish Helper
                     .'</span></p>'."\n";
   
     # print pres_marker      # print pres_marker
     $result .= "\n<input type='hidden' name='pres_marker'" .      $result .= "\n<input type='hidden' name='pres_marker'" .
         " value='$affectedResourceId&$parm_name&$level' />\n";          " value='$affectedResourceId&$parm_name&$level' />\n";
Line 3817  sub render { Line 3883  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='".&mt('Finish Helper')."' /></center></form>\n";      $result .= $buttons;
   
     return $result;      return $result;
 }  }

Removed from v.1.173  
changed lines
  Added in v.1.177


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