summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2011-02-15 16:13:11 +0100
committerYorhel <git@yorhel.nl>2011-02-15 16:13:11 +0100
commit24680d31a5a3433db5fd0140d9cb80b371659342 (patch)
treeb8beae4bbcfa12c9e695126ebf5845214f1978bf /lib/VNDB/Handler
parenta796407a552fb5422a81a4cf8a5029d1f39bf419 (diff)
chardb: Added char entry tables and updated the basic revision framework
The Perl code and SQL-revisioning code only handles the name, original, alias and desc fields at the moment. There is a basic /i+ and /i+.+ page for testing, which should have all the functionality required for the revisioning framework.
Diffstat (limited to 'lib/VNDB/Handler')
-rw-r--r--lib/VNDB/Handler/Chars.pm54
-rw-r--r--lib/VNDB/Handler/Misc.pm3
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};