summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2005-11-09 17:14:54 +0000
committerdakkar <dakkar@luxion>2005-11-09 17:14:54 +0000
commit27cff350e9e5fb832185bc14dee35b5b8f942a81 (patch)
treee89f9b5d457b711cce6d908ef0b33792cab20e75 /lib
parentora il BookmarksManager gestisce per bene i tag multipli, e i template sono f... (diff)
downloadBookmarks-27cff350e9e5fb832185bc14dee35b5b8f942a81.tar.gz
Bookmarks-27cff350e9e5fb832185bc14dee35b5b8f942a81.tar.bz2
Bookmarks-27cff350e9e5fb832185bc14dee35b5b8f942a81.zip
* passati i template a HTML4, altrimenti l'autocompletamento non va
* aggiunto autocompletamento per i nomi di tag * migliorato il caricatore da YAML * aggiunto un convertitore XBEL -> YAML * aggiunto campo 'tipo icona' * aggiunta funzionalità di edit e delete di link * dopo ogni update di un link, i tag non più riferiti vengono cancellati * migliorato il recupero favicon, con tipo
Diffstat (limited to 'lib')
-rw-r--r--lib/Bookmarks.pm1
-rw-r--r--lib/Bookmarks/C/Main.pm92
-rw-r--r--lib/Bookmarks/M/DB/Tags.pm14
-rw-r--r--lib/Bookmarks/Utils.pm16
-rw-r--r--lib/Bookmarks/V/TT.pm12
5 files changed, 95 insertions, 40 deletions
diff --git a/lib/Bookmarks.pm b/lib/Bookmarks.pm
index fb88958..810a64f 100644
--- a/lib/Bookmarks.pm
+++ b/lib/Bookmarks.pm
@@ -2,6 +2,7 @@ package Bookmarks;
use strict;
use Catalyst qw/-Debug Prototype DefaultEnd/;
+use HTML::Element;
our $VERSION = '0.01';
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;
diff --git a/lib/Bookmarks/M/DB/Tags.pm b/lib/Bookmarks/M/DB/Tags.pm
index 3686a7d..cc675f7 100644
--- a/lib/Bookmarks/M/DB/Tags.pm
+++ b/lib/Bookmarks/M/DB/Tags.pm
@@ -22,7 +22,7 @@ GROUP BY links_tags.tag
ORDER BY how_many DESC
END_SQL
-__PACKAGE__->columns(TEMP=> 'how_wany');
+__PACKAGE__->columns(TEMP=> 'how_many');
sub count_links {
my ($self)=@_;
@@ -52,6 +52,18 @@ sub ordered_links {
return sort links_sorter @links;
}
+sub cleanup {
+ my ($class)=@_;
+
+ my @tag_list=reverse $class->search_popularity();
+
+ while ($tag_list[0]->how_many() == 0) {
+ (shift @tag_list)->delete();
+ }
+
+ return;
+}
+
=head1 NAME
Bookmarks::M::DB::Tags - CDBI Model Component Table Class
diff --git a/lib/Bookmarks/Utils.pm b/lib/Bookmarks/Utils.pm
index fd0b68d..a876340 100644
--- a/lib/Bookmarks/Utils.pm
+++ b/lib/Bookmarks/Utils.pm
@@ -1,15 +1,17 @@
package Bookmarks::Utils;
use strict;
use warnings;
-use LWP::Simple;
+use LWP::UserAgent;
use URI::URL;
+my $ua=LWP::UserAgent->new();
+
sub check_link {
my ($url)=@_;
return 1 if $url!~/^http:/;
#my ($type,$length,$update,$expires,$server)=head($url);
#return defined $type;
- return scalar head($url);
+ return $ua->head($url)->is_success();
}
sub get_site_icon {
@@ -38,8 +40,14 @@ sub get_site_icon {
print "Trovato: '$favicon'";
$favicon=URI::URL->new($favicon,$url)->abs->canonical->as_string;
print ", ovvero '$favicon'\n";
- my $icon=get($favicon);
- return $icon;
+ my $res=$ua->get($favicon);
+
+ if ($res->is_success()) {
+ return ($res->decoded_content(),$res->header('Content-type'));
+ }
+ else {
+ return;
+ }
}
1;
diff --git a/lib/Bookmarks/V/TT.pm b/lib/Bookmarks/V/TT.pm
index f2f8e7d..d2063b6 100644
--- a/lib/Bookmarks/V/TT.pm
+++ b/lib/Bookmarks/V/TT.pm
@@ -3,18 +3,6 @@ package Bookmarks::V::TT;
use strict;
use base 'Catalyst::View::TT';
-sub process {
- my ( $self, $c ) = @_;
- my $ret=$self->NEXT::process($c);
- if ($ret==1
- and $c->res->content_type =~ m{text/html}) {
- my $ct=$c->res->content_type;
- $ct=~s{text/html}{application/xhtml+xml};
- $c->res->content_type($ct);
- }
- return $ret;
-}
-
=head1 NAME
Bookmarks::V::TT - TT View Component