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.pm36
1 files changed, 31 insertions, 5 deletions
diff --git a/lib/Bookmarks/C/Main.pm b/lib/Bookmarks/C/Main.pm
index 7182a9e..89c985d 100644
--- a/lib/Bookmarks/C/Main.pm
+++ b/lib/Bookmarks/C/Main.pm
@@ -23,17 +23,43 @@ Catalyst component.
=cut
-sub default : Private {
- my ( $self, $c ) = @_;
- $c->res->redirect($c->req->base,'/tags');
-}
-
sub tags : Global {
my ( $self, $c ) = @_;
$c->stash->{template}='tags';
$c->stash->{tags}=[Bookmarks::M::DB::Tags->get_all_tags_by_popularity()];
}
+sub tag : Regex('^tag/(.*)$') {
+ my ( $self, $c ) = @_;
+
+ my $tagname=$c->req->snippets->[0];
+ my ($tag)=Bookmarks::M::DB::Tags->search({name=>$tagname});
+ if (!defined $tag) {
+ $c->stash->{tagname}=$tagname;
+ $c->stash->{template}='notag';
+ }
+ else {
+ my @links=$tag->ordered_links();
+ $c->stash->{tag}=$tag;
+ $c->stash->{links}=[@links];
+ $c->stash->{template}='links';
+ }
+}
+
+sub icon : Global {
+ my ( $self, $c ) = @_;
+
+ my $link=Bookmarks::M::DB::Links->retrieve($c->req->param('link'));
+ if ($link->icon()) {
+ $c->res->content_type('image/x-icon');
+ $c->res->body($link->icon());
+ }
+ else {
+ $c->res->status(404);
+ $c->res->body('nonce');
+ }
+}
+
=back