diff --git a/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm b/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm index 9c330b8d54..ac5006f618 100644 --- a/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm +++ b/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm @@ -950,10 +950,6 @@ sub initialize { $self->addbadmessage($r->maketext("Error: answer date cannot be more than 10 years from now in set [_1]", $setID)); $error = $r->param('submit_changes'); } - # grab short name for timezone - # used to set proper timezone name in datepicker - - $self->{timezone_shortname} = substr($due_date, -3); #this is fragile } @@ -1498,9 +1494,6 @@ sub initialize { } } - - - # This erases any sticky fields if the user saves changes, resets the form, or reorders problems # It may not be obvious why this is necessary when saving changes or reordering problems # but when the problems are reorder the param problem.1.source_file needs to be the source @@ -1835,6 +1828,23 @@ sub body { print CGI::end_table(); + #datepicker scripts. + # we try to provide the date picker scripts with the global set + # if we aren't looking at a specific students set and the merged + # one otherwise. + my $tempSet; + if ($forUsers) { + $tempSet = $db->getMergedSet($userToShow, $setID); + } else { + $tempSet = $setRecord; + } + + print CGI::start_script({-type=>"text/javascript"}),"\n"; + print q!$(".ui-datepicker").draggable();!,"\n"; + print WeBWorK::Utils::DatePickerScripts::date_scripts($ce, $tempSet),"\n"; + print CGI::end_script(); + + # spacing print CGI::p(); @@ -2210,10 +2220,6 @@ sub output_JS { print CGI::start_script({type=>"text/javascript", src=>"$site_url/js/jquery-ui-1.8.18.custom.min.js"}), CGI::end_script(),"\n"; print CGI::start_script({type=>"text/javascript", src=>"$site_url/js/jquery-ui-timepicker-addon.js"}), CGI::end_script(),"\n"; - print CGI::start_script({-type=>"text/javascript"}),"\n"; - print q!$(".ui-datepicker").draggable();!,"\n"; - print WeBWorK::Utils::DatePickerScripts::date_scripts("set\\\\.$setID",$timezone),"\n"; - print CGI::end_script(); print "\n\n\n\n"; return ""; } diff --git a/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetList2.pm b/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetList2.pm index bad2d04631..443c7abab2 100644 --- a/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetList2.pm +++ b/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetList2.pm @@ -2159,7 +2159,7 @@ EOF ################################################################################ sub fieldEditHTML { - my ($self, $fieldName, $value, $properties, $dateTimeScripts) = @_; + my ($self, $fieldName, $value, $properties) = @_; my $size = $properties->{size}; my $type = $properties->{type}; my $access = $properties->{access}; @@ -2182,23 +2182,19 @@ sub fieldEditHTML { my @temp = split(/.open_date/, $fieldName); $bareName = $temp[0]; $bareName =~ s/\./\\\\\./g; - #$content = WeBWorK::Utils::DatePickerScripts::open_date_script($bareName, $timezone); } elsif(index($fieldName, ".due_date") != -1){ my @temp = split(/.due_date/, $fieldName); $bareName = $temp[0]; $bareName =~ s/\./\\\\\./g; - #$content = WeBWorK::Utils::DatePickerScripts::due_date_script($bareName, $timezone); } elsif(index($fieldName, ".answer_date") != -1){ my @temp = split(/.answer_date/, $fieldName); $bareName = $temp[0]; $bareName =~ s/\./\\\\\./g; - #$content = WeBWorK::Utils::DatePickerScripts::answer_date_script($bareName, $timezone); } - #push @$dateTimeScripts, $content; - push @$dateTimeScripts, WeBWorK::Utils::DatePickerScripts::date_scripts($bareName,$timezone); + return $out; } @@ -2377,10 +2373,6 @@ sub recordEditHTML { # make a hash out of this so we can test membership easily my %nonkeyfields; @nonkeyfields{$Set->NONKEYFIELDS} = (); - my @chooseDateTimeScripts = (); - - #push @chooseDateTimeScripts, "addOnLoadEvent(function() {"; - # Set Fields foreach my $field (@fieldsToShow) { next unless exists $nonkeyfields{$field}; @@ -2392,12 +2384,12 @@ sub recordEditHTML { $fieldValue =~ s/ / /g unless $editMode; $fieldValue = ($fieldValue) ? $r->maketext("Yes") : $r->maketext("No") if $field =~ /visible/ and not $editMode; $fieldValue = ($fieldValue) ? $r->maketext("Yes") : $r->maketext("No") if $field =~ /enable_reduced_scoring/ and not $editMode; - push @tableCells, CGI::font({class=>$visibleClass}, $self->fieldEditHTML($fieldName, $fieldValue, \%properties, \@chooseDateTimeScripts)); + push @tableCells, CGI::font({class=>$visibleClass}, $self->fieldEditHTML($fieldName, $fieldValue, \%properties)); #$fakeRecord{$field} = CGI::font({class=>$visibleClass}, $self->fieldEditHTML($fieldName, $fieldValue, \%properties)); } my $out = CGI::Tr({}, CGI::td({}, \@tableCells)); - my $scripts = CGI::start_script({-type=>"text/javascript"}).(join("", @chooseDateTimeScripts)).CGI::end_script(); + my $scripts = CGI::start_script({-type=>"text/javascript"}).WeBWorK::Utils::DatePickerScripts::date_scripts($ce, $Set).CGI::end_script(); return $out.$scripts; } diff --git a/lib/WeBWorK/Utils/DatePickerScripts.pm b/lib/WeBWorK/Utils/DatePickerScripts.pm index bf22fc609a..ee79255555 100644 --- a/lib/WeBWorK/Utils/DatePickerScripts.pm +++ b/lib/WeBWorK/Utils/DatePickerScripts.pm @@ -16,10 +16,17 @@ package WeBWorK::Utils::DatePickerScripts; use base qw(Exporter); +use WeBWorK::Utils qw(formatDateTime); sub date_scripts { - my $bareName = shift; - my $timezone = shift; + my $ce = shift; + my $set = shift; + my $display_tz ||= $ce->{siteDefaults}{timezone}; + my $bareName = 'set\\\\.'.$set->set_id; + my $open_timezone = substr(formatDateTime($set->open_date, $display_tz), -3); + my $due_timezone = substr(formatDateTime($set->due_date, $display_tz), -3); + my $answer_timezone = substr(formatDateTime($set->answer_date, $display_tz), -3); + my $out = <