Changeset 112 in bookmarks for trunk/lib/Bookmarks/Controller.pm


Ignore:
Timestamp:
02/17/16 22:05:50 (8 years ago)
Author:
peter
Message:
  • Added the sidebar resource.
  • Moved the list resources to list.
  • Respond with a 406 if the required modules are not available for XBEL, Atom, or CSV.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Bookmarks/Controller.pm

    r108 r112  
    7171} 
    7272 
     73sub _get_search_from_request { 
     74    my $self = shift; 
     75 
     76    my @tags   = grep { $_ ne '' } $self->request->param('tag'); 
     77    my $query  = $self->request->param('q'); 
     78    my $limit  = $self->request->param('limit'); 
     79    my $offset = $self->request->param('offset'); 
     80    my $page   = $self->request->param('page'); 
     81 
     82    return $self->bookmarks->search({ 
     83        query  => $query, 
     84        tags   => \@tags, 
     85        limit  => $limit, 
     86        offset => $offset, 
     87        page   => $page, 
     88    }); 
     89} 
     90 
    7391sub list { 
    7492    my $self = shift; 
     
    7997    my $format = $self->request->param('format') || 'html'; 
    8098 
    81     my @tags = grep { $_ ne '' } $self->request->param('tag'); 
    82     my $query = $self->request->param('q'); 
    83     my $limit = $self->request->param('limit'); 
    84     my $offset = $self->request->param('offset'); 
    85     my $page = $self->request->param('page'); 
    86  
    8799    my $list = Bookmarks::List->new({ 
    88100        bookmarks => $self->bookmarks, 
    89         search    => $self->bookmarks->search({ 
    90             query  => $query, 
    91             tags   => \@tags, 
    92             limit  => $limit, 
    93             offset => $offset, 
    94             page   => $page, 
    95         }), 
     101        search    => $self->_get_search_from_request, 
    96102    }); 
    97103 
     
    101107    } 
    102108    return $list->$as_format; 
     109} 
     110 
     111sub sidebar { 
     112    my $self = shift; 
     113 
     114    my $list = Bookmarks::List->new({ 
     115        bookmarks => $self->bookmarks, 
     116        search    => $self->_get_search_from_request, 
     117    }); 
     118 
     119    require Template; 
     120    require File::Basename; 
     121    my $template = Template->new({ INCLUDE_PATH => File::Basename::dirname($INC{'Bookmarks/List.pm'}) }); 
     122 
     123    my @all_tags = $list->bookmarks->get_tags({ selected => @{ $list->tags }[0] }); 
     124    my @cotags = $list->bookmarks->get_cotags({ search => $list->search }); 
     125 
     126    $template->process( 
     127        'list.tt', 
     128        { 
     129            base_url     => $list->bookmarks->base_uri, 
     130            title        => $list->title, 
     131            query        => $list->query, 
     132            selected_tag => @{ $list->tags }[0], 
     133            search_tags  => $list->tags, 
     134            links        => [ $list->_get_list_links('text/html', { q => $list->query, tag => $list->tags }) ], 
     135            all_tags     => \@all_tags, 
     136            cotags       => \@cotags, 
     137            resources    => $list->results, 
     138            pages        => $list->search->pages, 
     139        }, 
     140        \my $output, 
     141    ); 
     142    return [200, ['Content-Type' => 'text/html; charset=UTF-8'], [$output]]; 
    103143} 
    104144 
Note: See TracChangeset for help on using the changeset viewer.