Skip to content

Commit

Permalink
Merge pull request openwebwork#144 from goehle/datetimefix
Browse files Browse the repository at this point in the history
I took another look at everything and had a friend do some testing.  Everything looks OK so I'll merge.
  • Loading branch information
goehle committed Aug 28, 2013
2 parents c79ff76 + 5a5446d commit 52bffbf
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 36 deletions.
28 changes: 17 additions & 11 deletions lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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

}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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<!-- END add to header ProblemSetDetail-->\n\n";
return "";
}
Expand Down
16 changes: 4 additions & 12 deletions lib/WeBWorK/ContentGenerator/Instructor/ProblemSetList2.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand All @@ -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;
}

Expand Down Expand Up @@ -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};
Expand All @@ -2392,12 +2384,12 @@ sub recordEditHTML {
$fieldValue =~ s/ /&nbsp;/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;
}
Expand Down
36 changes: 23 additions & 13 deletions lib/WeBWorK/Utils/DatePickerScripts.pm
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,25 @@

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 = <<EOF;
addOnLoadEvent(function() {
var name = "$bareName";
var open_rule = \$('#' + name + '\\\\.open_date_id');
var due_rule = \$('#' + name + '\\\\.due_date_id');
var answer_rule = \$('#' + name + '\\\\.answer_date_id');
var dueDateOffset = 7; // 7 days after open date
var answerDateOffset = 5 //5 hours after due date
var answerDateOffset = 5; //5 hours after due date
var update = function() {
var openDate = open_rule.datetimepicker('getDate');
Expand Down Expand Up @@ -60,24 +67,26 @@ var update = function() {
open_rule.datetimepicker({
ampm: true,
timeFormat: 'hh:mmtt',
timeSuffix: ' EDT',
timeSuffix: ' $open_timezone',
separator: ' at ',
constrainInput: false,
onClose: function(dateText, inst) {
update();
},
onSelect: function (selectedDateTime){
/* onSelect: function (selectedDateTime){
var open = \$(this).datetimepicker('getDate');
var open_obj = new Date(open.getTime());
open_rule.addClass("auto-changed");
due_rule.datetimepicker('option', 'minDate', open_obj);
answer_rule.datetimepicker('option', 'minDate', open_obj);
}
}*/
});
due_rule.datetimepicker({
ampm: true,
timeFormat: 'hh:mmtt',
timeSuffix: ' EDT',
timeSuffix: ' $due_timezone',
separator: ' at ',
constrainInput: false,
onClose: function(dateText, inst) {
var open_changed=0;
if (open_rule.val() == "") {
Expand All @@ -86,18 +95,19 @@ due_rule.datetimepicker({
open_rule.datetimepicker('setDate',openDate);
}
update();
},
onSelect: function (selectedDateTime){
}
/* onSelect: function (selectedDateTime){
var due = \$(this).datetimepicker('getDate');
answer_rule.datetimepicker('option', 'minDate', new Date(due.getTime()));
}
}*/
});
answer_rule.datetimepicker({
ampm: true,
timeFormat: 'hh:mmtt',
timeSuffix: ' EDT',
timeSuffix: ' $answer_timezone',
separator: ' at ',
constrainInput: false,
onClose: function(dateText, inst) {
var open_changed=0;
if (open_rule.val() == "") {
Expand All @@ -114,9 +124,9 @@ answer_rule.datetimepicker({
});
EOF
$out;
return $out;
}



1;
1;

0 comments on commit 52bffbf

Please sign in to comment.