Diff for /loncom/interface/lonquickgrades.pm between versions 1.66 and 1.70

version 1.66, 2011/02/07 19:16:34 version 1.70, 2011/02/20 23:38:00
Line 173  sub getData { Line 173  sub getData {
   
     my ($showPoints,$uname,$udom)=@_;      my ($showPoints,$uname,$udom)=@_;
   
     &Apache::lonnet::logthis("About to call with $uname $udom");  
   
     # Create the nav map      # Create the nav map
     my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom);      my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom);
   
Line 376  sub outputTable { Line 374  sub outputTable {
     # If there were any problems at the top level, print an extra "catchall"      # If there were any problems at the top level, print an extra "catchall"
     if ($topLevelParts > 0) {      if ($topLevelParts > 0) {
         my $ratio = $topLevelRight / $topLevelParts;          my $ratio = $topLevelRight / $topLevelParts;
         my $color = mixColors(\@start, \@end, $ratio);          my $color = &mixColors(\@start, \@end, $ratio);
         $r->print(&Apache::loncommon::start_data_table_row()          $r->print(&Apache::loncommon::start_data_table_row()
                  .'<td style="background-color:'.$color.';">');                   .'<td style="background-color:'.$color.';">');
         $r->print(&mt("Problems Not Contained In A Folder")."</td><td>");          $r->print(&mt("Problems Not Contained In A Folder")."</td><td>");
Line 388  sub outputTable { Line 386  sub outputTable {
 # show totals (if applicable), close table  # show totals (if applicable), close table
 #  #
     if ($showPoints) {      if ($showPoints) {
         my $maxHelpLink = Apache::loncommon::help_open_topic("Quick_Grades_Possibly_Correct");          my $maxHelpLink = &Apache::loncommon::help_open_topic("Quick_Grades_Possibly_Correct");
   
         $title = $showPoints ? "Points" : "Parts Done";          $title = $showPoints ? "Points" : "Parts Done";
         my $totaltitle = $showPoints ? &mt("Awarded Total Points") : &mt("Total Parts Done");          my $totaltitle = $showPoints ? &mt("Awarded Total Points") : &mt("Total Parts Done");
Line 431  sub outputCategories { Line 429  sub outputCategories {
 # Process the changes  # Process the changes
         %categories=&process_category_edits($r,$cangrade,%categories);          %categories=&process_category_edits($r,$cangrade,%categories);
 # Actually store  # Actually store
           &Apache::lonnet::logthis("Storing ".$categories{'order'});
         &Apache::lonnet::put('grading_categories',\%categories,$cdom,$cnum);          &Apache::lonnet::put('grading_categories',\%categories,$cdom,$cnum);
     }      }
 # new categories loaded now  # new categories loaded now
Line 454  sub outputCategories { Line 453  sub outputCategories {
 sub process_category_edits {  sub process_category_edits {
     my ($r,$cangrade,%categories)=@_;      my ($r,$cangrade,%categories)=@_;
     unless ($cangrade) { return %categories; }      unless ($cangrade) { return %categories; }
 #      my $cmd=$env{'form.cmd'};
 # Business logic here      if ($cmd eq 'createnewcat') {
 #          %categories=&make_new_category($r,$cangrade,undef,%categories);
       } elsif ($cmd=~/^delcat\_(.+)$/) {
           %categories=&del_category($1,$cangrade,%categories);
       } else {
   # Simply store the rest of the stuff
           foreach my $id (split(/\,/,$categories{'order'})) {
               %categories=&set_category_name($cangrade,$id,$env{'form.name_'.$id},%categories);
               %categories=&set_category_weight($cangrade,$id,$env{'form.weighttype_'.$id},$env{'form.weight_'.$id},%categories);
   # More changes here
           }
       }
     return %categories;      return %categories;
 }  }
   
Line 467  sub process_category_edits { Line 476  sub process_category_edits {
 sub output_category_table {  sub output_category_table {
     my ($r,$cangrade,$navmaps,%categories)=@_;      my ($r,$cangrade,$navmaps,%categories)=@_;
     my $sum=0;      my $sum=0;
       my $total=0;
     $r->print(&Apache::loncommon::start_data_table());      $r->print(&Apache::loncommon::start_data_table());
 #  #
     &output_category_table_header($r,$cangrade);      &output_category_table_header($r,$cangrade);
 #  #
     my @order=split(/\,/,$categories{'order'});      my @order=split(/\,/,$categories{'order'});
 #  #
 # FIXME: Debug only  
     @order=('3131_4123_42124','4124_34231_3412');  
 #  
     my $maxpos=$#order;      my $maxpos=$#order;
     for (my $i=0;$i<=$maxpos;$i++) {      for (my $i=0;$i<=$maxpos;$i++) {
         my ($value,$weight)=&output_and_calc_category($r,$cangrade,$navmaps,$order[$i],$i,$maxpos,%categories);          my ($value,$weight)=&output_and_calc_category($r,$cangrade,$navmaps,$order[$i],$i,$maxpos,%categories);
           $sum+=$value*$weight;
           $total+=$weight;
     }      }
 #  #
     &bottom_line_category($r,$cangrade);      &bottom_line_category($r,$cangrade,$sum,$total);
 #  #
     $r->print(&Apache::loncommon::end_data_table());      $r->print(&Apache::loncommon::end_data_table());
     return $sum;      return $sum;
Line 540  ENDMOVE Line 549  ENDMOVE
             }              }
         }          }
         $r->print("\n</select>\n</td>\n");          $r->print("\n</select>\n</td>\n");
           $r->print('<td><a href="/adm/quickgrades?cmd=delcat_'.$id.'&storechanges=1">'.&mt('Delete').'</a></td>');
           $r->print('<td><input type="text" name="name_'.$id.
                     '" value="'.&Apache::lonhtmlcommon::entity_encode($categories{$id.'_name'}).'" /></td>');
       } else {
           $r->print('<td>'.$categories{$id.'_name'}.'</td>');
       }
   # Content
   # FIXME: just placeholders
       if ($cangrade) {
          $r->print("<td>Content Edit</td>");
       } else {
          $r->print("<td>Content</td>");
       }
   # Calculation
   # FIXME: just placeholders
       if ($cangrade) {
          $r->print("<td>Calculation Edit</td>");
       } else {
          $r->print("<td>Calculation</td>");
       }
   # Weight
       if ($cangrade) {
          $r->print('<td>'.
                     '<select name="weighttype_'.$id.'">'.
                     '<option value="default"'.($categories{$id.'_weighttype'} eq 'default'?' selected="selected"':'').'>'.&mt('default').'</option>'.
                     '<option value="typein"'.($categories{$id.'_weighttype'} eq 'typein'?' selected="selected"':'').'>'.&mt('Type-in value').'</option>'.
                     '</select>'.
                     '<input type="text" size="4" name="weight_'.$id.
                     '" value="'.&Apache::lonhtmlcommon::entity_encode($categories{$id.'_weight'}).'" /></td>');
       } else {
           $r->print('<td>'.($categories{$id.'_weighttype'} eq 'default'?&mt('default'):$categories{$id.'_weight'}).'</td>');
     }      }
     $r->print(&Apache::loncommon::end_data_table_row()."\n");  
     return ($value,$weight);      return ($value,$weight);
 }  }
   
Line 551  ENDMOVE Line 590  ENDMOVE
 #  #
   
 sub bottom_line_category {  sub bottom_line_category {
     my ($r,$cangrade)=@_;      my ($r,$cangrade,$sum,$total)=@_;
       $r->print(&Apache::loncommon::start_data_table_row());
       if ($cangrade) {
           $r->print('<td colspan="3"><a href="/adm/quickgrades?cmd=createnewcat&storechanges=1">'.&mt('Create New Category').'</a></td>');
       }
       $r->print('<td colspan="5">'.&mt('Current:').$sum.'<br />'.&mt('Total:').$total.'<br /></td>');
 }  }
   
 #  #
Line 573  sub make_new_category { Line 617  sub make_new_category {
     if (defined($ordernum)) {      if (defined($ordernum)) {
         %categories=&move_category($id,$cangrade,$ordernum,%categories);          %categories=&move_category($id,$cangrade,$ordernum,%categories);
     }      }
       $categories{$id.'_weighttype'}='default';
     return %categories;      return %categories;
 }  }
   
 #  #
   # Delete category
   #
   
   sub del_category {
      my ($id,$cangrade,%categories)=@_; 
      my @neworder=();
      foreach my $currentid (split(/\,/,$categories{'order'})) {
         unless ($currentid eq $id) {
            push(@neworder,$currentid);
         }
      }
      $categories{'order'}=join(',',@neworder);
      return %categories;
   }
   
   #
 # Move a category to a desired position n the display order  # Move a category to a desired position n the display order
 #  #
   
Line 628  sub current_pos_category { Line 689  sub current_pos_category {
 # Set name of a category  # Set name of a category
 #  #
 sub set_category_name {  sub set_category_name {
     my ($canedit,$id,$name,%categories)=@_;      my ($cangrade,$id,$name,%categories)=@_;
     unless ($canedit) { return %categories; }      unless ($cangrade) { return %categories; }
     $categories{$id.'_name'}=$name;      $categories{$id.'_name'}=$name;
     return %categories;      return %categories;
 }  }
   
 #  #
   # Set weight of a category
   #
   sub set_category_weight {
       my ($cangrade,$id,$weighttype,$weight,%categories)=@_;
       unless ($cangrade) { return %categories; }
       if (($categories{$id.'_weight'} eq '') && ($weight=~/\d/)) {
           $weighttype='typein';
       }
       $categories{$id.'_weighttype'}=$weighttype;
       if ($weighttype eq 'default') {
           $categories{$id.'_weight'}='';
       } else {
           $weight=~s/\D//gs;
           unless ($weight) { $weight=0; }
           $categories{$id.'_weight'}=$weight;
       }
       return %categories;
   }
   
   
   #
 # === end category-related  # === end category-related
 #  #
 #  #

Removed from v.1.66  
changed lines
  Added in v.1.70


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