format :html do def edit_toolbar_pinned? Card[:edit_toolbar_pinned].content == 'true' end def toolbar_pinned? Card[:toolbar_pinned].content == 'true' end view :toolbar do |args| navbar "toolbar-#{card.cardname.safe_key}-#{args[:home_view]}", :toggle_align=>:left, :class=>"slotter toolbar", :navbar_type=>'inverse', :collapsed_content=>close_link('pull-right visible-xs') do [ (wrap_with(:p, :class=>"navbar-text navbar-left") do _optional_render(:type_link,args,:show) end), close_link('hidden-xs navbar-right'), %{ }.html_safe, ] end end def close_link css_class wrap_with :ul, :class=>"nav navbar-nav #{css_class}" do [ toolbar_pin_link, "
  • #{view_link(glyphicon('remove'), :home, :title=>'cancel')}
  • " ] end end view :edit_toolbar do |args| id = "edit-toolbar-#{card.cardname.safe_key}-#{args[:home_view]}" navbar_right = '' navbar_right += edit_toolbar_autosave_link if card.drafts.present? navbar_right += edit_toolbar_pin_link navbar_right += edit_toolbar_close_link navbar id, :toggle=>'Edit', :toggle_align=>:left, :class=>'slotter toolbar', :navbar_type=>'inverse', :collapsed_content=>close_link('pull-right visible-xs') do [ content_tag(:span, 'Edit:', :class=>"navbar-text hidden-xs"), (wrap_with :ul, :class=>'nav navbar-nav nav-pills' do [ _optional_render(:edit_content_button, args, :show), _optional_render(:edit_name_button, args, :show), _optional_render(:edit_type_button, args, :show), _optional_render(:edit_rules_button, args, :show), _optional_render(:edit_nests_button, args, :show), ] end), content_tag( :ul, navbar_right.html_safe, :class=>'nav navbar-nav navbar-right' ) ] end end view :account_toolbar do |args| if card.accountable? links = [] links << account_pill( 'account', true, :view=>:edit, :slot=>{:hide=>'edit_toolbar'}) links << account_pill( 'roles') links << account_pill( 'created') links << account_pill( 'edited') links << account_pill( 'follow') navbar 'account-toolbar',:toggle_align=>:left, :collapsed_content=>close_link('pull-right visible-xs'), :navbar_type=>'inverse', :class=>"slotter toolbar", :nav_opts=>{'data-slot-selector'=>'.card-slot.related-view > .card-frame > .card-body > .card-slot'} do [ content_tag(:ul, links.join("\n").html_safe, :class=>'nav navbar-nav nav-pills'), content_tag(:ul, "
  • #{view_link(glyphicon('remove','hidden-xs'), :open)}
  • ".html_safe, :class=>'nav navbar-nav navbar-right'), ] end end end view :toolbar_buttons do |args| wrap_with(:div, :class=>'btn-group') do [ _optional_render(:history_button, args, :show), _optional_render(:delete_button, args, (card.ok?(:delete) ? :show : :hide)), _optional_render(:refresh_button, args, :hide) ] end end view :toolbar_buttons_advanced do |args| wrap_with(:div, :class=>'btn-group') do [ _optional_render(:rules_button, args, :show), _optional_render(:related_button, args, :show), ] end end view :edit_toolbar_buttons do |args| wrap_with(:div, :class=>'btn-group') do [ _optional_render(:edit_content_button, args, :show), _optional_render(:edit_structure_button, args, :show), _optional_render(:edit_name_button, args, :show), _optional_render(:edit_type_button, args, :show), ] end end view :rules_button do |args| toolbar_button('rules', 'wrench', 'hidden-xs hidden-sm', :view=>'options') end view :related_button do |args| path_opts = {:slot=>{:show=>:toolbar}} btn_dropdown('related', 'tree-deciduous', [ menu_item('children', 'baby-formula', {:related=>'*children', :path_opts=>path_opts}), menu_item('mates', 'bed', {:related=>'*mates', :path_opts=>path_opts}), menu_item('references out', 'log-out', {:related=>'*refers_to', :path_opts=>path_opts}), menu_item('references in', 'log-in', {:related=>'*referred_to_by', :path_opts=>path_opts}) ], :class=>'related') end view :history_button do |args| toolbar_button('history', 'time', 'hidden-xs hidden-sm hidden-md', :view=>'history') end view :delete_button do |args| toolbar_button('delete', 'trash', 'hidden-xs hidden-sm hidden-md hidden-lg', :action=>:delete, :class => 'slotter', :remote => true, :path_opts=> {:success => main? ? 'REDIRECT: *previous' : "TEXT: #{card.name} deleted"}, :'data-confirm' => "Are you sure you want to delete #{card.name}?" ) end view :refresh_button do |args| toolbar_button('refresh', 'refresh', 'hidden-xs hidden-sm hidden-md hidden-lg', :view=>args[:home_view] || :open) end view :edit_content_button do |args| pill_view_link 'content', :edit, args end view :edit_name_button do |args| pill_view_link 'name',:edit_name, args end view :edit_type_button do |args| pill_view_link 'type', :edit_type, args end view :edit_rules_button do |args| if structure_editable? active = [:edit_rules, :edit_structure].include? args.delete(:active_toolbar_view) rule_items = pill_view_link 'structure', :edit_structure, args rule_items += pill_view_link '...', :edit_rules, args pill_dropdown 'rules', rule_items, active else pill_view_link 'rules', :edit_rules, args end end view :edit_nests_button do |args| if (nests = card.fetch(:trait=>:includes)) && nests.item_names.present? pill_view_link 'nests', :edit_nests, args end end view :type_link do |args| card_link(card.type_name, :text=>"Type: #{card.type_name}", :class=>'navbar-link') + view_link(glyphicon('edit'),'edit_type', :class=>'navbar-link slotter', 'data-toggle'=>'tooltip', :title=>'edit type') end def toolbar_button text, symbol, hide, tag_args tag_args[:class] = [ tag_args[:class], 'btn btn-default' ].compact * ' ' tag_args[:title] ||= text link_text = "#{glyphicon symbol}#{text}" if cardname = tag_args.delete(:page) card_link cardname, :class=>klass, :text=>link_text elsif viewname = tag_args.delete(:view) tag_args[:path_opts] ||= {:slot=>{:show=>:toolbar}} view_link link_text, viewname, tag_args else path_opts = tag_args.delete(:path_opts) || {} path_opts.merge! :action=>tag_args.delete(:action) link_to link_text, path_opts, tag_args end end def pill_view_link name, view, args active_view = args[:active_toolbar_view] || args[:home_view] opts = {:class=>'slotter', :role=>'pill'} li_pill view_link(name, view, opts), active_view == view end def account_pill name, active=false, path_opts={} opts = {:text=>name, :role=>'pill', :remote=>true, :path_opts=>path_opts} opts[:path_opts][:slot] ||= {} opts[:path_opts][:slot][:hide] = "toggle #{opts[:path_opts][:slot][:hide]}" li_pill card_link("#{card.name}+*#{name}", opts), active end def li_pill content, active "
  • #{content}
  • " end def pill_dropdown name, items, active=false %{ } end def btn_dropdown name, icon, items, opts={} %{
    #{ dropdown_list items, opts[:class] }
    } end def dropdown_list items, extra_css_class=nil if items.kind_of? Array items = items.map {|item| "
  • #{item}
  • "}.join "\n" end %{ } end def toolbar_pin_link %{
  • #{glyphicon 'pushpin'}
  • } end def edit_toolbar_pin_link %{
  • #{glyphicon 'pushpin'}
  • } end def edit_toolbar_close_link link = view_link glyphicon('remove', 'hidden-xs'), :home, :path_opts=>{:slot=>{:hide=>:edit_toolbar}} "
  • #{link}
  • " end def edit_toolbar_autosave_link link = view_link('autosaved draft', :edit, :path_opts=>{:edit_draft=>true, :slot=>{:show=>:edit_toolbar}}, :class=>'navbar-link slotter') "
  • #{link}
  • " end end