NAME CatalystX::Controller::Tabs - Automatically build tab sets for a controller SYNOPSIS package MyApp::Controller::Something; use base qw( Catalyst::Controller CatalystX::Controller::Tabs ); sub friends : Local Tab('Friends') { my ( $self, $c ) = @_; $c->stash->{ 'template' } = 'friends_list.tt2'; } sub enemies : Local Tab('Enemies') { my ( $self, $c ) = @_; $c->stash->{ 'template' } = 'enemies_list.tt2'; } sub auto : Private { my ( $self, $c ) = @_; $c->forward( 'build_tabs' ) } [%# Template friends_list.tt2 %] [% PROCESS tabs.tt2 %] [%# Template enemeies_list.tt2 %] [% PROCESS tabs.tt2 %] [%# Template friends_list.tt2 %] DESCRIPTION This module allows you to add a 'Tab' attribute to action endpoints, and it will automatically build a data structure suitable for rendering 'tabs' to switch between the methods that share the same tab structure. Although this was originally built to help with making tabbed interfaces, it isn't limited to creating tabs, as it simply collects the information about the related actions. Actions are considered to be related if they share a namespace. METHODS build_tabs This is the only method provided by this module, and you need to make sure you arrange to forward to this method when you want the tab data structure to be built. CONFIGURATION You can configure this module with the normal Catalyst style of controller configuration. The default configuration is: __PACKAGE__->config( { tabs => { stash_key => 'tabs', } } ); CONFIGURATION OPTIONS stash_key This configuration option controls the key that will be used to store the the generated data structure in the stash. SAMPLE CSS Here is some CSS that works with the template included in the synopsis. It's probably not exactly what you need, but it should give a decent starting point... ul.tabs { text-align: left; margin: 1em 0 1em 0; border-bottom: 1px solid #6c6; list-style-type: none; padding: 3px 10px 3px 10px; } ul.tabs li { display: inline; } ul.tabs li.selected { border-bottom: 1px solid #fff; background-color: #fff; } ul.tabs li.selected a { background-color: #fff; color: #000; position: relative; top: 1px; padding-top: 4px; } ul.tabs li a { padding: 3px 4px; border: 1px solid #6c6; background-color: #cfc; color: #666; margin-right: 0px; text-decoration: none; border-bottom: none; } ul.tabs a:hover { background: #fff; } SEE ALSO SUPPORT You can find documentation for this module with the perldoc command. perldoc CatalystX::Controller::Tabs You can also look for information at: * Project home page * AnnoCPAN: Annotated CPAN documentation * CPAN Ratings * RT: CPAN's request tracker * Search CPAN BUGS Please report any bugs or feature requests to "bug-catalystx-controller-tabs at rt.cpan.org", or through the web interface at . I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. KNOWN BUGS The methods provided for determining the URI for an action don't seem to work the same way for Catalyst::DispatchType::Regex actions, but this hasn't been a big issue for me so far, and I haven't had time to track the problem down yet (it seems to be an issue with Catalyst::DispatchType::Regex/uri_for_action if you want to look for it...) AUTHOR Jason Kohles "" COPYRIGHT AND LICENSE Copyright (C) 2007-2008 Jason Kohles. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.