diff options
Diffstat (limited to 'lib/VNDB/Handler/Releases.pm')
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index ff28c64b..38a1fa02 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -40,6 +40,7 @@ sub page { map sprintf('<a href="/v%d" title="%s">%s</a>', $_->{vid}, $_->{original}||$_->{title}, shorten $_->{title}, 50), @{$_[0]}; } ], [ type => 'Type', serialize => sub { $self->{release_types}[$_[0]] } ], + [ patch => 'Patch', serialize => sub { $_[0] ? 'Patch' : 'Not a patch' } ], [ title => 'Title (romaji)', diff => 1 ], [ original => 'Original title', diff => 1 ], [ gtin => 'JAN/UPC/EAN', serialize => sub { $_[0]||'[none]' } ], @@ -82,13 +83,21 @@ sub page { sub _infotable { my($self, $r) = @_; table; - Tr; - td class => 'key', ' '; - td ' '; - end; my $i = 0; Tr ++$i % 2 ? (class => 'odd') : (); + td class => 'key', 'Title'; + td $r->{title}; + end; + + if($r->{original}) { + Tr ++$i % 2 ? (class => 'odd') : (); + td 'Original title'; + td $r->{original}; + end; + } + + Tr ++$i % 2 ? (class => 'odd') : (); td 'Relation'; td; for (@{$r->{vn}}) { @@ -104,6 +113,7 @@ sub _infotable { my $type = $self->{release_types}[$r->{type}]; cssicon lc(substr $type, 0, 3), $type; txt ' '.$type; + txt ' patch' if $r->{patch}; end; end; @@ -229,17 +239,18 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( - (map { $_ => $r->{$_} } qw|type title original gtin language website notes minage platforms|), + (map { $_ => $r->{$_} } qw|type title original gtin language website notes minage platforms patch|), released => $r->{released} =~ /^([0-9]{4})([0-9]{2})([0-9]{2})$/ ? [ $1, $2, $3 ] : [ 0, 0, 0 ], media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map "$_->{id},$_->{name}", sort { $a->{id} <=> $b->{id} } @{$r->{producers}}), ); - $b4{vn} = join('|||', map "$_->{vid},$_->{title}", sort { $a->{vid} <=> $b->{vid} } @$vn); + $b4{vn} = join('|||', map "$_->{vid},$_->{title}", @$vn); my $frm; if($self->reqMethod eq 'POST') { $frm = $self->formValidate( { name => 'type', enum => [ 0..$#{$self->{release_types}} ] }, + { name => 'patch', required => 0, default => 0 }, { name => 'title', maxlength => 250 }, { name => 'original', required => 0, default => '', maxlength => 250 }, { name => 'gtin', required => 0, default => '0', @@ -263,6 +274,7 @@ sub edit { my $producers = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{producers} ]; my $new_vn = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{vn} ]; $frm->{platforms} = [ grep $_, @{$frm->{platforms}} ]; + $frm->{patch} = $frm->{patch} ? 1 : 0; return $self->resRedirect("/r$rid", 'post') if $rid && $released == $r->{released} && @@ -272,7 +284,7 @@ sub edit { !grep !/^(released|platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; my %opts = ( - (map { $_ => $frm->{$_} } qw| type title original gtin language website notes minage platforms editsum|), + (map { $_ => $frm->{$_} } qw| type title original gtin language website notes minage platforms editsum patch|), vn => $new_vn, producers => $producers, media => $media, @@ -284,7 +296,7 @@ sub edit { ($rid) = $self->dbReleaseAdd(%opts) if !$rid; $self->multiCmd("ircnotify r$rid.$rev"); - _update_vncache($self, @$new_vn, map $_->{vid}, @$vn); + $self->vnCacheUpdate(@$new_vn, map $_->{vid}, @$vn); return $self->resRedirect("/r$rid.$rev", 'post'); } @@ -310,6 +322,7 @@ sub _form { "General info" => [ [ select => short => 'type', name => 'Type', options => [ map [ $_, $self->{release_types}[$_] ], 0..$#{$self->{release_types}} ] ], + [ check => short => 'patch', name => 'This release is a patch to an other release.' ], [ input => short => 'title', name => 'Title (romaji)', width => 300 ], [ input => short => 'original', name => 'Original title', width => 300 ], [ static => content => 'The original title of this release, leave blank if it already is in the Latin alphabet.' ], @@ -400,23 +413,5 @@ sub _form { } -# Recalculates the vn.c_* columns and regenerates the related relation graphs on any change -sub _update_vncache { - my($self, @vns) = @_; - - my $before = $self->dbVNGet(id => \@vns, order => 'v.id', what => 'relations'); - $self->dbVNCache(@vns); - my $after = $self->dbVNGet(id => \@vns, order => 'v.id'); - - my @upd = map { - @{$before->[$_]{relations}} && ( - $before->[$_]{c_released} != $after->[$_]{c_released} - || $before->[$_]{c_languages} ne $after->[$_]{c_languages} - ) ? $before->[$_]{id} : (); - } 0..$#$before; - $self->multiCmd('relgraph '.join(' ', @upd)) if @upd; -} - - 1; |