diff options
author | Yorhel <git@yorhel.nl> | 2011-12-31 10:16:49 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2011-12-31 10:16:49 +0100 |
commit | fa496b11536a9ed7306078f6ff3aa021a91ddf80 (patch) | |
tree | da4cccc8adeb2cdd6c797079916e8beff74dd716 /lib | |
parent | c673a8e06abae7e12724b2815c03431190ffe3f8 (diff) | |
parent | 71b90ee04391dddc83e0b81122abab6468777833 (diff) |
Merge branch 'beta'2.22
Conflicts:
data/lang.txt
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Multi/Feed.pm | 6 | ||||
-rw-r--r-- | lib/Multi/Maintenance.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/DB/Chars.pm | 22 | ||||
-rw-r--r-- | lib/VNDB/DB/VN.pm | 6 | ||||
-rw-r--r-- | lib/VNDB/Handler/Chars.pm | 20 | ||||
-rw-r--r-- | lib/VNDB/Handler/Producers.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Handler/Tags.pm | 6 | ||||
-rw-r--r-- | lib/VNDB/Handler/Traits.pm | 15 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNEdit.pm | 78 | ||||
-rw-r--r-- | lib/VNDB/Util/CommonHTML.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Util/FormHTML.pm | 17 | ||||
-rw-r--r-- | lib/VNDB/Util/LayoutHTML.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Util/Misc.pm | 5 |
14 files changed, 142 insertions, 47 deletions
diff --git a/lib/Multi/Feed.pm b/lib/Multi/Feed.pm index 1a955e05..ea9cbcac 100644 --- a/lib/Multi/Feed.pm +++ b/lib/Multi/Feed.pm @@ -112,7 +112,7 @@ sub write_atom { # num, res, feed, time $x->tag(updated => datetime($updated)); $x->tag(id => $VNDB::S{url}.$VNDB::S{atom_feeds}{$feed}[2]); $x->tag(link => rel => 'self', type => 'application/atom+xml', href => "$VNDB::S{url}/feeds/$feed.atom", undef); - $x->tag(link => rel => 'alternate', type => 'text/html', href => $VNDB::S{atom_feeds}{$feed}[2], undef); + $x->tag(link => rel => 'alternate', type => 'text/html', href => $VNDB::S{url}.$VNDB::S{atom_feeds}{$feed}[2], undef); for(@$r) { $x->tag('entry'); @@ -123,10 +123,10 @@ sub write_atom { # num, res, feed, time if($_->{username}) { $x->tag('author'); $x->tag(name => $_->{username}); - $x->tag(uri => '/u'.$_->{uid}) if $_->{uid}; + $x->tag(uri => $VNDB::S{url}.'/u'.$_->{uid}) if $_->{uid}; $x->end; } - $x->tag(link => rel => 'alternate', type => 'text/html', href => $_->{id}, undef); + $x->tag(link => rel => 'alternate', type => 'text/html', href => $VNDB::S{url}.$_->{id}, undef); $x->tag('summary', type => 'html', bb2html $_->{summary}) if $_->{summary}; $x->end('entry'); } diff --git a/lib/Multi/Maintenance.pm b/lib/Multi/Maintenance.pm index a754e618..e7c66a04 100644 --- a/lib/Multi/Maintenance.pm +++ b/lib/Multi/Maintenance.pm @@ -272,7 +272,7 @@ sub logrotate { sub vnsearch_check { $_[KERNEL]->call(pg => query => - 'SELECT id FROM vn WHERE NOT hidden AND c_search IS NULL LIMIT 1', + 'SELECT id FROM vn WHERE c_search IS NULL LIMIT 1', undef, 'vnsearch_gettitles'); } @@ -303,7 +303,7 @@ sub vnsearch_update { # num, res, vid, time my @t = map +($_->{title}, $_->{original}), @$res; # alias fields are a bit special for (@$res) { - push @t, split /,/, $_->{alias} if $_->{alias}; + push @t, split /[\n,]/, $_->{alias} if $_->{alias}; } my $t = normalize_titles(@t); $_[KERNEL]->call(core => log => 'Updated search cache for v%d', $id); diff --git a/lib/VNDB/DB/Chars.pm b/lib/VNDB/DB/Chars.pm index be620378..86b3a859 100644 --- a/lib/VNDB/DB/Chars.pm +++ b/lib/VNDB/DB/Chars.pm @@ -8,7 +8,8 @@ use Exporter 'import'; our @EXPORT = qw|dbCharGet dbCharRevisionInsert dbCharImageId|; -# options: id rev instance traitspoil trait_inc trait_exc char what results page +# options: id rev instance tagspoil trait_inc trait_exc char what results page gender bloodt +# bust_min bust_max waist_min waist_max hip_min hip_max height_min height_max weight_min weight_max role # what: extended traits vns changes sub dbCharGet { my $self = shift; @@ -16,7 +17,7 @@ sub dbCharGet { page => 1, results => 10, what => '', - traitspoil => 0, + tagspoil => 0, @_ ); @@ -29,15 +30,30 @@ sub dbCharGet { $o{notid} ? ( 'c.id <> ?' => $o{notid} ) : (), $o{instance} ? ( 'cr.main = ?' => $o{instance} ) : (), $o{vid} ? ( 'cr.id IN(SELECT cid FROM chars_vns WHERE vid = ?)' => $o{vid} ) : (), + defined $o{gender} ? ( 'cr.gender IN(!l)' => [ ref $o{gender} ? $o{gender} : [$o{gender}] ]) : (), + defined $o{bloodt} ? ( 'cr.bloodt IN(!l)' => [ ref $o{bloodt} ? $o{bloodt} : [$o{bloodt}] ]) : (), + defined $o{bust_min} ? ( 'cr.s_bust >= ?' => $o{bust_min} ) : (), + defined $o{bust_max} ? ( 'cr.s_bust <= ? AND cr.s_bust > 0' => $o{bust_max} ) : (), + defined $o{waist_min} ? ( 'cr.s_waist >= ?' => $o{waist_min} ) : (), + defined $o{waist_max} ? ( 'cr.s_waist <= ? AND cr.s_waist > 0' => $o{waist_max} ) : (), + defined $o{hip_min} ? ( 'cr.s_hip >= ?' => $o{hip_min} ) : (), + defined $o{hip_max} ? ( 'cr.s_hip <= ? AND cr.s_hip > 0' => $o{hip_max} ) : (), + defined $o{height_min} ? ( 'cr.height >= ?' => $o{height_min} ) : (), + defined $o{height_max} ? ( 'cr.height <= ? AND cr.height > 0' => $o{height_max} ) : (), + defined $o{weight_min} ? ( 'cr.weight >= ?' => $o{weight_min} ) : (), + defined $o{weight_max} ? ( 'cr.weight <= ? AND cr.weight > 0' => $o{weight_max} ) : (), $o{search} ? ( '(cr.name ILIKE ? OR cr.original ILIKE ? OR cr.alias ILIKE ?)', [ map '%%'.$o{search}.'%%', 1..3 ] ) : (), $o{char} ? ( 'LOWER(SUBSTR(cr.name, 1, 1)) = ?' => $o{char} ) : (), defined $o{char} && !$o{char} ? ( '(ASCII(cr.name) < 97 OR ASCII(cr.name) > 122) AND (ASCII(cr.name) < 65 OR ASCII(cr.name) > 90)' => 1 ) : (), + $o{role} ? ( + 'EXISTS(SELECT 1 FROM chars_vns cvi WHERE cvi.cid = cr.id AND cvi.role IN(!l))', + [ ref $o{role} ? $o{role} : [$o{role}] ] ) : (), $o{trait_inc} ? ( 'c.id IN(SELECT cid FROM traits_chars WHERE tid IN(!l) AND spoil <= ? GROUP BY cid HAVING COUNT(tid) = ?)', - [ ref $o{trait_inc} ? $o{trait_inc} : [$o{trait_inc}], $o{traitspoil}, ref $o{trait_inc} ? $#{$o{trait_inc}}+1 : 1 ]) : (), + [ ref $o{trait_inc} ? $o{trait_inc} : [$o{trait_inc}], $o{tagspoil}, ref $o{trait_inc} ? $#{$o{trait_inc}}+1 : 1 ]) : (), $o{trait_exc} ? ( 'c.id NOT IN(SELECT cid FROM traits_chars WHERE tid IN(!l))' => [ ref $o{trait_exc} ? $o{trait_exc} : [$o{trait_exc}] ] ) : (), ); diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm index 474066ce..473fa92c 100644 --- a/lib/VNDB/DB/VN.pm +++ b/lib/VNDB/DB/VN.pm @@ -11,7 +11,7 @@ our @EXPORT = qw|dbVNGet dbVNRevisionInsert dbVNImageId dbScreenshotAdd dbScreen # Options: id, rev, char, search, length, lang, olang, plat, tag_inc, tag_exc, tagspoil, -# hasani, hasshot, ul_notblack, ul_onwish, results, page, what, sort, reverse +# hasani, hasshot, ul_notblack, ul_onwish, results, page, what, sort, reverse, inc_hidden # What: extended anime relations screenshots relgraph rating ranking changes # Sort: id rel pop rating title tagscore rand sub dbVNGet { @@ -66,7 +66,7 @@ sub dbVNGet { $uid && defined $o{ul_onlist} ? ( 'v.id !s IN(SELECT vid FROM vnlists WHERE uid = ?)' => [ $o{ul_onlist} ? '' : 'NOT', $uid ] ) : (), # don't fetch hidden items unless we ask for an ID - !$o{id} && !$o{rev} ? ( + !$o{id} && !$o{rev} && !$o{inc_hidden} ? ( 'v.hidden = FALSE' => 0 ) : (), # optimize fetching random entries (only when there are no other filters present, otherwise this won't work well) $o{sort} eq 'rand' && $o{results} <= 10 && !grep(!/^(?:results|page|what|sort|tagspoil)$/, keys %o) ? ( @@ -107,7 +107,7 @@ sub dbVNGet { my $order = sprintf { id => 'id %s', - rel => 'c_released %s', + rel => 'c_released %s, title ASC', pop => 'c_popularity %s NULLS LAST', rating => 'c_rating %s NULLS LAST', title => 'title %s', diff --git a/lib/VNDB/Handler/Chars.pm b/lib/VNDB/Handler/Chars.pm index 9c8a1b5e..c707a453 100644 --- a/lib/VNDB/Handler/Chars.pm +++ b/lib/VNDB/Handler/Chars.pm @@ -451,33 +451,39 @@ sub list { my($self, $fch) = @_; my $f = $self->formValidate( - { get => 'p', required => 0, default => 1, template => 'int' }, - { get => 'q', required => 0, default => '' }, + { get => 'p', required => 0, default => 1, template => 'int' }, + { get => 'q', required => 0, default => '' }, + { get => 'fil', required => 0, default => '' }, ); return $self->resNotFound if $f->{_err}; - my($list, $np) = $self->dbCharGet( + my($list, $np) = $self->filFetchDB(char => $f->{fil}, {}, { $fch ne 'all' ? ( char => $fch ) : (), $f->{q} ? ( search => $f->{q} ) : (), results => 50, page => $f->{p}, what => 'vns', - ); + }); $self->htmlHeader(title => mt '_charb_title'); my $quri = uri_escape($f->{q}); + form action => '/c/all', 'accept-charset' => 'UTF-8', method => 'get'; div class => 'mainbox'; h1 mt '_charb_title'; - form action => '/c/all', 'accept-charset' => 'UTF-8', method => 'get'; - $self->htmlSearchBox('c', $f->{q}); - end; + $self->htmlSearchBox('c', $f->{q}); p class => 'browseopts'; for ('all', 'a'..'z', 0) { a href => "/c/$_?q=$quri", $_ eq $fch ? (class => 'optselected') : (), $_ eq 'all' ? mt('_char_all') : $_ ? uc $_ : '#'; } end; + + a id => 'filselect', href => '#c'; + lit '<i>▸</i> '.mt('_js_fil_filters').'<i></i>'; + end; + input type => 'hidden', class => 'hidden', name => 'fil', id => 'fil', value => $f->{fil}; end; + end 'form'; if(!@$list) { div class => 'mainbox'; diff --git a/lib/VNDB/Handler/Producers.pm b/lib/VNDB/Handler/Producers.pm index 52db6edf..1369c1e2 100644 --- a/lib/VNDB/Handler/Producers.pm +++ b/lib/VNDB/Handler/Producers.pm @@ -304,7 +304,7 @@ sub edit { end; end; td class => 'tc_add'; - a href => '#', mt '_pedit_rel_addbut'; + a href => '#', mt '_js_add'; end; end; end 'table'; diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index f0fdac3f..0291ba0a 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -456,7 +456,7 @@ sub _form { option value => 2, selected => 'selected', mt '_redit_form_prod_pub'; option value => 3, mt '_redit_form_prod_both'; end; end; - td class => 'tc_add'; a id => 'producer_add', href => '#', mt '_redit_form_prod_addbut'; end; + td class => 'tc_add'; a id => 'producer_add', href => '#', mt '_js_add'; end; end; end 'table'; }], ], @@ -469,7 +469,7 @@ sub _form { h2 mt('_redit_form_vn_add'); div; input id => 'vn_input', type => 'text', class => 'text'; - a href => '#', id => 'vn_add', mt '_redit_form_vn_addbut'; + a href => '#', id => 'vn_add', mt '_js_add'; end; }], ], diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 3d698fc3..39388a30 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -390,7 +390,7 @@ sub taglinks { if($f->{u}) { my $o = $self->dbUserGet(uid => $f->{u})->[0]; li; - txt '['; a href => $url->(u=>0), mt '_taglink_fil_remove'; txt '] '; + txt '['; a href => $url->(u=>0), mt '_js_remove'; txt '] '; txt mt '_taglink_fil_user'; txt ' '; a href => "/u$o->{id}", $o->{username}; end; @@ -398,7 +398,7 @@ sub taglinks { if($f->{t}) { my $o = $self->dbTagGet(id => $f->{t})->[0]; li; - txt '['; a href => $url->(t=>0), mt '_taglink_fil_remove'; txt '] '; + txt '['; a href => $url->(t=>0), mt '_js_remove'; txt '] '; txt mt '_taglink_fil_tag'; txt ' '; a href => "/g$o->{id}", $o->{name}; end; @@ -406,7 +406,7 @@ sub taglinks { if($f->{v}) { my $o = $self->dbVNGet(id => $f->{v})->[0]; li; - txt '['; a href => $url->(v=>0), mt '_taglink_fil_remove'; txt '] '; + txt '['; a href => $url->(v=>0), mt '_js_remove'; txt '] '; txt mt '_taglink_fil_vn'; txt ' '; a href => "/v$o->{id}", $o->{title}; end; diff --git a/lib/VNDB/Handler/Traits.pm b/lib/VNDB/Handler/Traits.pm index f3abdfeb..0a21011c 100644 --- a/lib/VNDB/Handler/Traits.pm +++ b/lib/VNDB/Handler/Traits.pm @@ -27,6 +27,7 @@ sub traitpage { my $f = $self->formValidate( { get => 'p', required => 0, default => 1, template => 'int' }, { get => 'm', required => 0, default => undef, enum => [qw|0 1 2|] }, + { get => 'fil', required => 0, default => '' }, ); return $self->resNotFound if $f->{_err}; my $tagspoil = $self->reqCookie('tagspoil')||''; @@ -83,14 +84,15 @@ sub traitpage { childtags($self, mt('_traitp_childs'), 'i', $t) if @{$t->{childs}}; if(!$t->{meta} && $t->{state} == 2) { - my($chars, $np) = $self->dbCharGet( + my($chars, $np) = $self->filFetchDB(char => $f->{fil}, {}, { trait_inc => $trait, - traitspoil => $f->{m}, + tagspoil => $f->{m}, results => 50, page => $f->{p}, what => 'vns', - ); + }); + form action => "/i$t->{id}", 'accept-charset' => 'UTF-8', method => 'get'; div class => 'mainbox'; h1 mt '_traitp_charlist'; @@ -101,12 +103,17 @@ sub traitpage { a href => "/i$trait?m=2", $f->{m} == 2 ? (class => 'optselected') : (), onclick => "setCookie('tagspoil', 2);return true;", mt '_tagp_spoil2'; end; + a id => 'filselect', href => '#c'; + lit '<i>▸</i> '.mt('_js_fil_filters').'<i></i>'; + end; + input type => 'hidden', class => 'hidden', name => 'fil', id => 'fil', value => $f->{fil}; + if(!@$chars) { p; br; br; txt mt '_traitp_nochars'; end; } p; br; txt mt '_traitp_cached'; end; end 'div'; - + end 'form'; @$chars && $self->charBrowseTable($chars, $np, $f, "/i$trait?m=$f->{m}"); } diff --git a/lib/VNDB/Handler/VNEdit.pm b/lib/VNDB/Handler/VNEdit.pm index 0309a01c..56031472 100644 --- a/lib/VNDB/Handler/VNEdit.pm +++ b/lib/VNDB/Handler/VNEdit.pm @@ -10,13 +10,71 @@ use VNDB::Func; TUWF::register( qr{v(?:([1-9]\d*)(?:\.([1-9]\d*))?/edit|/new)} => \&edit, + qr{v/add} => \&addform, qr{xml/vn\.xml} => \&vnxml, qr{xml/screenshots\.xml} => \&scrxml, ); +sub addform { + my $self = shift; + return $self->htmlDenied if !$self->authCan('edit'); + + my $frm; + my $l = []; + if($self->reqMethod eq 'POST') { + return if !$self->authCheckCode; + $frm = $self->formValidate( + { post => 'title', maxlength => 250 }, + { post => 'original', required => 0, maxlength => 250, default => '' }, + { post => 'alias', required => 0, maxlength => 500, default => '' }, + { post => 'continue_ign',required => 0 }, + ); + + # look for duplicates + if(!$frm->{_err} && !$frm->{continue_ign}) { + $l = $self->dbVNGet(search => $frm->{title}, what => 'changes', results => 50, inc_hidden => 1); + push @$l, @{$self->dbVNGet(search => $frm->{original}, what => 'changes', results => 50, inc_hidden => 1)} if $frm->{original}; + $_ && push @$l, $self->dbVNGet(search => $_, what => 'changes', results => 50, inc_hidden => 1) for(split /\n/, $frm->{alias}); + my %ids = map +($_->{id}, $_), @$l; + $l = [ map $ids{$_}, sort { $ids{$a}{title} cmp $ids{$b}{title} } keys %ids ]; + } + + return edit($self, undef, undef, 1) if !@$l && !$frm->{_err}; + } + + $self->htmlHeader(title => mt('_vnedit_title_add'), noindex => 1); + if(@$l) { + div class => 'mainbox'; + h1 mt '_vnedit_dup_title'; + div class => 'warning'; + p; lit mt '_vnedit_dup_msg'; end; + end; + ul; + for(@$l) { + li; + a href => "/v$_->{id}", title => $_->{original}||$_->{title}, "v$_->{id}: ".shorten($_->{title}, 50); + b class => 'standout', ' deleted' if $_->{hidden}; + end; + } + end; + end 'div'; + } + + $self->htmlForm({ frm => $frm, action => '/v/add', continue => @$l ? 2 : 1 }, + vn_add => [ mt('_vnedit_title_add'), + [ input => short => 'title', name => mt '_vnedit_frm_title' ], + [ input => short => 'original', name => mt '_vnedit_original' ], + [ static => content => mt '_vnedit_original_msg' ], + [ textarea => short => 'alias', name => mt('_vnedit_alias'), rows => 4 ], + [ static => content => mt '_vnedit_alias_msg' ], + ]); + $self->htmlFooter; +} + + sub edit { - my($self, $vid, $rev) = @_; + my($self, $vid, $rev, $nosubmit) = @_; my $v = $vid && $self->dbVNGet(id => $vid, what => 'extended screenshots relations anime changes', $rev ? (rev => $rev) : ())->[0]; return $self->resNotFound if $vid && !$v->{id}; @@ -36,7 +94,7 @@ sub edit { my $frm; if($self->reqMethod eq 'POST') { - return if !$self->authCheckCode; + return if !$nosubmit && !$self->authCheckCode; $frm = $self->formValidate( { post => 'title', maxlength => 250 }, { post => 'original', required => 0, maxlength => 250, default => '' }, @@ -53,16 +111,16 @@ sub edit { { post => 'vnrelations', required => 0, default => '', maxlength => 5000 }, { post => 'screenshots', required => 0, default => '', maxlength => 1000 }, { post => 'editsum', required => 0, maxlength => 5000 }, - { post => 'ihid', required => 0 }, - { post => 'ilock', required => 0 }, + { post => 'ihid', required => 0 }, + { post => 'ilock', required => 0 }, ); - push @{$frm->{_err}}, 'badeditsum' if !$frm->{editsum} || lc($frm->{editsum}) eq lc($frm->{desc}); + push @{$frm->{_err}}, 'badeditsum' if !$nosubmit && (!$frm->{editsum} || lc($frm->{editsum}) eq lc($frm->{desc})); # handle image upload - $frm->{image} = _uploadimage($self, $frm); + $frm->{image} = _uploadimage($self, $frm) if !$nosubmit; - if(!$frm->{_err}) { + if(!$nosubmit && !$frm->{_err}) { # parse and re-sort fields that have multiple representations of the same information my $anime = { map +($_=>1), grep /^[0-9]+$/, split /[ ,]+/, $frm->{anime} }; my $relations = [ map { /^([a-z]+),([0-9]+),([01]),(.+)$/ && (!$vid || $2 != $vid) ? [ $1, $2, $3, $4 ] : () } split /\|\|\|/, $frm->{vnrelations} ]; @@ -169,8 +227,8 @@ sub _form { vn_img => [ mt('_vnedit_image'), [ static => nolabel => 1, content => sub { div class => 'img'; p mt '_vnedit_image_none' if !$frm->{image}; - p mt '_vnedit_image_processing' if $frm->{image} < 0; - img src => imgurl(cv => $frm->{image}) if $frm->{image} > 0; + p mt '_vnedit_image_processing' if $frm->{image} && $frm->{image} < 0; + img src => imgurl(cv => $frm->{image}) if $frm->{image} && $frm->{image} > 0; end; div; @@ -220,7 +278,7 @@ sub _form { end; td class => 'tc_title', $v ? $v->{title} : ''; td class => 'tc_add'; - a href => '#', mt '_vnedit_rel_addbut'; + a href => '#', mt '_js_add'; end; end; end 'table'; diff --git a/lib/VNDB/Util/CommonHTML.pm b/lib/VNDB/Util/CommonHTML.pm index 60e7b237..73e2c5ba 100644 --- a/lib/VNDB/Util/CommonHTML.pm +++ b/lib/VNDB/Util/CommonHTML.pm @@ -84,7 +84,7 @@ sub htmlMainTabs { if($type eq 'u' && $self->authCan('usermod')) { li $sel eq 'del' ? (class => 'tabselected') : (); - a href => "/$id/del", mt '_mtabs_del'; + a href => "/$id/del", mt '_js_remove'; end; } diff --git a/lib/VNDB/Util/FormHTML.pm b/lib/VNDB/Util/FormHTML.pm index 21eeb980..13ec56f9 100644 --- a/lib/VNDB/Util/FormHTML.pm +++ b/lib/VNDB/Util/FormHTML.pm @@ -165,10 +165,12 @@ sub htmlFormPart { # Generates a form, first argument is a hashref with global options, keys: -# frm => the $frm as returned by formValidate, -# action => The location the form should POST to (also used as form id) -# upload => 1/0, adds an enctype. -# editsum => 1/0, adds an edit summary field before the submit button +# frm => the $frm as returned by formValidate, +# action => The location the form should POST to (also used as form id) +# upload => 1/0, adds an enctype. +# nosubmit => 1/0, hides the submit button +# editsum => 1/0, adds an edit summary field before the submit button +# continue => 2/1/0, replace submit button with continue buttons # The other arguments are a list of subforms in the form # of (subform-name => [form parts]). Each subform is shown as a # (JavaScript-powered) tab, and has it's own 'mainbox'. This function @@ -235,7 +237,12 @@ sub htmlForm { textarea name => 'editsum', id => 'editsum', rows => 4, cols => 50, $options->{frm}{editsum}||''; br; } - input type => 'submit', value => mt('_form_submit'), class => 'submit'; + if(!$options->{continue}) { + input type => 'submit', value => mt('_form_submit'), class => 'submit'; + } else { + input type => 'submit', value => mt('_form_continue'), class => 'submit'; + input type => 'submit', name => 'continue_ign', value => mt('_form_continue_ign'), class => 'submit', style => 'width: auto' if $options->{continue} == 2; + } end; end 'div'; } diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index 752f6728..7507d682 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -100,7 +100,7 @@ sub _menu { a href => '/g/links?u='.$self->authInfo->{id}, mt '_menu_mytags'; br; br; if($self->authCan('edit')) { - a href => '/v/new', mt '_menu_addvn'; br; + a href => '/v/add', mt '_menu_addvn'; br; a href => '/p/new', mt '_menu_addproducer'; br; } if($self->authCan('charedit')) { diff --git a/lib/VNDB/Util/Misc.pm b/lib/VNDB/Util/Misc.pm index 5406fe06..04114483 100644 --- a/lib/VNDB/Util/Misc.pm +++ b/lib/VNDB/Util/Misc.pm @@ -13,11 +13,12 @@ our @EXPORT = qw|filFetchDB ieCheck|; my %filfields = ( vn => [qw|length hasani tag_inc tag_exc taginc tagexc tagspoil lang olang plat ul_notblack ul_onwish ul_voted ul_onlist|], release => [qw|type patch freeware doujin date_before date_after released minage lang olang resolution plat med voiced ani_story ani_ero|], + char => [qw|gender bloodt bust_min bust_max waist_min waist_max hip_min hip_max height_min height_max weight_min weight_max trait_inc trait_exc tagspoil role|], ); # Arguments: -# type ('vn' or 'release'), +# type ('vn', 'release' or 'char'), # filter overwrite (string or undef), # when defined, these filters will be used instead of the preferences, # must point to a variable, will be modified in-place with the actually used filters @@ -30,7 +31,7 @@ sub filFetchDB { my($self, $type, $overwrite, $pre, $post) = @_; $pre = {} if !$pre; $post = {} if !$post; - my $dbfunc = $self->can($type eq 'vn' ? 'dbVNGet' : 'dbReleaseGet'); + my $dbfunc = $self->can($type eq 'vn' ? 'dbVNGet' : $type eq 'release' ? 'dbReleaseGet' : 'dbCharGet'); my $prefname = 'filter_'.$type; my $pref = $self->authPref($prefname); |