From 27cff350e9e5fb832185bc14dee35b5b8f942a81 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 9 Nov 2005 17:14:54 +0000 Subject: =?UTF-8?q?=20*=20passati=20i=20template=20a=20HTML4,=20altrimenti?= =?UTF-8?q?=20l'autocompletamento=20non=20va=20=20*=20aggiunto=20autocompl?= =?UTF-8?q?etamento=20per=20i=20nomi=20di=20tag=20=20*=20migliorato=20il?= =?UTF-8?q?=20caricatore=20da=20YAML=20=20*=20aggiunto=20un=20convertitore?= =?UTF-8?q?=20XBEL=20->=20YAML=20=20*=20aggiunto=20campo=20'tipo=20icona'?= =?UTF-8?q?=20=20*=20aggiunta=20funzionalit=C3=A0=20di=20edit=20e=20delete?= =?UTF-8?q?=20di=20link=20=20*=20dopo=20ogni=20update=20di=20un=20link,=20?= =?UTF-8?q?i=20tag=20non=20pi=C3=B9=20riferiti=20vengono=20cancellati=20?= =?UTF-8?q?=20*=20migliorato=20il=20recupero=20favicon,=20con=20tipo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/Bookmarks/C/Main.pm | 92 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 23 deletions(-) (limited to 'lib/Bookmarks/C') 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; -- cgit v1.2.3