diff options
Diffstat (limited to 'lib/Bookmarks/C/Main.pm')
-rw-r--r-- | lib/Bookmarks/C/Main.pm | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/Bookmarks/C/Main.pm b/lib/Bookmarks/C/Main.pm index 1e2bf54..d957c5d 100644 --- a/lib/Bookmarks/C/Main.pm +++ b/lib/Bookmarks/C/Main.pm @@ -4,6 +4,7 @@ use strict; use base 'Catalyst::Base'; use Bookmarks::Utils; use File::Slurp; +use List::MoreUtils qw(uniq); =head1 NAME @@ -34,7 +35,7 @@ sub auto : Private { sub tags : Global { my ( $self, $c ) = @_; $c->stash->{template}='tags'; - $c->stash->{tags}=[Bookmarks::M::DB::Tags->get_all_tags_by_popularity()]; + $c->stash->{tags}=[Bookmarks::M::DB::Tags->get_all_tags_by_name()]; } sub tag : Regex('^tag/(.*)$') { @@ -87,21 +88,28 @@ sub add : Global { my ( $self, $c ) = @_; my %pre_link=(); - for my $i (qw(url title descr)) { - $pre_link{$i}=$c->req->param($i); + for my $field (qw(url title descr)) { + $pre_link{$field}=$c->req->param($field); } my @tags=split /[ +]/,($c->req->param('tag')||''); + my ($dblink)=Bookmarks::M::DB::Links->search({url=>$pre_link{url}}); # GET: prepare the form from the URL params if ($c->req->method eq 'GET') { $c->stash->{link}=\%pre_link; $c->stash->{tags}=\@tags; + if (defined $dblink) { + for my $field (qw(url title descr)) { + $c->stash->{link}{$field}||=$dblink->$field(); + } + my @dbtags=map { $_->name() } $dblink->tags(); + $c->stash->{tags}=[ uniq(@tags,@dbtags) ]; + } $c->stash->{template}='add_form'; + $c->stash->{close}=$c->req->param('close'); } # POST: accept data and create link+tags elsif ($c->req->method eq 'POST') { - my ($dblink)=Bookmarks::M::DB::Links->search({url=>$pre_link{url}}); - if (defined $dblink) { Bookmarks::M::DB::LinksTags->search({ link => $dblink->pk() |