summaryrefslogtreecommitdiff
path: root/lib/VNWeb/Releases/Edit.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNWeb/Releases/Edit.pm')
-rw-r--r--lib/VNWeb/Releases/Edit.pm47
1 files changed, 30 insertions, 17 deletions
diff --git a/lib/VNWeb/Releases/Edit.pm b/lib/VNWeb/Releases/Edit.pm
index a315d96b..d7f62cdf 100644
--- a/lib/VNWeb/Releases/Edit.pm
+++ b/lib/VNWeb/Releases/Edit.pm
@@ -22,7 +22,8 @@ my $FORM = {
released => { default => 99999999, min => 1, rdate => 1 },
minage => { int => 1, enum => \%AGE_RATING },
uncensored => { anybool => 1 },
- resolution => { default => 'unknown', enum => \%RESOLUTION },
+ reso_x => { uint => 1, range => [0,32767] },
+ reso_y => { uint => 1, range => [0,32767] },
voiced => { uint => 1, enum => \%VOICED },
ani_story => { uint => 1, enum => \%ANIMATED },
ani_ero => { uint => 1, enum => \%ANIMATED },
@@ -47,6 +48,10 @@ my $FORM = {
engine => {},
count => { uint => 1 },
} },
+ resolutions=> { _when => 'out', aoh => {
+ resolution => {},
+ count => { uint => 1 },
+ } },
authmod => { _when => 'out', anybool => 1 },
editsum => { _when => 'in out', editsum => 1 },
};
@@ -57,23 +62,29 @@ my $FORM_CMP = form_compile cmp => $FORM;
sub to_extlinks { $_[0]{extlinks} = { map +($_, delete $_[0]{$_}), grep /^l_/, keys $_[0]->%* } }
-sub engines {
- tuwf->dbAlli(q{
- SELECT engine, count(*) AS count FROM releases WHERE NOT hidden AND engine <> ''
- GROUP BY engine ORDER BY count(*) DESC, engine
- })
+sub enrich_form {
+ my($e) = @_;
+ $e->{authmod} = auth->permDbmod;
+ $e->{engines} = tuwf->dbAlli(q{
+ SELECT engine, count(*) AS count FROM releases WHERE NOT hidden AND engine <> ''
+ GROUP BY engine ORDER BY count(*) DESC, engine
+ });
+ $e->{resolutions} = [ map +{ resolution => resolution($_), count => $_->{count} }, tuwf->dbAlli(q{
+ SELECT reso_x, reso_y, count(*) AS count FROM releases WHERE NOT hidden AND NOT (reso_x = 0 AND reso_y = 0)
+ GROUP BY reso_x, reso_y ORDER BY count(*) DESC
+ })->@* ];
}
+
TUWF::get qr{/$RE{rrev}/(?<action>edit|copy)} => sub {
my $e = db_entry r => tuwf->capture('id'), tuwf->capture('rev') or return tuwf->resNotFound;
my $copy = tuwf->capture('action') eq 'copy';
return tuwf->resDenied if !can_edit r => $copy ? {} : $e;
$e->{rtype} = delete $e->{type};
- $e->{authmod} = auth->permDbmod;
$e->{editsum} = $copy ? "Copied from r$e->{id}.$e->{chrev}" : $e->{chrev} == $e->{maxrev} ? '' : "Reverted to revision r$e->{id}.$e->{chrev}";
- $e->{engines} = engines;
+ enrich_form $e;
to_extlinks $e;
enrich_merge vid => 'SELECT id AS vid, title FROM vn WHERE id IN', $e->{vn};
@@ -98,6 +109,14 @@ TUWF::get qr{/$RE{vid}/add}, sub {
my $delrel = tuwf->dbAlli('SELECT r.id, r.title, r.original FROM releases r JOIN releases_vn rv ON rv.id = r.id WHERE r.hidden AND rv.vid =', \$v->{id}, 'ORDER BY id');
enrich_flatten languages => id => id => 'SELECT id, lang FROM releases_lang WHERE id IN', $delrel;
+ my $e = {
+ elm_empty($FORM_OUT)->%*,
+ title => $v->{title},
+ original => $v->{original},
+ vn => [{vid => $v->{id}, title => $v->{title}}],
+ };
+ enrich_form $e;
+
framework_ title => "Add release to $v->{title}",
sub {
editmsg_ r => undef, "Add release to $v->{title}";
@@ -118,14 +137,7 @@ TUWF::get qr{/$RE{vid}/add}, sub {
}
} if @$delrel;
- elm_ ReleaseEdit => $FORM_OUT, {
- elm_empty($FORM_OUT)->%*,
- title => $v->{title},
- original => $v->{original},
- engines => engines(),
- authmod => auth->permDbmod(),
- vn => [{vid => $v->{id}, title => $v->{title}}],
- };
+ elm_ ReleaseEdit => $FORM_OUT, $e;
};
};
@@ -141,11 +153,12 @@ elm_api ReleaseEdit => $FORM_OUT, $FORM_IN, sub {
$data->{locked} = $e->{locked}||0;
}
$data->{doujin} = $data->{voiced} = $data->{ani_story} = $data->{ani_ero} = 0 if $data->{patch};
- $data->{resolution} = 'unknown' if $data->{patch};
+ $data->{reso_x} = $data->{reso_y} = 0 if $data->{patch};
$data->{uncensored} = $data->{ani_ero} = 0 if $data->{minage} != 18;
$_->{qty} = $MEDIUM{$_->{medium}}{qty} ? $_->{qty}||1 : 0 for $data->{media}->@*;
$data->{notes} = bb_subst_links $data->{notes};
die "No VNs selected" if !$data->{vn}->@*;
+ die "Invalid resolution: ($data->{reso_x},$data->{reso_y})" if (!$data->{reso_x} && $data->{reso_y} > 1) || ($data->{reso_x} && !$data->{reso_y});
to_extlinks $e;
$e->{rtype} = delete $e->{type};