[system] / branches / gage_dev / webwork2 / lib / WeBWorK / ContentGenerator / Instructor / ProblemSetDetail.pm Repository:
ViewVC logotype

Diff of /branches/gage_dev/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 3046 Revision 3061
83 name => "Opens", 83 name => "Opens",
84 type => "edit", 84 type => "edit",
85 size => "26", 85 size => "26",
86 override => "any", 86 override => "any",
87 labels => { 87 labels => {
88 0 => "None Specified", 88 #0 => "None Specified",
89 "" => "None Specified", 89 "" => "None Specified",
90 }, 90 },
91 }, 91 },
92 due_date => { 92 due_date => {
93 name => "Answers Due", 93 name => "Answers Due",
94 type => "edit", 94 type => "edit",
95 size => "26", 95 size => "26",
96 override => "any", 96 override => "any",
97 labels => { 97 labels => {
98 0 => "None Specified", 98 #0 => "None Specified",
99 "" => "None Specified", 99 "" => "None Specified",
100 }, 100 },
101 }, 101 },
102 answer_date => { 102 answer_date => {
103 name => "Answers Available", 103 name => "Answers Available",
104 type => "edit", 104 type => "edit",
105 size => "26", 105 size => "26",
106 override => "any", 106 override => "any",
107 labels => { 107 labels => {
108 0 => "None Specified", 108 #0 => "None Specified",
109 "" => "None Specified", 109 "" => "None Specified",
110 }, 110 },
111 }, 111 },
112 published => { 112 published => {
113 name => "Visible to Students", 113 name => "Visible to Students",
206 206
207 my $output = CGI::start_table({border => 0, cellpadding => 1}); 207 my $output = CGI::start_table({border => 0, cellpadding => 1});
208 if ($forUsers) { 208 if ($forUsers) {
209 $output .= CGI::Tr( 209 $output .= CGI::Tr(
210 CGI::th({colspan=>"2"}, " "), 210 CGI::th({colspan=>"2"}, " "),
211 CGI::th({colspan=>"1"}, "Individual set dates"), 211 CGI::th({colspan=>"1"}, "User Values"),
212 CGI::th({}, "Class set dates"), 212 CGI::th({}, "Class values"),
213 ); 213 );
214 } 214 }
215 215
216 foreach my $field (@fieldOrder) { 216 foreach my $field (@fieldOrder) {
217 my %properties = %{ FIELD_PROPERTIES()->{$field} }; 217 my %properties = %{ FIELD_PROPERTIES()->{$field} };
272 $globalValue = (defined($globalValue)) ? ($labels{$globalValue || ""} || $globalValue) : ""; 272 $globalValue = (defined($globalValue)) ? ($labels{$globalValue || ""} || $globalValue) : "";
273 my $userValue = $userRecord->{$field}; 273 my $userValue = $userRecord->{$field};
274 $userValue = (defined($userValue)) ? ($labels{$userValue || ""} || $userValue) : ""; 274 $userValue = (defined($userValue)) ? ($labels{$userValue || ""} || $userValue) : "";
275 275
276 if ($field =~ /_date/) { 276 if ($field =~ /_date/) {
277 $globalValue = $self->formatDateTime($globalValue) if $globalValue; 277 $globalValue = $self->formatDateTime($globalValue) if defined $globalValue && $globalValue ne $labels{""};
278 $userValue = $self->formatDateTime($userValue) if $userValue; 278 $userValue = $self->formatDateTime($userValue) if defined $userValue && $userValue ne $labels{""};
279 } 279 }
280 280
281 # check to make sure that a given value can be overridden 281 # check to make sure that a given value can be overridden
282 my %canOverride = map { $_ => 1 } (@{ PROBLEM_FIELDS() }, @{ SET_FIELDS() }); 282 my %canOverride = map { $_ => 1 } (@{ PROBLEM_FIELDS() }, @{ SET_FIELDS() });
283 my $check = $canOverride{$field}; 283 my $check = $canOverride{$field};
317 return (($forUsers && $edit && $check) ? CGI::checkbox({ 317 return (($forUsers && $edit && $check) ? CGI::checkbox({
318 type => "checkbox", 318 type => "checkbox",
319 name => "$recordType.$recordID.$field.override", 319 name => "$recordType.$recordID.$field.override",
320 label => "", 320 label => "",
321 value => $field, 321 value => $field,
322 checked => $r->param("$recordType.$recordID.$field.override") || ($userValue ne "" ? 1 : 0), 322 checked => $r->param("$recordType.$recordID.$field.override") || ($userValue ne ($labels{""} || "") ? 1 : 0),
323 }) : "", 323 }) : "",
324 $properties{name}, 324 $properties{name},
325 $inputType, 325 $inputType,
326 $forUsers ? " $globalValue" : "", 326 $forUsers ? " $globalValue" : "",
327 ); 327 );
516 ##################################################################### 516 #####################################################################
517 517
518 my ($open_date, $due_date, $answer_date); 518 my ($open_date, $due_date, $answer_date);
519 my $error = 0; 519 my $error = 0;
520 if (defined $r->param('submit_changes')) { 520 if (defined $r->param('submit_changes')) {
521 my @names = ("open_date", "due_date", "answer_date");
522
523 my %dates = map { $_ => $r->param("set.$setID.$_") } @names;
524 %dates = map {
525 my $unlabel = $undoLabels{$_}->{$dates{$_}};
526 $_ => defined $unlabel ? $setRecord->$_ : $self->parseDateTime($dates{$_})
527 } @names;
521 528
522 my $od_param = $r->param("set.$setID.open_date"); 529 ($open_date, $due_date, $answer_date) = map { $dates{$_} } @names;
523 my $dd_param = $r->param("set.$setID.due_date");
524 my $ad_param = $r->param("set.$setID.answer_date");
525 #my $setRecord = $db->getGlobalSet($setID); # already fetched above --sam
526
527 $open_date = $od_param ? $self->parseDateTime($od_param) : $setRecord->open_date;
528 $due_date = $dd_param ? $self->parseDateTime($dd_param) : $setRecord->due_date;
529 $answer_date = $ad_param ? $self->parseDateTime($ad_param) : $setRecord->answer_date;
530 530
531 if ($answer_date < $due_date || $answer_date < $open_date) { 531 if ($answer_date < $due_date || $answer_date < $open_date) {
532 $self->addbadmessage("Answers cannot be made available until on or after the due date!"); 532 $self->addbadmessage("Answers cannot be made available until on or after the due date!");
533 $error = $r->param('submit_changes'); 533 $error = $r->param('submit_changes');
534 } 534 }
555 if ($forUsers) { 555 if ($forUsers) {
556 my @userRecords = $db->getUserSets(map { [$_, $setID] } @editForUser); 556 my @userRecords = $db->getUserSets(map { [$_, $setID] } @editForUser);
557 foreach my $record (@userRecords) { 557 foreach my $record (@userRecords) {
558 foreach my $field ( @{ SET_FIELDS() } ) { 558 foreach my $field ( @{ SET_FIELDS() } ) {
559 next unless canChange($forUsers, $field); 559 next unless canChange($forUsers, $field);
560
561 my $override = $r->param("set.$setID.$field.override"); 560 my $override = $r->param("set.$setID.$field.override");
561
562 if (defined $override && $override eq $field) { 562 if (defined $override && $override eq $field) {
563 563
564 my $param = $r->param("set.$setID.$field"); 564 my $param = $r->param("set.$setID.$field");
565 $param = $properties{$field}->{default} || "" unless defined $param && $param ne ""; 565 $param = $properties{$field}->{default} || "" unless defined $param && $param ne "";
566 my $unlabel = $undoLabels{$field}->{$param};
567 $param = $unlabel if defined $unlabel;
566 $param = $undoLabels{$field}->{$param} || $param; 568# $param = $undoLabels{$field}->{$param} || $param;
567 if ($field =~ /_date/) { 569 if ($field =~ /_date/) {
568 $param = $self->parseDateTime($param); 570 $param = $self->parseDateTime($param) unless defined $unlabel;
569 } 571 }
570 $record->$field($param); 572 $record->$field($param);
571 } else { 573 } else {
572 $record->$field(undef); 574 $record->$field(undef);
573 } 575 }
576
574 } 577 }
575 $db->putUserSet($record); 578 $db->putUserSet($record);
576 } 579 }
577 } else { 580 } else {
578 foreach my $field ( @{ SET_FIELDS() } ) { 581 foreach my $field ( @{ SET_FIELDS() } ) {
579 next unless canChange($forUsers, $field); 582 next unless canChange($forUsers, $field);
580 583
581 my $param = $r->param("set.$setID.$field"); 584 my $param = $r->param("set.$setID.$field");
582 $param = $properties{$field}->{default} || "" unless defined $param && $param ne ""; 585 $param = $properties{$field}->{default} || "" unless defined $param && $param ne "";
583 $param = $undoLabels{$field}->{$param} || $param; 586 my $unlabel = $undoLabels{$field}->{$param};
587 $param = $unlabel if defined $unlabel;
584 if ($field =~ /_date/) { 588 if ($field =~ /_date/) {
585 $param = $self->parseDateTime($param); 589 $param = $self->parseDateTime($param) unless defined $unlabel;
586 } 590 }
587 $setRecord->$field($param); 591 $setRecord->$field($param);
588 } 592 }
589 $db->putGlobalSet($setRecord); 593 $db->putGlobalSet($setRecord);
590 } 594 }
617 my $override = $r->param("problem.$problemID.$field.override"); 621 my $override = $r->param("problem.$problemID.$field.override");
618 if (defined $override && $override eq $field) { 622 if (defined $override && $override eq $field) {
619 623
620 my $param = $r->param("problem.$problemID.$field"); 624 my $param = $r->param("problem.$problemID.$field");
621 $param = $properties{$field}->{default} || "" unless defined $param && $param ne ""; 625 $param = $properties{$field}->{default} || "" unless defined $param && $param ne "";
622 $param = $undoLabels{$field}->{$param} || $param; 626 my $unlabel = $undoLabels{$field}->{$param};
627 $param = $unlabel if defined $unlabel;
623 $changed ||= changed($record->$field, $param); 628 $changed ||= changed($record->$field, $param);
624 $record->$field($param); 629 $record->$field($param);
625 } else { 630 } else {
626 $changed ||= changed($record->$field, undef); 631 $changed ||= changed($record->$field, undef);
627 $record->$field(undef); 632 $record->$field(undef);
632 foreach my $field ( @{ USER_PROBLEM_FIELDS() } ) { 637 foreach my $field ( @{ USER_PROBLEM_FIELDS() } ) {
633 next unless canChange($forUsers, $field); 638 next unless canChange($forUsers, $field);
634 639
635 my $param = $r->param("problem.$problemID.$field"); 640 my $param = $r->param("problem.$problemID.$field");
636 $param = $properties{$field}->{default} || "" unless defined $param && $param ne ""; 641 $param = $properties{$field}->{default} || "" unless defined $param && $param ne "";
637 $param = $undoLabels{$field}->{$param} || $param; 642 my $unlabel = $undoLabels{$field}->{$param};
643 $param = $unlabel if defined $unlabel;
638 $changed ||= changed($record->$field, $param); 644 $changed ||= changed($record->$field, $param);
639 $record->$field($param); 645 $record->$field($param);
640 } 646 }
641 $db->putUserProblem($record) if $changed; 647 $db->putUserProblem($record) if $changed;
642 } 648 }
650 foreach my $field ( @{ PROBLEM_FIELDS() } ) { 656 foreach my $field ( @{ PROBLEM_FIELDS() } ) {
651 next unless canChange($forUsers, $field); 657 next unless canChange($forUsers, $field);
652 658
653 my $param = $r->param("problem.$problemID.$field"); 659 my $param = $r->param("problem.$problemID.$field");
654 $param = $properties{$field}->{default} || "" unless defined $param && $param ne ""; 660 $param = $properties{$field}->{default} || "" unless defined $param && $param ne "";
655 $param = $undoLabels{$field}->{$param} || $param; 661 my $unlabel = $undoLabels{$field}->{$param};
662 $param = $unlabel if defined $unlabel;
656 $changed ||= changed($problemRecord->$field, $param); 663 $changed ||= changed($problemRecord->$field, $param);
657 $problemRecord->$field($param); 664 $problemRecord->$field($param);
658 } 665 }
659 $db->putGlobalProblem($problemRecord) if $changed; 666 $db->putGlobalProblem($problemRecord) if $changed;
660 667
682 foreach my $field ( keys %useful ) { 689 foreach my $field ( keys %useful ) {
683 next unless canChange($forUsers, $field); 690 next unless canChange($forUsers, $field);
684 691
685 my $param = $r->param("problem.$problemID.$field"); 692 my $param = $r->param("problem.$problemID.$field");
686 $param = $properties{$field}->{default} || "" unless defined $param && $param ne ""; 693 $param = $properties{$field}->{default} || "" unless defined $param && $param ne "";
687 $param = $undoLabels{$field}->{$param} || $param; 694 my $unlabel = $undoLabels{$field}->{$param};
695 $param = $unlabel if defined $unlabel;
688 $changed ||= changed($record->$field, $param); 696 $changed ||= changed($record->$field, $param);
689 $record->$field($param); 697 $record->$field($param);
690 } 698 }
691 $db->putUserProblem($record) if $changed; 699 $db->putUserProblem($record) if $changed;
692 } 700 }
707 # Mark the specified problems as correct for all users 715 # Mark the specified problems as correct for all users
708 foreach my $problemID ($r->param('markCorrect')) { 716 foreach my $problemID ($r->param('markCorrect')) {
709 my @userProblemIDs = map { [$_, $setID, $problemID] } ($forUsers ? @editForUser : $db->listProblemUsers($setID, $problemID)); 717 my @userProblemIDs = map { [$_, $setID, $problemID] } ($forUsers ? @editForUser : $db->listProblemUsers($setID, $problemID));
710 my @userProblemRecords = $db->getUserProblems(@userProblemIDs); 718 my @userProblemRecords = $db->getUserProblems(@userProblemIDs);
711 foreach my $record (@userProblemRecords) { 719 foreach my $record (@userProblemRecords) {
712$self->addbadmessage($record->user_id);
713 if (defined $record && ($record->status eq "" || $record->status < 1)) { 720 if (defined $record && ($record->status eq "" || $record->status < 1)) {
714 $record->status(1); 721 $record->status(1);
715 $record->attempted(1); 722 $record->attempted(1);
716 $db->putUserProblem($record); 723 $db->putUserProblem($record);
717 } 724 }

Legend:
Removed from v.3046  
changed lines
  Added in v.3061

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9