diff options
Diffstat (limited to 'lib/Bookmarks/C/Main.pm')
-rw-r--r-- | lib/Bookmarks/C/Main.pm | 82 |
1 files changed, 70 insertions, 12 deletions
diff --git a/lib/Bookmarks/C/Main.pm b/lib/Bookmarks/C/Main.pm index 2cab5ee..b6170c0 100644 --- a/lib/Bookmarks/C/Main.pm +++ b/lib/Bookmarks/C/Main.pm @@ -3,7 +3,6 @@ package Bookmarks::C::Main; use strict; use base 'Catalyst::Base'; use Bookmarks::Utils; -use YAML; =head1 NAME @@ -25,6 +24,12 @@ Catalyst component. =cut +sub auto : Private { + my ( $self, $c ) = @_; + $c->stash->{href}=Bookmarks::C::Main::LinkHelper->new($c); + return 1; +} + sub tags : Global { my ( $self, $c ) = @_; $c->stash->{template}='tags'; @@ -54,9 +59,10 @@ sub icon : Global { my ( $self, $c ) = @_; my $link=Bookmarks::M::DB::Links->retrieve($c->req->param('link')); - if ($link->get_icon()) { + my $icon=$link->get_icon(); + if ($icon) { $c->res->content_type('image/x-icon'); - $c->res->body($link->get_icon()); + $c->res->body($icon); } else { $c->res->status(404); @@ -64,12 +70,6 @@ sub icon : Global { } } -sub favicon : Path('favicon.ico') { - my ( $self, $c ) = @_; - $c->res->status(404); - $c->res->body('nonce'); -} - sub jump : Global { my ( $self, $c ) = @_; @@ -91,9 +91,6 @@ sub add : Global { } my @tags=split /[ +]/,($c->req->param('tag')||''); - print {*STDERR} Dump(\%pre_link); - print {*STDERR} Dump($c->req); - # GET: prepare the form from the URL params if ($c->req->method eq 'GET') { $c->stash->{link}=\%pre_link; @@ -151,4 +148,65 @@ it under the same terms as perl itself. =cut +package Bookmarks::C::Main::LinkHelper; +use YAML; +use URI; + +sub new { + my ($class,$c)=@_; + return bless {c=>$c,base=>$c->req->base()},$class; +} + +sub tag_info { + my ($self, $tag)=@_; + return URI->new( + $self->{base} . 'tag-info/' . $tag->name() + )->as_string(); +} + +sub remove_tag { + my ($self, $tagset, $tag)=@_; + my @tags=grep {$_ ne $tag} $tagset->tags(); + return URI->new( + $self->{base} . 'tag/' + . (join '+',map {$_->name()} @tags) + )->as_string(); +} + +sub add_tag { + my ($self, $tagset, $tag)=@_; + return URI->new( + $self->{base} . 'tag/' + . (join '+',map {$_->name()} ($tagset->tags(),$tag)) + )->as_string(); +} + +sub to_tag { + my ($self, $tag)=@_; + return URI->new( + $self->{base} . 'tag/' . $tag->name() + )->as_string(); +} + +sub link_icon { + my ($self, $link)=@_; + my $uri=URI->new($self->{base} . 'icon'); + $uri->query_form(link=>$link->pk()); + return $uri->as_string(); +} + +sub link { + my ($self, $link)=@_; + my $uri=URI->new($self->{base} . 'jump'); + $uri->query_form(link=>$link->pk()); + return $uri->as_string(); +} + +sub add_action { + my ($self)=@_; + return URI->new( + $self->{base} . 'add' + )->as_string(); +} + 1; |