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.pm92
1 files changed, 69 insertions, 23 deletions
diff --git a/lib/Bookmarks/C/Main.pm b/lib/Bookmarks/C/Main.pm
index b6170c0..d4c5a66 100644
--- a/lib/Bookmarks/C/Main.pm
+++ b/lib/Bookmarks/C/Main.pm
@@ -61,7 +61,7 @@ sub icon : Global {
my $link=Bookmarks::M::DB::Links->retrieve($c->req->param('link'));
my $icon=$link->get_icon();
if ($icon) {
- $c->res->content_type('image/x-icon');
+ $c->res->content_type($link->icon_type());
$c->res->body($icon);
}
else {
@@ -100,31 +100,41 @@ sub add : Global {
# 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) { # devo crearlo
- $dblink=Bookmarks::M::DB::Links->create({});
- $dblink->add_date(time());
- $dblink->access_count(0);
+
+ if (defined $dblink) {
+ Bookmarks::M::DB::LinksTags->search({
+ link => $dblink->pk()
+ })->delete_all();
+ }
+
+ if (defined $dblink and $c->req->param('delete')) {
+ $dblink->delete();
}
- $dblink->set(%pre_link);
- $dblink->set_icon(Bookmarks::Utils::get_site_icon($pre_link{url}));
- $dblink->update();
-
- # tags
- Bookmarks::M::DB::LinksTags->search({
- link => $dblink->pk()
- })->delete_all();
-
- for my $tagname (@tags) {
- my $dbtag=Bookmarks::M::DB::Tags->find_or_create({
- name => $tagname,
- });
-
- Bookmarks::M::DB::LinksTags->find_or_create({
- tag => $dbtag->pk(),
- link => $dblink->pk(),
- });
+ else {
+ if (!defined $dblink) { # devo crearlo
+ $dblink=Bookmarks::M::DB::Links->create({});
+ $dblink->add_date(time());
+ $dblink->access_count(0);
+ }
+
+ $dblink->set(%pre_link);
+ $dblink->set_icon(Bookmarks::Utils::get_site_icon($pre_link{url}));
+ $dblink->update();
+
+ for my $tagname (@tags) {
+ my $dbtag=Bookmarks::M::DB::Tags->find_or_create({
+ name => $tagname,
+ });
+
+ Bookmarks::M::DB::LinksTags->find_or_create({
+ tag => $dbtag->pk(),
+ link => $dblink->pk(),
+ });
+ }
}
+ Bookmarks::M::DB::Tags->cleanup();
+
if ($c->req->param('close')) {
$c->stash->{template}='closewin';
}
@@ -134,6 +144,28 @@ sub add : Global {
}
}
+sub edit : Global {
+ my ( $self, $c ) = @_;
+
+ my $link=Bookmarks::M::DB::Links->retrieve($c->req->param('link'));
+
+ $c->stash->{link}=$link;
+ $c->stash->{tags}=[ map {$_->name()} $link->tags() ];
+ $c->stash->{mode}='edit';
+ $c->stash->{template}='add_form';
+}
+
+sub complete_tag : Global {
+ my ( $self, $c ) = @_;
+
+ my $pretag=$c->req->param('tag');
+
+ my @tags=map { $_->name() }
+ Bookmarks::M::DB::Tags->search_like({name => "${pretag}%"});
+
+ $c->res->body($c->prototype->auto_complete_result(\@tags));
+}
+
=back
@@ -202,6 +234,13 @@ sub link {
return $uri->as_string();
}
+sub edit_link {
+ my ($self, $link)=@_;
+ my $uri=URI->new($self->{base} . 'edit');
+ $uri->query_form(link=>$link->pk());
+ return $uri->as_string();
+}
+
sub add_action {
my ($self)=@_;
return URI->new(
@@ -209,4 +248,11 @@ sub add_action {
)->as_string();
}
+sub tag_autocomplete {
+ my ($self)=@_;
+ return URI->new(
+ $self->{base} . 'complete_tag'
+ )->as_string();
+}
+
1;