Diff for /loncom/homework/bridgetask.pm between versions 1.200 and 1.209

version 1.200, 2006/11/09 21:31:11 version 1.209, 2006/11/27 23:24:36
Line 380  sub nest { Line 380  sub nest {
     }      }
 }  }
   
   sub start_delay {
       push(@delay,1);
   }
   sub end_delay {
       pop(@delay);
   }
   
 sub nested_parse {  sub nested_parse {
     my ($str,$env,$args) = @_;      my ($str,$env,$args) = @_;
     my @old_env = @Apache::scripttag::parser_env;      my @old_env = @Apache::scripttag::parser_env;
Line 791  sub start_Task { Line 798  sub start_Task {
  if ($target eq 'webgrade') {   if ($target eq 'webgrade') {
     $result.="\n".'<div id="LC_GRADING_criterialist">';      $result.="\n".'<div id="LC_GRADING_criterialist">';
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
       &start_delay();
       $dimension{$top}{'result'}=$result;
       undef($result);
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=$form_tag_start.   $result.=$form_tag_start.
Line 1257  DONEBUTTON Line 1267  DONEBUTTON
     &Apache::structuretags::finalize_storage();      &Apache::structuretags::finalize_storage();
  }   }
     } elsif ($target eq 'webgrade') {      } elsif ($target eq 'webgrade') {
  $result.=&Apache::lonxml::endredirection();   if (&nest()) {
       &Apache::lonxml::endredirection();
       &end_delay();
       $result.=$dimension{$top}{'result'};
    } else {
       $result.=&Apache::lonxml::endredirection();
    }
  my $dim = $top;   my $dim = $top;
  foreach my $id (@{$dimension{$dim}{'criterias'}} ) {   foreach my $id (@{$dimension{$dim}{'criterias'}} ) {
     my $type = $dimension{$dim}{'criteria.'.$id.'.type'};      my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
Line 1269  DONEBUTTON Line 1285  DONEBUTTON
      [@_]);       [@_]);
  $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);   $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);
  my $internal_location=&internal_location($id);   my $internal_location=&internal_location($id);
  $result=~s/\Q$internal_location\E/$criteria/;   if ($result =~ m/\Q$internal_location\E/) {
       $result=~s/\Q$internal_location\E/$criteria/;
    } else {
       $result.=$criteria;
    }
   
     }      }
  }   }
         $result.="</div>";          $result.="</div>";
Line 2049  sub start_Setup { Line 2070  sub start_Setup {
     my $dim = &get_id($parstack,$safeeval);      my $dim = &get_id($parstack,$safeeval);
     push(@Apache::bridgetask::dimension,$dim);      push(@Apache::bridgetask::dimension,$dim);
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
     return &internal_location($dim);      return;# &internal_location($dim);
 }  }
   
 {  {
Line 2101  sub start_Dimension { Line 2122  sub start_Dimension {
  $dimension{$top}{'criteria.'.$dim.'.mandatory'}=   $dimension{$top}{'criteria.'.$dim.'.mandatory'}=
     &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);      &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
  push(@{$dimension{$top}{'criterias'}},$dim);   push(@{$dimension{$top}{'criterias'}},$dim);
    $dimension{$dim}{'nested'}=$top;
     }      }
     push(@Apache::bridgetask::dimension,$dim);      push(@Apache::bridgetask::dimension,$dim);
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
     &enable_dimension_parsing($dim);      if (!&skip_dimension_parsing($dim)) {
     return &internal_location($dim);   &enable_dimension_parsing($dim);
       }
       return;# &internal_location($dim);
 }  }
   
 sub start_QuestionText {  sub start_QuestionText {
Line 2229  sub end_Dimension { Line 2253  sub end_Dimension {
  my $question = ('sub' x $dimension{$dim}{'depth'}).'question';   my $question = ('sub' x $dimension{$dim}{'depth'}).'question';
  $question =~ s/^(.)/uc($1)/e;   $question =~ s/^(.)/uc($1)/e;
  if ($dim_status eq 'pass') {   if ($dim_status eq 'pass') {
     $dim_info.='<h3>'.$question.' : you passed this '.$mandatory.' question</h3>';      $dim_info.='<h3>'.$question.' : you passed the above '.$mandatory.' question</h3>';
  }   }
  if ($dim_status eq 'fail') {   if ($dim_status eq 'fail') {
     $dim_info.='<h3>'.$question.' : you did not pass this '.$mandatory.' question</h3>';      $dim_info.='<h3>'.$question.' : you did not pass the above '.$mandatory.' question</h3>';
  }   }
  my %counts = &get_counts($dim,$instance,$parstack,   my %counts = &get_counts($dim,$instance,$parstack,
  $safeeval);   $safeeval);
Line 2246  sub end_Dimension { Line 2270  sub end_Dimension {
  @{$dimension{$dim}{'criterias'}}) {   @{$dimension{$dim}{'criterias'}}) {
     my $type = $dimension{$dim}{'criteria.'.$id.'.type'};      my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
     if ($type eq 'dimension') {      if ($type eq 'dimension') {
  $result.=$dimension{$id}{'result'};   if (defined($dimension{$id}{'result'})) {
  next;      $result.=$dimension{$id}{'result'};
       next;
    } else {
       $dim_info .=
    &nested_parse(\$dimension{$dim}{'criteria.'.$id},
         [@_],{'set_dim_id' => $id});
    }
       } else {
    my $criteria =
       &nested_parse(\$dimension{$dim}{'criteria.'.$id},
     [@_]);
    $dim_info .= &layout_web_Criteria($dim,$id,$criteria);
     }      }
     my $criteria =   
  &nested_parse(\$dimension{$dim}{'criteria.'.$id},  
       [@_]);  
     $dim_info .= &layout_web_Criteria($dim,$id,$criteria);  
  }   }
    # puts the results at the end of the dimension
    $result .= $dim_info;
   
  my $internal_location=&internal_location($dim);   # puts the results at the beginning of the dimension
  $result=~s/\Q$internal_location\E/$dim_info/;   # my $internal_location=&internal_location($dim);
    # $result=~s/\Q$internal_location\E/$dim_info/;
       }
    }
    if ($result !~ /^\s*$/s) {
       # FIXME? this maybe unneccssary in the future, (CSE101 BT
       # from Fall 2006 geenrate a div that attempts to hide some
       # of the output in an odd way, this is a workaround so
       # those old ones will continue to work.  # It puts the
       # LC_question div to come after any starting closie div
       # that the dimension produces
       if ($result =~ m{\s*</div>}) {
    $result =~ s{(\s*</div>)}
               {$1\n<div class="LC_question">};
       } else {
    $result = "\n".'<div class="LC_question">'.
       "\n".$result;
     }      }
       $result .= "\n</div>\n";
  }   }
     } elsif ($target eq 'webgrade') {      } elsif ($target eq 'webgrade') {
  # in case of any side effects that we need   # in case of any side effects that we need
Line 2281  sub end_Dimension { Line 2331  sub end_Dimension {
      [@_]);       [@_]);
  $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);   $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);
  my $internal_location=&internal_location($id);   my $internal_location=&internal_location($id);
  $result=~s/\Q$internal_location\E/$criteria/;   if ($result =~ m/\Q$internal_location\E/) {
       $result =~ s/\Q$internal_location\E/$criteria/;
    } else {
       $result.=$criteria ;
    }
     }      }
  }   }
  if (&nest()) {   if (&nest()) {
Line 2590  sub start_Criteria { Line 2644  sub start_Criteria {
  my $dim = &get_dim_id();   my $dim = &get_dim_id();
  my $id=&get_id($parstack,$safeeval);   my $id=&get_id($parstack,$safeeval);
  if ($target eq 'web' || $target eq 'webgrade') {   if ($target eq 'web' || $target eq 'webgrade') {
     if ($target eq 'webgrade' && $dim ne 'top') {      if ($target eq 'webgrade') {
  &Apache::lonxml::debug(" for $dim $id stashing results into $dim ");   &Apache::lonxml::debug(" for $dim $id stashing results into $dim ");
  $dimension{$dim}{'result'} .= &internal_location($id);   $dimension{$dim}{'result'} .= &internal_location($id);
     } else {      } else {
  &Apache::lonxml::debug(" not stashing $dim $id");   &Apache::lonxml::debug(" not stashing $dim $id");
  $result .= &internal_location($id);   #$result .= &internal_location($id);
     }      }
  }   }
  &Apache::lonxml::debug("Criteria $id with $dim");   &Apache::lonxml::debug("Criteria $id with $dim");
Line 2633  sub layout_web_Criteria { Line 2687  sub layout_web_Criteria {
     $status_display=~s/^([a-z])/uc($1)/e;      $status_display=~s/^([a-z])/uc($1)/e;
     my $criteria_info.=      my $criteria_info.=
  '<div class="LC_'.$status.' LC_criteria">'."\n\t".'<h4>'   '<div class="LC_'.$status.' LC_criteria">'."\n\t".'<h4>'
  .$mandatory.' Criteria</h4>'."\n\t".'<p>'."\n";   .$mandatory.' Criteria</h4>'."\n\t".'<p class="LC_criteria_text">'
    ."\n";
       $criteria =~ s/^\s*//s;
       $criteria =~ s/\s*$//s;
     $criteria_info.= $criteria;      $criteria_info.= $criteria;
     $criteria_info.="\n\t".'</p>'.      $criteria_info.="\n\t".'</p>'.
  "\n\t".'<p class="LC_grade">'.$status_display.'</p>';   "\n\t".'<p class="LC_grade">'.$status_display.'</p>';
Line 2666  sub layout_webgrade_Criteria { Line 2723  sub layout_webgrade_Criteria {
  if ($status eq $which) { $checked{$which} = 'checked="checked"'; }   if ($status eq $which) { $checked{$which} = 'checked="checked"'; }
     }      }
     if (!%checked) { $checked{'ungraded'} = 'checked="checked"'; }      if (!%checked) { $checked{'ungraded'} = 'checked="checked"'; }
           my $buttons;
       foreach my $which  ('ungraded','fail','pass','review') {
    $buttons .= <<END_BUTTON;
    <label class="LC_GRADING_$which">
    <input type="radio" name="HWVAL_$link" value="$which" $checked{$which} />
    $lt{$which}
    </label>
   END_BUTTON
       }
       $criteria =~ s/^\s*//s;
       $criteria =~ s/\s*$//s;
     my $result = <<END_CRITERIA;      my $result = <<END_CRITERIA;
   <div class="LC_GRADING_criteria">  <div class="LC_GRADING_criteria">
      <div class="LC_GRADING_criteriatext">   <div class="LC_GRADING_criteriatext">
  $criteria   $criteria
      </div>   </div>
      <div class="LC_GRADING_grade">   <div class="LC_GRADING_grade">
        <label class="LC_GRADING_ungraded">  $buttons
          <input type="radio" name="HWVAL_$link" value="ungraded" $checked{'ungraded'} />   </div>
  $lt{'ungraded'}   <label class="LC_GRADING_comment">
        </label>   $lt{'comment'}
        <label class="LC_GRADING_fail">   <textarea class="LC_GRADING_comment_area" name="HWVAL_comment_$link">$comment</textarea>
          <input type="radio" name="HWVAL_$link" value="fail" $checked{'fail'} />   </label>
  $lt{'fail'}  </div>
        </label>  
        <label class="LC_GRADING_pass">  
          <input type="radio" name="HWVAL_$link" value="pass" $checked{'pass'} />  
  $lt{'pass'}  
        </label>  
        <label class="LC_GRADING_review">  
          <input type="radio" name="HWVAL_$link" value="review" $checked{'review'} />  
  $lt{'review'}  
        </label>  
      </div>  
      <label class="LC_GRADING_comment">  
        $lt{'comment'}  
        <textarea class="LC_GRADING_comment_area" name="HWVAL_comment_$link">$comment</textarea>  
      </label>  
   </div>  
 END_CRITERIA  END_CRITERIA
     $result .= &grading_history($version,$dim,$id);      $result .= &grading_history($version,$dim,$id);
     return $result;      return $result;

Removed from v.1.200  
changed lines
  Added in v.1.209


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