diff options
author | Yorhel <git@yorhel.nl> | 2009-05-21 15:16:11 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-05-21 15:19:28 +0200 |
commit | 1ee636e3a68f9d03509563e2a833e11ed332fccb (patch) | |
tree | be76cbec5d0aee2ec86129f81171d9186f61a9a6 /lib/VNDB/Handler/Releases.pm | |
parent | 94330e09f1ad42b1048e1192a1ac6d3580c2a3a7 (diff) |
Implemented the date selector in JavaScript
This way, we can just use our internal database date format for
client-side communication as well. The calculation is now done in
a centralized place in script.js, rather than all over the place in
the Perl code.
This'll also make it possible to make the date selector more
interactive. But that doesn't have a very high priority at the moment,
the good old three-selection-boxes-thing works fine.
Current implementation has only been tested on FF3, though I doubt
other browsers will complain.
Diffstat (limited to 'lib/VNDB/Handler/Releases.pm')
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 32629131..5dec02ec 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -247,8 +247,7 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( - (map { $_ => $r->{$_} } qw|type title original gtin catalog language website notes minage platforms patch|), - released => $r->{released} =~ /^([0-9]{4})([0-9]{2})([0-9]{2})$/ ? [ $1, $2, $3 ] : [ 0, 0, 0 ], + (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released notes minage platforms patch|), media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map "$_->{id},$_->{name}", sort { $a->{id} <=> $b->{id} } @{$r->{producers}}), ); @@ -266,7 +265,7 @@ sub edit { { name => 'catalog', required => 0, default => '', maxlength => 50 }, { name => 'language', enum => [ keys %{$self->{languages}} ] }, { name => 'website', required => 0, default => '', template => 'url' }, - { name => 'released', required => 0, default => 0, multi => 1, template => 'int' }, + { name => 'released', required => 0, default => 0, template => 'int' }, { name => 'minage' , required => 0, default => -1, enum => [ keys %{$self->{age_ratings}} ] }, { name => 'notes', required => 0, default => '', maxlength => 10240 }, { name => 'platforms', required => 0, default => '', multi => 1, enum => [ keys %{$self->{platforms}} ] }, @@ -277,8 +276,6 @@ sub edit { ); if(!$frm->{_err}) { # de-serialize - my $released = !$frm->{released}[0] ? 0 : $frm->{released}[0] == 9999 ? 99999999 : - sprintf '%04d%02d%02d', $frm->{released}[0], $frm->{released}[1]||99, $frm->{released}[2]||99; my $media = [ map [ split / / ], split /,/, $frm->{media} ]; my $producers = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{producers} ]; my $new_vn = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{vn} ]; @@ -286,18 +283,17 @@ sub edit { $frm->{patch} = $frm->{patch} ? 1 : 0; return $self->resRedirect("/r$rid", 'post') - if $rid && $released == $r->{released} && + if $rid && (join(',', sort @{$b4{platforms}}) eq join(',', sort @{$frm->{platforms}})) && (join(',', sort @$producers) eq join(',', sort map $_->{id}, @{$r->{producers}})) && (join(',', sort @$new_vn) eq join(',', sort map $_->{vid}, @$vn)) && - !grep !/^(released|platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; + !grep !/^(platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; my %opts = ( - (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website notes minage platforms editsum patch|), + (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released notes minage platforms editsum patch |), vn => $new_vn, producers => $producers, media => $media, - released => $released, ); $rev = 1; @@ -421,23 +417,16 @@ sub browse { { name => 'pa', required => 0, default => 0, enum => [ 0..2 ] }, { name => 'ma_m', required => 0, default => 0, enum => [ 0, 1 ] }, { name => 'ma_a', required => 0, default => 0, enum => [ keys %{$self->{age_ratings}} ] }, - { name => 'mi', required => 0, default => 0, multi => 1, template => 'int' }, - { name => 'ma', required => 0, default => 9999, multi => 1, template => 'int' }, + { name => 'mi', required => 0, default => 0, template => 'int' }, + { name => 'ma', required => 0, default => 99999999, template => 'int' }, ); return 404 if $f->{_err}; - $f->{mi}[1] ||= 0; $f->{mi}[2] ||= 0; - $f->{ma}[1] ||= 0; $f->{ma}[2] ||= 0; - my $mindate = !$f->{mi}[0] ? 0 : $f->{mi}[0] == 9999 ? 99999999 : - sprintf '%04d%02d%02d', $f->{mi}[0], $f->{mi}[1]||99, $f->{mi}[2]||99; - my $maxdate = !$f->{ma}[0] ? 0 : $f->{ma}[0] == 9999 ? 99999999 : - sprintf '%04d%02d%02d', $f->{ma}[0], $f->{ma}[1]||99, $f->{ma}[2]||99; - my($list, $np) = $self->dbReleaseGet( order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), page => $f->{p}, results => 50, - $mindate > 0 || $maxdate < 99990000 ? (date => [ $mindate, $maxdate ]) : (), + $f->{mi} > 0 || $f->{ma} < 99990000 ? (date => [ $f->{mi}, $f->{ma} ]) : (), $f->{q} ? (search => $f->{q}) : (), $f->{pl}[0] ? (platforms => $f->{pl}) : (), $f->{ln}[0] ? (languages => $f->{ln}) : (), @@ -447,8 +436,7 @@ sub browse { what => 'platforms', ); - my $url = "/r?tp=$f->{tp};pa=$f->{pa};ma_m=$f->{ma_m};ma_a=$f->{ma_a};q=$f->{q}" - .";mi=$f->{mi}[0];mi=$f->{mi}[1];mi=$f->{mi}[2];ma=$f->{ma}[0];ma=$f->{ma}[1];ma=$f->{ma}[2]"; + my $url = "/r?tp=$f->{tp};pa=$f->{pa};ma_m=$f->{ma_m};ma_a=$f->{ma_a};q=$f->{q};mi=$f->{mi};ma=$f->{ma}"; $_&&($url .= ";ln=$_") for @{$f->{ln}}; $_&&($url .= ";pl=$_") for @{$f->{pl}}; |