diff options
Diffstat (limited to 'lib/VNDB/Handler')
-rw-r--r-- | lib/VNDB/Handler/Chars.pm | 54 | ||||
-rw-r--r-- | lib/VNDB/Handler/Misc.pm | 3 |
2 files changed, 56 insertions, 1 deletions
diff --git a/lib/VNDB/Handler/Chars.pm b/lib/VNDB/Handler/Chars.pm new file mode 100644 index 00000000..2ad1daa3 --- /dev/null +++ b/lib/VNDB/Handler/Chars.pm @@ -0,0 +1,54 @@ + +package VNDB::Handler::Chars; + +use strict; +use warnings; +use TUWF ':html'; +use VNDB::Func; + + +TUWF::register( + qr{c([1-9]\d*)(?:\.([1-9]\d*))?} => \&page, +); + + +sub page { + my($self, $id, $rev) = @_; + + my $r = $self->dbCharGet( + id => $id, + what => 'extended'.($rev ? ' changes' : ''), + $rev ? ( rev => $rev ) : () + )->[0]; + return $self->resNotFound if !$r->{id}; + + $self->htmlHeader(title => $r->{name}); + $self->htmlMainTabs(c => $r); + return if $self->htmlHiddenMessage('c', $r); + + if($rev) { + my $prev = $rev && $rev > 1 && $self->dbCharGet(id => $id, rev => $rev-1, what => 'changes extended')->[0]; + $self->htmlRevision('c', $prev, $r, + [ name => diff => 1 ], + [ original => diff => 1 ], + [ alias => diff => qr/[ ,\n\.]/ ], + [ desc => diff => qr/[ ,\n\.]/ ], + ); + } + + div class => 'mainbox'; + $self->htmlItemMessage('c', $r); + h1 $r->{name}; + h2 class => 'alttitle', $r->{original} if $r->{original}; + if($r->{desc}) { + p class => 'description'; + lit bb2html($r->{desc}); + end; + } + end; + $self->htmlFooter; +} + + +1; + diff --git a/lib/VNDB/Handler/Misc.pm b/lib/VNDB/Handler/Misc.pm index 062e3ae4..8e449153 100644 --- a/lib/VNDB/Handler/Misc.pm +++ b/lib/VNDB/Handler/Misc.pm @@ -11,7 +11,7 @@ use POSIX 'strftime'; TUWF::register( qr{}, \&homepage, - qr{(?:([upvr])([1-9]\d*)/)?hist}, \&history, + qr{(?:([upvrc])([1-9]\d*)/)?hist}, \&history, qr{d([1-9]\d*)}, \&docpage, qr{setlang}, \&setlang, qr{nospam}, \&nospam, @@ -206,6 +206,7 @@ sub history { my $obj = $type eq 'u' ? $self->dbUserGet(uid => $id, what => 'hide_list')->[0] : $type eq 'p' ? $self->dbProducerGet(id => $id)->[0] : $type eq 'r' ? $self->dbReleaseGet(id => $id)->[0] : + $type eq 'c' ? $self->dbCharGet(id => $id)->[0] : $type eq 'v' ? $self->dbVNGet(id => $id)->[0] : undef; my $title = mt $type ? ('_hist_title_item', $obj->{title} || $obj->{name} || $obj->{username}) : '_hist_title'; return $self->resNotFound if $type && !$obj->{id}; |