summaryrefslogtreecommitdiff
path: root/lib/Bookmarks/C/Main.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bookmarks/C/Main.pm')
-rw-r--r--lib/Bookmarks/C/Main.pm18
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()