bootstrap_admin 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
| @@ -20,105 +20,109 @@ module BootstrapAdmin::MenuHelper | |
| 20 20 | 
             
              end
         | 
| 21 21 |  | 
| 22 22 | 
             
              private
         | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 23 | 
            +
              # =============================================================================
         | 
| 24 | 
            +
              def build_bootstrap_admin_menu_from_controller_names
         | 
| 25 | 
            +
                namespace = BootstrapAdmin.admin_namespace
         | 
| 26 | 
            +
                Dir["./app/controllers/#{namespace}/**/*.rb"].each do |controller|
         | 
| 27 | 
            +
                  require controller
         | 
| 28 | 
            +
                end
         | 
| 29 29 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 30 | 
            +
                yml_menu = AdminController.descendants.map do |controller|
         | 
| 31 | 
            +
                  ename = controller.name.demodulize.gsub("Controller","").singularize
         | 
| 32 | 
            +
                  "- :item: #{ename}"
         | 
| 33 | 
            +
                end.join("\n")
         | 
| 34 34 |  | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 35 | 
            +
                @bootstrap_admin_menu_items = YAML.load(yml_menu)
         | 
| 36 | 
            +
              end
         | 
| 37 37 |  | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
                  @bootstrap_admin_menu_load_timestamp = Time.now
         | 
| 38 | 
            +
              # =============================================================================
         | 
| 39 | 
            +
              def load_bootstrap_admin_menu_items
         | 
| 40 | 
            +
                @bootstrap_admin_menu_items = YAML.load_file(BOOTSTRAP_ADMIN_MENU_FILE)
         | 
| 41 | 
            +
                unless @bootstrap_admin_menu_items
         | 
| 42 | 
            +
                  build_bootstrap_admin_menu_from_controller_names
         | 
| 45 43 | 
             
                end
         | 
| 44 | 
            +
                @bootstrap_admin_menu_load_timestamp = Time.now
         | 
| 45 | 
            +
              end
         | 
| 46 46 |  | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
                  end
         | 
| 53 | 
            -
                  @bootstrap_admin_menu_items
         | 
| 47 | 
            +
              # =============================================================================
         | 
| 48 | 
            +
              def bootstrap_admin_menu_items
         | 
| 49 | 
            +
                if @bootstrap_admin_menu_load_timestamp.nil? or
         | 
| 50 | 
            +
                    File.mtime(BOOTSTRAP_ADMIN_MENU_FILE) > @bootstrap_admin_menu_load_timestamp
         | 
| 51 | 
            +
                  load_bootstrap_admin_menu_items
         | 
| 54 52 | 
             
                end
         | 
| 53 | 
            +
                @bootstrap_admin_menu_items
         | 
| 54 | 
            +
              end
         | 
| 55 55 |  | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
                    end
         | 
| 56 | 
            +
              # =============================================================================
         | 
| 57 | 
            +
              def bootstrap_admin_menu_item row
         | 
| 58 | 
            +
                if respond_to?(:cannot?) && cannot?(:read, item_class(row))
         | 
| 59 | 
            +
                  "".html_safe
         | 
| 60 | 
            +
                else
         | 
| 61 | 
            +
                  content_tag(:li) do
         | 
| 62 | 
            +
                    bootstrap_admin_menu_link row
         | 
| 64 63 | 
             
                  end
         | 
| 65 64 | 
             
                end
         | 
| 65 | 
            +
              end
         | 
| 66 66 |  | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 67 | 
            +
              # =============================================================================
         | 
| 68 | 
            +
              def bootstrap_admin_menu_dropdown row
         | 
| 69 | 
            +
                content_tag(:li, :class=>"dropdown", :"data-dropdown"=>"dropdown") do
         | 
| 70 | 
            +
                  bootstrap_admin_menu_link(row) +
         | 
| 71 71 | 
             
                    content_tag(:ul, :class=>"dropdown-menu") do
         | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
                    end
         | 
| 72 | 
            +
                    row[:item].map do |sub|
         | 
| 73 | 
            +
                      if sub[:item].is_a? Symbol
         | 
| 74 | 
            +
                        bootstrap_admin_menu_separator sub
         | 
| 75 | 
            +
                      else
         | 
| 76 | 
            +
                        bootstrap_admin_menu_item sub
         | 
| 77 | 
            +
                      end
         | 
| 78 | 
            +
                    end.join.html_safe
         | 
| 80 79 | 
             
                  end
         | 
| 81 80 | 
             
                end
         | 
| 81 | 
            +
              end
         | 
| 82 82 |  | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 83 | 
            +
              # =============================================================================
         | 
| 84 | 
            +
              def bootstrap_admin_menu_separator row
         | 
| 85 | 
            +
                content_tag(:li, :class => row[:item]){""}
         | 
| 86 | 
            +
              end
         | 
| 87 87 |  | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
                            end
         | 
| 96 | 
            -
                    url       = row[:url  ] || "#"
         | 
| 97 | 
            -
                    css_class = row[:class] || "dropdown-toggle"
         | 
| 98 | 
            -
                    data_attr = { :toggle => "dropdown" }
         | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
                  else #then its a resource link.
         | 
| 102 | 
            -
                    model_class = if row[:namespace]
         | 
| 103 | 
            -
                                    "#{row[:namespace]}::#{row[:item]}".classify.constantize
         | 
| 104 | 
            -
                                  else
         | 
| 105 | 
            -
                                    row[:item].classify.constantize
         | 
| 106 | 
            -
                                  end 
         | 
| 107 | 
            -
             | 
| 108 | 
            -
                    model_symbol = row[:item].underscore.pluralize.to_sym
         | 
| 109 | 
            -
             | 
| 110 | 
            -
                    label = if row[:label].is_a? Symbol
         | 
| 111 | 
            -
                              t row[:label]
         | 
| 112 | 
            -
                            else
         | 
| 113 | 
            -
                              row[:label] || model_class.model_name.human.pluralize
         | 
| 114 | 
            -
                            end
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                    url =  row[:url] || bootstrap_url_for(:controller => "#{row[:namespace] || BootstrapAdmin.admin_namespace}::#{row[:item]}".underscore.pluralize)
         | 
| 117 | 
            -
                    css_class = row[:class]
         | 
| 118 | 
            -
                    data_attr = {}
         | 
| 88 | 
            +
              # =============================================================================
         | 
| 89 | 
            +
              def bootstrap_admin_menu_link row
         | 
| 90 | 
            +
                if row[:item].is_a? Array #then its a dropdown menu
         | 
| 91 | 
            +
                  label = if row[:label].is_a? Symbol
         | 
| 92 | 
            +
                    t row[:label]
         | 
| 93 | 
            +
                  else
         | 
| 94 | 
            +
                    row[:label]
         | 
| 119 95 | 
             
                  end
         | 
| 96 | 
            +
                  url       = row[:url  ] || "#"
         | 
| 97 | 
            +
                  css_class = row[:class] || "dropdown-toggle"
         | 
| 98 | 
            +
                  data_attr = { :toggle => "dropdown" }
         | 
| 99 | 
            +
             | 
| 120 100 |  | 
| 121 | 
            -
             | 
| 101 | 
            +
                else #then its a resource link.
         | 
| 102 | 
            +
                  model_class = item_class row
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  label = if row[:label].is_a? Symbol
         | 
| 105 | 
            +
                    t row[:label]
         | 
| 106 | 
            +
                  else
         | 
| 107 | 
            +
                    row[:label] || model_class.model_name.human.pluralize
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                  ctrl = (row[:controller] || "#{row[:namespace] || BootstrapAdmin.admin_namespace}::#{row[:item]}").underscore.pluralize
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                  url =  row[:url] || bootstrap_url_for(:controller => ctrl)
         | 
| 113 | 
            +
                  css_class = row[:class]
         | 
| 114 | 
            +
                  data_attr = {}
         | 
| 122 115 | 
             
                end
         | 
| 123 116 |  | 
| 117 | 
            +
                link_to label, url, :class => css_class, :data => data_attr
         | 
| 118 | 
            +
              end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
              # =============================================================================
         | 
| 121 | 
            +
              def item_class row
         | 
| 122 | 
            +
                if row[:namespace]
         | 
| 123 | 
            +
                  "#{row[:namespace]}::#{row[:item]}".classify.constantize
         | 
| 124 | 
            +
                else
         | 
| 125 | 
            +
                  row[:item].classify.constantize
         | 
| 126 | 
            +
                end
         | 
| 127 | 
            +
              end
         | 
| 124 128 | 
             
            end
         |