diff options
author | Yorhel <git@yorhel.nl> | 2011-03-19 16:27:18 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2011-03-19 16:27:18 +0100 |
commit | 4bd3c0ed6a2b5cd7803a27af2c84d2b7354fca32 (patch) | |
tree | f942f1f2950670208b67972c7bccb102e088c445 | |
parent | efca07848644ef44e44c1b7956677422fd99aafe (diff) |
chardb: Implemented char entry copying
-rw-r--r-- | data/lang.txt | 35 | ||||
-rw-r--r-- | lib/VNDB/Handler/Chars.pm | 32 | ||||
-rw-r--r-- | lib/VNDB/Util/CommonHTML.pm | 4 |
3 files changed, 43 insertions, 28 deletions
diff --git a/data/lang.txt b/data/lang.txt index bc94f687..17d926d4 100644 --- a/data/lang.txt +++ b/data/lang.txt @@ -5099,6 +5099,13 @@ cs : Editovat [_1] hu : [_1] szerkesztése nl : Wijzig [_1] +:_chare_title_copy +en : Copy [_1] +ru : Копирование [_1] +cs : Kopírovat [_1] +hu : [_1] másolása +nl : Kopieer [_1] + :_chare_title_add en : Add new character ru*: @@ -8360,23 +8367,23 @@ nl : Dit item is uit de database verwijderd. Als je het hier niet mee eens bent # The warning/notice messages on edit pages :_editmsg_copy_title -en : You're not editing a release! -ru : Вы не редактируете выпуск, а копируете его! -cs : Needitujete vydání! -hu : Te most nem szerkesztesz egy kiadást! -nl : Je bent geen uitgave aan het wijzigen! +en : You're not editing a entry! +ru*: +cs*: +hu*: +nl : Je bent geen item aan het wijzigen! :_editmsg_copy_msg -en : You're about to insert a new release into the database with information based on [_1].[br] - Hit the 'edit' tab on the right-top if you intended to edit the release instead of creating a new one. -ru : Вы собираетесь создать новый выпуск, основанный на информации из [_1].[br] +en : You're about to insert a new entry into the database with information based on [_1].[br] + Hit the 'edit' tab on the right-top if you intended to edit the entry instead of creating a new one. +ru*: Вы собираетесь создать новый выпуск, основанный на информации из [_1].[br] Щёлкните вкладку 'правка' в правом верхнем углу, если собирались редактировать выпуск, а не создавать новый. -cs : Chystáte se vložit nové vydání do databáze s informacemi založenými na vydání [_1].[br] +cs*: Chystáte se vložit nové vydání do databáze s informacemi založenými na vydání [_1].[br] Pokud chcete editovat vydání místo toho, abyste vložili další vydání, přejděte na záložku 'editovat' v pravém horním rohu. -hu : Te most ép arra készülsz, hogy egy új kiadást hozzál létre az adatbázisban, [_1]-ra alapozva az információkat.[br] +hu*: Te most ép arra készülsz, hogy egy új kiadást hozzál létre az adatbázisban, [_1]-ra alapozva az információkat.[br] Klikkelj a 'szerkesztés' fülre a jobb felső sarokba ha egy új kiadás helyet, csak szerkeszteni akartad a meglévőt. -nl : Je staat op het punt om een nieuwe uitgave toe te voegen aan de database, met informatie gebasseerd op [_1].[br] - Klik op de 'wijzig' tab rechtsboven als je bedoeling is om deze uitgave te wijzigen in plaats van een nieuwe aan te maken. +nl : Je staat op het punt om een nieuw item toe te voegen aan de database, met informatie gebasseerd op [_1].[br] + Klik op de 'wijzig' tab rechtsboven als je bedoeling is om dit item te wijzigen in plaats van een nieuwe aan te maken. :_editmsg_msg_title en : Before editing: @@ -8411,7 +8418,7 @@ en : [url,_1,Search the database] to see if we already have information about th ru*: [url,_1,Воспользуйтесь поиском], ведь вполне возможно, что у нас уже есть информация об [index,_2,этой новелле,этом выпуске,этой компании]. cs*: [url,_1,Prohledejte databázi], zda již nemáme informaci o [index,_2,této vizuální novele,tomto vydání,tomto producentovi]. hu*: [url,_1,Nézd át az adatbázist], hogy van-e már információ erről a [index,_2,visual novelről, kiadásról, készítőről]. -nl : [url,_1,Doorzoek de database] om te kijken of we al informatie hebben over [index,_2,deze visual novel,deze uitgave,deze producent,dit kenmerk]. +nl : [url,_1,Doorzoek de database] om te kijken of we al informatie hebben over [index,_2,deze visual novel,deze uitgave,deze producent,dit karakter]. :_editmsg_revert_title en : Reverting @@ -8429,7 +8436,7 @@ cs*: Editujete starší verzi [index,_1,této vizuální novely,tohoto vydání, Pokud ji uložíte, všechny změny provedené po této revizi budou vráceny! hu*: Te egy régi átjavítását szerkeszted ennek a [index,_1,visual novelnek, kiadásnak, készítőnek]. Ha lemented, akkor minden szerkesztés amit ezután a javítás után végeztek megsemmisül! -nl : Je wijzigd een verouderde versie van [index,_1,deze visual novel,deze uitgave,deze producent,dit kenmerk]. +nl : Je wijzigd een verouderde versie van [index,_1,deze visual novel,deze uitgave,deze producent,dit karakter]. Als je dit opslaat, zullen alle wijzigingen na deze revisie teruggedraait worden. diff --git a/lib/VNDB/Handler/Chars.pm b/lib/VNDB/Handler/Chars.pm index 04114ffe..f8c5a4e7 100644 --- a/lib/VNDB/Handler/Chars.pm +++ b/lib/VNDB/Handler/Chars.pm @@ -11,7 +11,7 @@ our @EXPORT = ('charTable'); TUWF::register( qr{c([1-9]\d*)(?:\.([1-9]\d*))?} => \&page, - qr{c(?:([1-9]\d*)(?:\.([1-9]\d*))?/edit|/new)} + qr{c(?:([1-9]\d*)(?:\.([1-9]\d*))?/(edit|copy)|/new)} => \&edit, ); @@ -228,7 +228,10 @@ sub charTable { sub edit { - my($self, $id, $rev) = @_; + my($self, $id, $rev, $copy) = @_; + + my $copy = $rev && $rev eq 'copy' || $copy && $copy eq 'copy'; + $rev = undef if defined $rev && $rev !~ /^\d+$/; my $r = $id && $self->dbCharGet(id => $id, what => 'changes extended vns traits', $rev ? (rev => $rev) : ())->[0]; return $self->resNotFound if $id && !$r->{id}; @@ -283,10 +286,11 @@ sub edit { || $self->dbCharGet(instance => $r->{id})->[0]; } + my(@traits, @vns); if(!$frm->{_err}) { # parse and normalize - my @traits = sort { $a->[0] <=> $b->[0] } map /^(\d+)-(\d+)$/&&[$1,$2], split / /, $frm->{traits}; - my @vns = sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } map [split /-/], split / /, $frm->{vns}; + @traits = sort { $a->[0] <=> $b->[0] } map /^(\d+)-(\d+)$/&&[$1,$2], split / /, $frm->{traits}; + @vns = sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } map [split /-/], split / /, $frm->{vns}; $frm->{traits} = join(' ', map sprintf('%d-%d', @$_), @traits); $frm->{vns} = join(' ', map sprintf('%d-%d-%d-%s', @$_), @vns); $frm->{ihid} = $frm->{ihid} ?1:0; @@ -294,9 +298,12 @@ sub edit { $frm->{main_spoil} = 0 if !$frm->{main}; # check for changes - return $self->resRedirect("/c$id", 'post') - if $id && !grep $frm->{$_} ne $b4{$_}, keys %b4; + my $same = $id && !grep $frm->{$_} ne $b4{$_}, keys %b4; + $self->resRedirect("/c$id", 'post') if !$copy && $same; + $frm->{_err} = ['nochanges'] if $copy && $same; + } + if(!$frm->{_err}) { # modify for dbCharRevisionInsert ($frm->{b_month}, $frm->{b_day}) = delete($frm->{bday}) =~ /^(\d{2})-(\d{2})$/ ? ($1, $2) : (0, 0); $frm->{main} ||= undef; @@ -304,7 +311,7 @@ sub edit { $_->[1]||=undef for (@vns); $frm->{vns} = \@vns; - my $nrev = $self->dbItemEdit(c => $id ? $r->{cid} : undef, %$frm); + my $nrev = $self->dbItemEdit(c => !$copy && $id ? $r->{cid} : undef, %$frm); # TEMPORARY SOLUTION! I'll investigate more efficient solutions and incremental updates whenever I have more data $self->dbExec('SELECT traits_chars_calc()'); @@ -314,13 +321,14 @@ sub edit { } $frm->{$_} //= $b4{$_} for keys %b4; - $frm->{editsum} //= sprintf 'Reverted to revision c%d.%d', $id, $rev if $rev; + $frm->{editsum} //= sprintf 'Reverted to revision c%d.%d', $id, $rev if !$copy && $rev; + $frm->{editsum} = sprintf 'New character based on c%d.%d', $id, $r->{rev} if $copy; - my $title = mt $r ? ('_chare_title_edit', $r->{name}) : '_chare_title_add'; + my $title = mt $r ? ($copy ? '_chare_title_copy' : '_chare_title_edit', $r->{name}) : '_chare_title_add'; $self->htmlHeader(title => $title, noindex => 1); - $self->htmlMainTabs('c', $r, 'edit') if $r; - $self->htmlEditMessage('c', $r, $title); - $self->htmlForm({ frm => $frm, action => $r ? "/c$id/edit" : '/c/new', editsum => 1, upload => 1 }, + $self->htmlMainTabs('c', $r, $copy ? 'copy' : 'edit') if $r; + $self->htmlEditMessage('c', $r, $title, $copy); + $self->htmlForm({ frm => $frm, action => $r ? "/c$id/".($copy ? 'copy' : 'edit') : '/c/new', editsum => 1, upload => 1 }, chare_geninfo => [ mt('_chare_form_generalinfo'), [ input => name => mt('_chare_form_name'), short => 'name' ], [ input => name => mt('_chare_form_original'), short => 'original' ], diff --git a/lib/VNDB/Util/CommonHTML.pm b/lib/VNDB/Util/CommonHTML.pm index 22e8f13d..a146a098 100644 --- a/lib/VNDB/Util/CommonHTML.pm +++ b/lib/VNDB/Util/CommonHTML.pm @@ -65,7 +65,7 @@ sub htmlMainTabs { end; } - if($type eq 'r' && $self->authCan('edit')) { + if($type =~ /[rc]/ && $self->authCan('edit')) { li $sel eq 'copy' ? (class => 'tabselected') : (); a href => "/$id/copy", mt '_mtabs_copy'; end; @@ -277,7 +277,7 @@ sub htmlEditMessage { div class => 'warning'; h2 mt '_editmsg_copy_title'; p; - lit mt '_editmsg_copy_msg', sprintf '<a href="/%s%d">%s</a>', $type, $obj->{id}, xml_escape $obj->{title}; + lit mt '_editmsg_copy_msg', sprintf '<a href="/%s%d">%s</a>', $type, $obj->{id}, xml_escape $obj->{title}||$obj->{name}; end; end; } |