spec/applications/main/shared/app/tabs/tabulous.rb in tabulous-1.3.2 vs spec/applications/main/shared/app/tabs/tabulous.rb in tabulous-2.0.0

- old
+ new

@@ -1,158 +1,78 @@ -# Tabulous gives you an easy way to set up tabs for your Rails application. -# -# 1. Configure this file. -# 2. Add <%= tabs %> and <%= subtabs %> in your layout(s) wherever you want -# your tabs to appear. -# 3. Add styles for these tabs in your stylesheets. -# 4. Profit! +Tabulous.setup do -Tabulous.setup do |config| + tabs do + home_tab do + text 'Explanation' + link_path { root_path } + visible_when { true } + enabled_when { true } + active_when { in_action('any').of_controller('home') } + end - #--------------------------- - # HOW TO USE THE TABLES - #--------------------------- - # - # The following tables are just an array of arrays. As such, you can put - # any Ruby code into a cell. For example, you could put "/foo/bar" in - # a path cell or you could put "/foo" + "/bar". You can even wrap up code - # in a lambda to be executed later. These will be executed in the context - # of a Rails view meaning they will have access to view helpers. - # - # However, there is something special about the format of these tables. - # Because it would be a pain for you to manually prettify the tables each - # time you edit them, there is a special rake task that does this for - # you: rake tabs:format. However, for this prettifier to work properly - # you have to follow some special rules: - # - # * No comments are allowed between rows. - # * Comments are allowed to the right of rows, except for header rows. - # * The start of a table is signified by a [ all by itself on a line. - # * The end of a table is signified by a ] all by itself on a line. - # * And most importantly: commas that separate cells should be surrounded - # by spaces and commas that are within cells should not. This gives the - # formatter an easy way to distinguish between cells without having - # to actually parse the Ruby. + galaxies_tab do + text 'Galaxies' + link_path { galaxies_path } + visible_when { true } + enabled_when { true } + active_when { in_action('any').of_controller('galaxies') } + end - #---------- - # TABS - #---------- - # - # This is where you define your tabs and subtabs. The order that the tabs - # appear in this list is the order they will appear in your views. Any - # subtabs defined will have the previous tab as their parent. - # - # TAB NAME - # must end in _tab or _subtab - # DISPLAY TEXT - # the text the user sees on the tab - # PATH - # the URL that gets sent to the server when the tab is clicked - # VISIBLE - # whether to display the tab - # ENABLED - # whether the tab is disabled (unclickable) + stars_tab do + text 'Stars' + link_path { stars_path } + visible_when { true } + enabled_when { true } + active_when { in_action('any').of_controller('stars') } + end - config.tabs do - [ - #------------------------------------------------------------------------------------------------------# - # TAB NAME | DISPLAY TEXT | PATH | VISIBLE? | ENABLED? # - #------------------------------------------------------------------------------------------------------# - [ :home_tab , 'Explanation' , "/" , true , true ], - [ :galaxies_tab , 'Galaxies' , "/galaxies" , true , true ], - [ :stars_tab , 'Stars' , "/stars" , true , true ], - [ :planets_tab , 'Planets' , "/planets" , true , true ], - [ :subtabs_tab , 'Subtabs' , "/subtabs/one" , true , true ], - [ :one_subtab , 'One' , "/subtabs/one" , true , true ], - [ :two_subtab , 'Two' , "/subtabs/two" , true , true ], - [ :three_subtab , 'Three' , "/subtabs/three" , true , true ], - #------------------------------------------------------------------------------------------------------# - # TAB NAME | DISPLAY TEXT | PATH | VISIBLE? | ENABLED? # - #------------------------------------------------------------------------------------------------------# - ] - end + planets_tab do + text 'Planets' + link_path { planets_path } + visible_when { true } + enabled_when { true } + active_when { in_action('any').of_controller('planets') } + end - #------------- - # ACTIONS - #------------- - # - # This is where you hook up actions with tabs. That way tabulous knows - # which tab and subtab to mark active when an action is rendered. - # - # CONTROLLER - # the name of the controller - # ACTION - # the name of the action, or :all_actions - # TAB - # the name of the tab or subtab that is active when this action is rendered + subtabs_tab do + text 'Subtabs' + link_path '/subtabs/one' + visible_when { true } + enabled_when { true } + active_when { a_subtab_is_active } + end - config.actions do - [ - #-------------------------------------------------------------# - # CONTROLLER | ACTION | TAB # - #-------------------------------------------------------------# - [ :home , :all_actions , :home_tab ], - [ :galaxies , :all_actions , :galaxies_tab ], - [ :stars , :all_actions , :stars_tab ], - [ :planets , :all_actions , :planets_tab ], - [ :subtabs , :one , :one_subtab ], - [ :subtabs , :two , :two_subtab ], - [ :subtabs , :three , :three_subtab ], - #-------------------------------------------------------------# - # CONTROLLER | ACTION | TAB # - #-------------------------------------------------------------# - ] - end + one_subtab do + text 'One' + link_path '/subtabs/one' + visible_when { true } + enabled_when { true } + active_when { in_action('one').of_controller('subtabs') } + end - #------------- - # OPTIONS - #------------- + two_subtab do + text 'Two' + link_path '/subtabs/two' + visible_when { true } + enabled_when { true } + active_when { in_action('two').of_controller('subtabs') } + end - # By default, you cannot click on the active tab. - config.active_tab_clickable = false + three_subtab do + text 'Three' + link_path '/subtabs/three' + visible_when { true } + enabled_when { true } + active_when { in_action('three').of_controller('subtabs') } + end + end - # By default, the subtabs HTML element is not rendered if it is empty. - config.always_render_subtabs = false - - # Tabulous expects every controller action to be associated with a tab. - # When an action does not have an associated tab (or subtab), you can - # instruct tabulous how to behave: - config.when_action_has_no_tab = :raise_error # the default behavior - # config.when_action_has_no_tab = :do_not_render # no tab navigation HTML will be generated - # config.when_action_has_no_tab = :render # the tab navigation HTML will be generated, - # but no tab or subtab will be active - - # By default, div elements are used in the tab markup. When html5 is - # true, nav elements are used instead. - config.html5 = false - - #------------ - # STYLES - #------------ - # - # The markup that is generated has the following properties: - # - # Tabs and subtabs that are selected have the class "active". - # Tabs and subtabs that are not selected have the class "inactive". - # Tabs that are disabled have the class "disabled"; otherwise, "enabled". - # Tabs that are not visible do not appear in the markup at all. - # - # These classes are provided to make it easier for you to create your - # own CSS (and JavaScript) for the tabs. - - # Some styles will be generated for you to get you off to a good start. - # Scaffolded styles are not meant to be used in production as they - # generate invalid HTML markup. They are merely meant to give you a - # head start or an easy way to prototype quickly. - # - config.css.scaffolding = true - - # You can tweak the colors of the generated CSS. - # - # config.css.background_color = '#ccc' - # config.css.text_color = '#444' - # config.css.active_tab_color = 'white' - # config.css.hover_tab_color = '#ddd' - # config.css.inactive_tab_color = '#aaa' - # config.css.inactive_text_color = '#888' + use_css_scaffolding do + background_color '#cec' + text_color '#464' + active_tab_color '#fff' + hover_tab_color '#dfd' + inactive_tab_color '#aca' + inactive_text_color '#8a8' + end end