Diff for /loncom/homework/structuretags.pm between versions 1.444.4.4 and 1.471

version 1.444.4.4, 2010/01/29 15:33:02 version 1.471, 2010/07/29 21:16:40
Line 66  use lib '/home/httpd/lib/perl/'; Line 66  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
     
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::structuretags',('block','languageblock','translated','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag'));      &Apache::lonxml::register('Apache::structuretags',('block','languageblock','translated','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startpartmarker','startouttext','endpartmarker','endouttext','simpleeditbutton','definetag'));
 }  }
   
 sub start_web {  sub start_web {
Line 203  sub page_start { Line 203  sub page_start {
  }   }
     }      }
   
       my $pageheader = '';
     if (defined($found{'body'})) {      if (defined($found{'body'})) {
  $body_args{'skip_phases'}{'body'}=1;   $body_args{'skip_phases'}{'body'}=1;
     } elsif (!defined($found{'body'})       } elsif (!defined($found{'body'}) 
      && $env{'request.state'} eq 'construct') {       && $env{'request.state'} eq 'construct') {
  if ($target eq 'web' || $target eq 'edit') {   if ($target eq 'web' || $target eq 'edit') {
     if ($env{'environment.remote'} ne 'off') {          # Breadcrumbs for Construction Space
  $body_args{'only_body'}  = 1;          &Apache::lonhtmlcommon::clear_breadcrumbs();
     }          &Apache::lonhtmlcommon::add_breadcrumb({
               'text'  => 'Construction Space',
               'href'  => &Apache::loncommon::authorspace(),
           });
           # breadcrumbs (and tools) will be created 
           # in start_page->bodytag->innerregister
   
   # FIXME Where are we?
   #        &Apache::lonhtmlcommon::add_breadcrumb({
   #            'text'  => 'Problem Editing', # 'Problem Testing'
   #            'href'  => '',
   #        });
           $pageheader =&Apache::loncommon::head_subbox(
                   &Apache::loncommon::CSTR_pageheader());
  }   }
     } elsif (!defined($found{'body'})) {      } elsif (!defined($found{'body'})) {
  my %add_entries;   my %add_entries;
Line 222  sub page_start { Line 236  sub page_start {
   
  my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack,   my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack,
        $safeeval);         $safeeval);
         if ($bgcolor eq '' ) { $bgcolor = '#FFFFFF'; }          if ($bgcolor eq '' ) { $bgcolor = '#FFFFFF'; }
   
  $body_args{'bgcolor'}        = $bgcolor;          $body_args{'bgcolor'}        = $bgcolor;
  $body_args{'no_title'}       = 1;          # $body_args{'no_title'}       = 1;
  $body_args{'force_register'} = 1;          $body_args{'force_register'} = 1;
  $body_args{'add_entries'}    = \%add_entries;          $body_args{'add_entries'}    = \%add_entries;
  if ($env{'environment.remote'} eq 'off'          if ( $env{'request.state'} eq   'construct') {
     && $env{'request.state'} eq   'construct') {              $body_args{'only_body'}  = 1;
     $body_args{'only_body'}  = 1;          }
  }  
     }      }
     $body_args{'no_auto_mt_title'} = 1;      $body_args{'no_auto_mt_title'} = 1;
     my $page_start = &Apache::loncommon::start_page($name,$extra_head,      my $page_start = &Apache::loncommon::start_page($name,$extra_head,
     \%body_args);      \%body_args);
       $page_start .= $pageheader;
     if (!defined($found{'body'})       if (!defined($found{'body'}) 
  && $env{'request.state'} ne 'construct'   && $env{'request.state'} ne 'construct'
  && ($target eq 'web' || $target eq 'webgrade')) {   && ($target eq 'web' || $target eq 'webgrade')) {
   
  my ($symb,undef,undef,undef,$publicuser)= &Apache::lonnet::whichuser();   my ($symb,undef,undef,undef,$publicuser)= &Apache::lonnet::whichuser();
  if ($symb eq '' && !$publicuser) {          if ($symb eq '' && !$publicuser) {
             $page_start .= '<p class="LC_info">'              $page_start .= '<p class="LC_info">'
                           .&mt('Browsing resource, all submissions are temporary.')                            .&mt('Browsing resource, all submissions are temporary.')
                           .'</p>';                            .'</p>';
Line 256  sub page_start { Line 269  sub page_start {
     my $form_tag_start;      my $form_tag_start;
     if (!defined($found{'form'})) {      if (!defined($found{'form'})) {
  $form_tag_start='<form name="lonhomework" enctype="multipart/form-data" method="post" action="';   $form_tag_start='<form name="lonhomework" enctype="multipart/form-data" method="post" action="';
  my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'});   my $uri = &Apache::loncommon::inhibit_menu_check(
                   &Apache::lonenc::check_encrypt($env{'request.uri'}));
           $uri = &HTML::Entities::encode($uri,'<>&"');
  $form_tag_start.=$uri.'" ';   $form_tag_start.=$uri.'" ';
  if ($target eq 'edit') {   if ($target eq 'edit') {
     $form_tag_start.=&Apache::edit::form_change_detection();      $form_tag_start.=&Apache::edit::form_change_detection();
Line 371  sub problem_edit_header { Line 386  sub problem_edit_header {
 '.&mt('Problem Editing').&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').'  '.&mt('Problem Editing').&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').'
 </div>'.  </div>'.
 &problem_edit_buttons().'  &problem_edit_buttons().'
 <hr class="LC_edit_problem_divide" />  <hr style="clear:both;" />
 '.&Apache::lonxml::message_location().'  '.&Apache::lonxml::message_location().'
 </div>  </div>
 '.  '.
        '<table border="0" width="100%"><tr><td bgcolor="#DDDDDD">';         '<table border="0" width="100%"><tr><td bgcolor="#F8F8F8">';
 }  }
   
 sub problem_edit_footer {  sub problem_edit_footer {
     return '</td></tr></table><br />      return '</td></tr></table><br />
 <div class="LC_edit_problem_footer">  <div class="LC_edit_problem_footer">
   <hr class="LC_edit_problem_divide" />'.    <hr />'.
 &problem_edit_buttons().'  &problem_edit_buttons().'
   <hr class="LC_edit_problem_divide" />    <hr style="clear:both;" />
 </div>  </div>
 '.  '.
   
Line 418  sub problem_web_to_edit_header { Line 433  sub problem_web_to_edit_header {
     '</div>';      '</div>';
     }      }
           
     my $show_all_foils_text =      my $show_all_foils_text = 
         ($Apache::lonhomework::parsing_a_task) ?   ($Apache::lonhomework::parsing_a_task) ?
         &mt('Show All Instances')   &mt('Show All Instances')
         : &mt('Show All Foils');   : &mt('Show All Foils');
   
     my $show_all= '<span class="LC_nobreak"><label for="showallfoils">'      my $show_all= '<span class="LC_nobreak"><label for="showallfoils">'
                  .'<input type="checkbox" name="showallfoils"';                   .'<input type="checkbox" name="showallfoils"';
Line 453  sub problem_web_to_edit_header { Line 468  sub problem_web_to_edit_header {
   ".&option('exam'   ,'problemtype').&mt("Exam Problem")."</option>    ".&option('exam'   ,'problemtype').&mt("Exam Problem")."</option>
   ".&option('problem','problemtype').&mt("Homework Problem")."</option>    ".&option('problem','problemtype').&mt("Homework Problem")."</option>
   ".&option('survey' ,'problemtype').&mt("Survey Question")."</option>    ".&option('survey' ,'problemtype').&mt("Survey Question")."</option>
     ".&option('surveycred' ,'problemtype').&mt("Survey Question (with credit)")."</option>
     ".&option('anonsurvey' ,'problemtype').&mt("Anonymous Survey Question")."</option>
     ".&option('anonsurveycred' ,'problemtype').&mt("Anonymous Survey Question (with credit)")."</option>
   ".&option('practice' ,'problemtype').&mt("Practice Problem")."</option>    ".&option('practice' ,'problemtype').&mt("Practice Problem")."</option>
 </select>  </select>
 </span>  </span>
Line 500  $show_all Line 518  $show_all
      <input type="submit" name="clear_style_file" accesskey="d" value="'.&mt('Show Default View').'" />       <input type="submit" name="clear_style_file" accesskey="d" value="'.&mt('Show Default View').'" />
      <input type="submit" name="resetdata" accesskey="r" value="'.&mt('Reset Submissions').'" />       <input type="submit" name="resetdata" accesskey="r" value="'.&mt('Reset Submissions').'" />
    </div>     </div>
    <hr class="LC_edit_problem_divide" />     <hr />
    <div class="LC_edit_problem_header_randomize_row">     <div class="LC_edit_problem_header_randomize_row">
      <input type="submit" name="newrandomization" accesskey="a" value="'.&mt('New Randomization').'" />       <input type="submit" name="newrandomization" accesskey="a" value="'.&mt('New Randomization').'" />
      <input type="submit" name="changerandseed" value="'.&mt('Change Random Seed To:').'" />       <input type="submit" name="changerandseed" value="'.&mt('Change Random Seed To:').'" />
Line 524  $show_all Line 542  $show_all
   
     $result.='      $result.='
    </div>     </div>
    <div class="LC_edit_problem_header_edit_row">';     <hr />
      <div>';
     $result.='<input type="hidden" name="problemmode" value="view" />';      $result.='<input type="hidden" name="problemmode" value="view" />';
     $result .= '<input type="button" name="submitmode" accesskey="e" value="'.&mt('Edit').'" '.      $result .= '<input type="button" name="submitmode" accesskey="e" value="'.&mt('Edit').'" '.
                'onclick="javascript:setmode(this.form,'."'edit'".')" />';                 'onclick="javascript:setmode(this.form,'."'edit'".')" />';
Line 532  $show_all Line 551  $show_all
                'onclick="javascript:setmode(this.form,'."'editxml'".')" />';                 'onclick="javascript:setmode(this.form,'."'editxml'".')" />';
     $result.='      $result.='
    </div>     </div>
      <hr />
    '.&Apache::lonxml::message_location().'     '.&Apache::lonxml::message_location().'
 </div>';  </div>';
     return $result;      return $result;
Line 609  sub finalize_storage { Line 629  sub finalize_storage {
     $result=&Apache::lonnet::cstore(\%Apache::lonhomework::results,      $result=&Apache::lonnet::cstore(\%Apache::lonhomework::results,
     $symb,$courseid,$domain,$name);      $symb,$courseid,$domain,$name);
     &Apache::lonxml::debug('Store return message:'.$result);      &Apache::lonxml::debug('Store return message:'.$result);
             if ($env{'request.role'} =~/^st/) {              &store_aggregates($symb,$courseid);
                 &store_aggregates($symb,$courseid);  
             }  
  }   }
     } else {      } else {
  &Apache::lonxml::debug('Nothing to store');   &Apache::lonxml::debug('Nothing to store');
Line 641  sub store_aggregates { Line 659  sub store_aggregates {
         }          }
     }      }
     foreach my $part (@parts) {      foreach my $part (@parts) {
         if ($Apache::lonhomework::results{'resource.'.$part.'.award'}          if ($env{'request.role'} =~/^st/) {
     eq 'APPROX_ANS' ||              if ($Apache::lonhomework::results{'resource.'.$part.'.award'}
     $Apache::lonhomework::results{'resource.'.$part.'.award'}          eq 'APPROX_ANS' ||
     eq 'EXACT_ANS') {          $Apache::lonhomework::results{'resource.'.$part.'.award'}
             $aggregate{$symb."\0".$part."\0correct"} = 1;          eq 'EXACT_ANS') {
                   $aggregate{$symb."\0".$part."\0correct"} = 1;
               }
               if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) {
                   $aggregate{$symb."\0".$part."\0users"} = 1;
               } else {
                   my (undef,$last_reset) = &Apache::grades::get_last_resets($symb,$env{'request.course.id'},[$part]); 
                   if ($last_reset) {
                       if (&Apache::grades::get_num_tries(\%Apache::lonhomework::history,$last_reset,$part) == 0) {
                           $aggregate{$symb."\0".$part."\0users"} = 1;
                       }
                   }
               }
               $aggregate{$symb."\0".$part."\0attempts"} = 1;
         }          }
         if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) {          if (($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurvey') || 
             $aggregate{$symb."\0".$part."\0users"} = 1;              ($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurveycred')) {
         } else {              $aggregate{$symb."\0".$part."\0anonymous"} = 1;
             my (undef,$last_reset) = &Apache::grades::get_last_resets($symb,$env{'request.course.id'},[$part]);               my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}};
             if ($last_reset) {              if ($needsrelease) {   
                 if (&Apache::grades::get_num_tries(\%Apache::lonhomework::history,$last_reset,$part) == 0) {                  my $curr_required = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'};
                     $aggregate{$symb."\0".$part."\0users"} = 1;                  if ($curr_required eq '') {
                       &Apache::lonnet::update_released_required($needsrelease);
                   } else {
                       my ($currmajor,$currminor) = split(/\./,$curr_required);
                       my ($needsmajor,$needsminor) = split(/\./,$needsrelease);
                       if (($currmajor < $needsmajor) || ($currmajor == $needsmajor && $currminor < $needsminor)) {
                           &Apache::lonnet::update_released_required($needsrelease);
                       }
                 }                  }
             }              }
         }          }
         $aggregate{$symb."\0".$part."\0attempts"} = 1;  
     }      }
     if (keys (%aggregate) > 0) {      if (keys (%aggregate) > 0) {
  &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,   &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,
Line 873  sub start_problem { Line 910  sub start_problem {
     if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval); }      if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval); }
     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||      if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
  $target eq 'tex') {   $target eq 'tex') {
  #handle exam checkout  
  if ($Apache::lonhomework::type eq 'exam') {  
     my $token=  
  $Apache::lonhomework::history{"resource.0.outtoken"};  
     if (($env{'form.doescheckout'}) && (!$token)) {  
  $token=&Apache::lonxml::maketoken();  
  $Apache::lonhomework::history{"resource.0.outtoken"}=  
     $token;  
     }  
     $result.=&Apache::lonxml::printtokenheader($target,$token);  
  }  
  if ($env{'form.markaccess'}) {   if ($env{'form.markaccess'}) {
     my @interval=&Apache::lonnet::EXT("resource.0.interval");      my @interval=&Apache::lonnet::EXT("resource.0.interval");
     &Apache::lonnet::set_first_access($interval[1]);      &Apache::lonnet::set_first_access($interval[1]);
Line 902  sub start_problem { Line 928  sub start_problem {
     '<input type="hidden" name="username"      '<input type="hidden" name="username"
                              value="'.$env{'form.username'}.'" />';                               value="'.$env{'form.username'}.'" />';
     }      }
             if ($env{'request.role.adv'}) {      if ($env{'request.role.adv'}) {
                 $form_tag_start.= ' <label class="LC_nobreak">'   $form_tag_start.= ' <label class="LC_nobreak">'
                          .'<input type="checkbox" name="showallfoils"';                           .'<input type="checkbox" name="showallfoils"';
                 if (defined($env{'form.showallfoils'})) {   if (defined($env{'form.showallfoils'})) {
                     $form_tag_start.=' checked="checked"';      $form_tag_start.=' checked="checked"';
                 }   }
                 $form_tag_start.= ' /> '                  $form_tag_start.= ' /> '
                                  .&mt('Show All Foils')                                   .&mt('Show All Foils')
                                  .'</label>';                                   .'</label>';
   
     }      }
             if ($Apache::lonhomework::type eq 'practice') {              if ($Apache::lonhomework::type eq 'practice') {
                 $form_tag_start.=&practice_problem_header();                  $form_tag_start.=&practice_problem_header();
Line 1068  sub end_problem { Line 1093  sub end_problem {
  #  it in the problem header.  We have been logging the   #  it in the problem header.  We have been logging the
  #  last due date written to file.    #  last due date written to file. 
   
  my $duetime = &Apache::lonnet::EXT("resource.$id.duedate");   my $duetime = &Apache::lonnet::EXT("resource.$id.duedate"); 
  my $duedate = POSIX::strftime("%c",localtime($duetime));   my $duedate = POSIX::strftime("%c",localtime($duetime));
         my $duedate_text = &mt('Due date: [_1]'          my $duedate_text = &mt('Due date: [_1]'
                               ,&Apache::lonlocal::locallocaltime($duetime));                                ,&Apache::lonlocal::locallocaltime($duetime));
Line 1106  sub end_problem { Line 1131  sub end_problem {
  '\textit{'.$duedate_text.'} '.$toc_line;   '\textit{'.$duedate_text.'} '.$toc_line;
  } else {   } else {
     $frontmatter.= $begin_doc.$toc_line;      $frontmatter.= $begin_doc.$toc_line;
                     if ($Apache::lonhomework::type eq 'exam' and $allow_print_points==1) {      if ($Apache::lonhomework::type eq 'exam' and $allow_print_points==1) { 
                         $frontmatter .= '\fbox{\textit{'.$weight.' pt}}';   $frontmatter .= '\fbox{\textit{'.$weight.' pt}}';
                     }      }
  }   }
     } else {      } else {
  $frontmatter .= '\vskip 1mm\textit{'.$duedate_text.'} \\\\\\\\'.$startminipage;   $frontmatter .= '\vskip 1mm\textit{'.$duedate_text.'} \\\\\\\\'.$startminipage;
Line 1116  sub end_problem { Line 1141  sub end_problem {
  } else {   } else {
     if (not $env{'request.symb'} =~ m/\.page_/) {      if (not $env{'request.symb'} =~ m/\.page_/) {
  $frontmatter .= $begin_doc.$toc_line;   $frontmatter .= $begin_doc.$toc_line;
                 if (($Apache::lonhomework::type eq 'exam') and ($allow_print_points==1)) {   if (($Apache::lonhomework::type eq 'exam') and ($allow_print_points==1)) { 
                     $frontmatter .= '\fbox{\textit{'.$weight.' pt}}';      $frontmatter .= '\fbox{\textit{'.$weight.' pt}}';
                 }   }
     } else {      } else {
  $frontmatter .= '\vskip 1mm \\\\\\\\'.$startminipage;   $frontmatter .= '\vskip 1mm \\\\\\\\'.$startminipage;
     }      }
Line 1471  sub start_instructorcomment { Line 1496  sub start_instructorcomment {
   
     if ($target eq 'web' || $target eq 'grade'   || $target eq 'answer' ||      if ($target eq 'web' || $target eq 'grade'   || $target eq 'answer' ||
  $target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') {   $target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') {
         $result=($env{'request.role'}=~/^(in|cc|au|ca|li)/);          $result=($env{'request.role'}=~/^(in|cc|co|au|ca|li)/);
  if ( (! $result) or ($env{'form.instructor_comments'} eq 'hide')) {   if ( (! $result) or ($env{'form.instructor_comments'} eq 'hide')) {
     my $skip=&Apache::lonxml::get_all_text("/instructorcomment",      my $skip=&Apache::lonxml::get_all_text("/instructorcomment",
    $parser,$style);     $parser,$style);
Line 1676  sub ordered_show_check { Line 1701  sub ordered_show_check {
     return $in_order_show;      return $in_order_show;
 }  }
   
   
   sub start_startpartmarker {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
       my $result='';
       if ($target eq 'edit') {
           $result=&Apache::edit::tag_start($target,$token);
           $result.=&mt('Marker for the start of a part. Place end marker below to wrap in-between tags into a new part.').'</td></tr>';
           $result.=&Apache::edit::end_table();
   
       } 
       return $result;
   }
   
   sub end_startpartmarker {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
       my @result;
       if ($target eq 'edit') { $result[1]='no'; }
       return @result;
   }
   
   sub start_endpartmarker {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
       my $result='';
       if ($target eq 'edit') {
           $result=&Apache::edit::tag_start($target,$token);
           $result.=&mt('Marker for the end of a part. Place start marker above to wrap in-between tags into a new part.').'</td></tr>';
           $result.=&Apache::edit::end_table();
   
       }
       return $result;
   }
   
   sub end_endpartmarker {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
       my @result;
       if ($target eq 'edit') { $result[1]='no'; }
       return @result;
   }
   
   
   
   
   
 sub start_part {  sub start_part {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     if (!$Apache::lonxml::metamode) {      if (!$Apache::lonxml::metamode) {
Line 1760  sub start_part { Line 1828  sub start_part {
     '.disableexampointprint'}) eq 'yes') {      '.disableexampointprint'}) eq 'yes') {
  $allow_print_points=0;   $allow_print_points=0;
     }      }
                     if (($Apache::lonhomework::type eq 'exam') && ($allow_print_points)) {       if (($Apache::lonhomework::type eq 'exam') && ($allow_print_points)) { 
                         $result .= '\vskip 10mm\fbox{\textit{'.$weight.' pt}}';   $result .= '\vskip 10mm\fbox{\textit{'.$weight.' pt}}';
                     }  
       }
  } elsif ($target eq 'web') {   } elsif ($target eq 'web') {
     $result.='<a name="'.&escape($Apache::inputtags::part).'" />';      $result.='<a name="'.&escape($Apache::inputtags::part).'" />';
  }   }
Line 1931  sub start_problemtype { Line 2000  sub start_problemtype {
  $result .=&Apache::edit::checked_arg('When used as type(s):','for',   $result .=&Apache::edit::checked_arg('When used as type(s):','for',
      [ ['exam','Exam/Quiz Problem'],       [ ['exam','Exam/Quiz Problem'],
        ['survey','Survey'],         ['survey','Survey'],
                                                  ['surveycred','Survey (with credit)'],
                                                  ['anonsurvey','Anonymous Survey'],
                                                  ['anonsurveycred','Anonymous Survey (with credit)'],
        ['problem','Homework Problem'],         ['problem','Homework Problem'],
                                                ['practice','Practice Problem'] ]                                                 ['practice','Practice Problem'] ]
      ,$token);       ,$token);
Line 2044  sub start_simpleeditbutton { Line 2116  sub start_simpleeditbutton {
         my $url=$env{'request.noversionuri'};          my $url=$env{'request.noversionuri'};
         $url=~s/\?.*$//;          $url=~s/\?.*$//;
  my ($symb) = &Apache::lonnet::whichuser();   my ($symb) = &Apache::lonnet::whichuser();
 #       Warning make more sense and is more important on edit screen  #       Warning makes more sense and is more important on edit screen
 #       $result='<p class="LC_warning">'  #       $result='<p class="LC_warning">'
 #              .&mt('Note: it can take up to 10 minutes for changes to take effect for all users.')  #              .&mt('Note: it can take up to 10 minutes for changes to take effect for all users.')
 #              .&Apache::loncommon::help_open_topic('Caching')  #              .&Apache::loncommon::help_open_topic('Caching')
 #              .'</p>';  #              .'</p>';
         $result .= '<table width="100%" bgcolor="#FFFFAA" border="2"><tr><td>'.          $result.=&Apache::lonhtmlcommon::start_funclist()
                    '<a href="'.$url.'/smpedit?symb='.&escape($symb).'">'.                  .&Apache::lonhtmlcommon::add_item_funclist(
                    &mt('Edit').'</a>.'</td></tr></table><br />';                       '<a href="'.$url.'/smpedit?symb='.&escape($symb).'">'
                       .&mt('Edit').'</a>')
                   .&Apache::lonhtmlcommon::end_funclist();
   
     }      }
     return $result;      return $result;

Removed from v.1.444.4.4  
changed lines
  Added in v.1.471


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