refinerycms-llama_menus 1.0.7 → 1.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f5ecb6806aedd8b89ec56bf622659bca67f01a2a
4
- data.tar.gz: b8592db93ca46539c4ffd0ac74ca3450541e70bc
3
+ metadata.gz: 545d8adb97ddcc01a6de710a40db79d6a19d99d9
4
+ data.tar.gz: b36860881f74723f69559c494145df1b04504542
5
5
  SHA512:
6
- metadata.gz: fce6d9c0abb305b5c9ba371dfb55d94fd0e8427754c2e8b6f263c721e4bde1b53e7f63b3846f78d2bbd2a7b3d5f0703ee89762956f7da2a37b7902747ac05add
7
- data.tar.gz: fb1975d7ea4fd03ef6a7ca1b5ea021aed9904881903b6b3e17dbbb784c5f75b3f23e0c2de5d8a04bea1c742f84ea4f9f8e6a661f57e16777c638a28408469641
6
+ metadata.gz: 47dfeaf24451898dd9dcc2a7cf00b6dce8a5a92d1eac001d10062956a35ebe86537c57be6447575c53d402de9f5cd64d73b9ab8f2f91f5ce8e131aa02916a799
7
+ data.tar.gz: 3846fcfc3f52b2d98f0ba6e650f26b6af8114f28b03f46e6c76b27277fcb726c868d0ea323828913740b9237477cf6020fcb485d77b21a3eb636011661a85a27
@@ -0,0 +1,6 @@
1
+ #content .menu-item-edit {
2
+ .field {
3
+ width: inherit;
4
+ display: inline-block;
5
+ }
6
+ }
@@ -10,6 +10,15 @@ module Refinery
10
10
  blank + rows
11
11
  end
12
12
 
13
+ def link_to_add_sub_fields(name, f, association)
14
+ new_object = f.object.send(association).klass.new
15
+ id = new_object.object_id
16
+ fields = f.fields_for(association, new_object, child_index: id) do |builder|
17
+ render("sub_" + association.to_s.singularize + "_fields", f: builder)
18
+ end
19
+ link_to(name, '#', class: "add_fields", data: {id: id, add: true, fields: fields.gsub("\n", "")})
20
+ end
21
+
13
22
  end
14
23
  end
15
24
  end
@@ -9,7 +9,7 @@ module Refinery
9
9
 
10
10
  validates :name, :presence => true, :uniqueness => true
11
11
 
12
- has_many :menu_items, class_name: 'Refinery::Menus::MenuItem', dependent: :destroy
12
+ has_many :menu_items, as: :menuable, class_name: 'Refinery::Menus::MenuItem', dependent: :destroy
13
13
  accepts_nested_attributes_for :menu_items, allow_destroy: true
14
14
  end
15
15
  end
@@ -3,15 +3,20 @@ module Refinery
3
3
  class MenuItem < ActiveRecord::Base
4
4
  self.table_name = 'refinery_menu_items'
5
5
 
6
- attr_accessible :label, :position, :linkable_type, :linkable_id, :menu_id, :url, :linkable
6
+ attr_accessible :label, :position, :linkable_type, :linkable_id,
7
+ :url, :linkable, :menuable, :menu_items_attributes
7
8
 
8
- belongs_to :menu, class_name: 'Refinery::Menus::Menu'
9
+ belongs_to :menuable, polymorphic: true
9
10
  belongs_to :linkable, polymorphic: true
11
+ has_many :menu_items, as: :menuable, class_name: 'Refinery::Menus::MenuItem', dependent: :destroy
10
12
 
11
13
  validates :label, :presence => true
12
14
  validates :linkable, :presence => {:unless => 'url?'}
13
15
  validates :url, :presence => {:unless => 'linkable_type?'}
14
16
 
17
+ alias_attribute :sub_menu_items, :menu_items
18
+ accepts_nested_attributes_for :menu_items, allow_destroy: true
19
+
15
20
  end
16
21
  end
17
22
  end
@@ -1,40 +1,14 @@
1
- <fieldset class='nested' data-nested-item='true' data-sortable-item='true'>
2
- <%= refinery_icon_tag 'arrow_switch', 'data-handle' => true, :title => 'Reorder', :class => 'handle' %>
3
- <%= f.hidden_field :position, 'data-position' => true %>
4
- <div class='field'>
5
- <span class='label_with_help'>
6
- <%= f.label :label %>
7
- <%= refinery_help_tag t('refinery.menus.admin.tooltips.label') %>
8
- </span>
9
- <%= f.text_field :label %>
10
- </div>
11
- <div class='field'>
12
- <span class='label_with_help'>
13
- <%= f.label :url %>
14
- <%= refinery_help_tag t('refinery.menus.admin.tooltips.url') %>
15
- </span>
16
- <%= f.text_field :url %>
17
- </div>
18
-
19
- <% if Refinery::Menus.linkable_classes.any? %>
20
- <% if Refinery::Menus.linkable_classes.many? %>
21
- <div class='field'>
22
- <span class='label_with_help'>
23
- <%= f.label :linkable_type %>
24
- <%= refinery_help_tag t('refinery.menus.admin.tooltips.linkable_type') %>
25
- </span>
26
- </div>
27
- <% else %>
28
- <%= f.hidden_field :linkable_type, value: Refinery::Menus.linkables.first.class_name %>
29
- <% end %>
30
- <div class='field'>
31
- <%= f.label :linkable_id %>
32
- <% Refinery::Menus.linkable_classes.each do |linkable_class| %>
33
- <%= f.select :linkable_id, options_for_select_from_linkable_class(linkable_class) %>
34
- <% end %>
35
- </div>
36
- <% end %>
1
+ <fieldset class='nested menu-item-edit' data-nested-item='true' data-sortable-item='true'>
37
2
 
3
+ <%= render 'refinery/menus/admin/menus/shared_menu_item_fields', :f => f %>
38
4
 
39
- <%= link_to_remove_field 'Remove this menu item', f %>
5
+ <div>
6
+ <% if f.object.sub_menu_items.present? %>
7
+ <%= f.label :sub_menu_items %>
8
+ <%= f.fields_for :menu_items do |j| %>
9
+ <%= render 'refinery/menus/admin/menus/sub_menu_item_fields', :f => j %>
10
+ <% end %>
11
+ <% end %>
12
+ <%= link_to_add_sub_fields 'Add sub-menu item', f, :menu_items %>
13
+ </div>
40
14
  </fieldset>
@@ -0,0 +1,38 @@
1
+ <div class="handle">
2
+ <%= refinery_icon_tag 'arrow_switch', 'data-handle' => true, :title => 'Reorder' %>
3
+ <%= link_to_remove_field refinery_icon_tag('bin_closed', 'data-handle' => true, :title => 'Delete'), f %>
4
+ <%= f.hidden_field :position, 'data-position' => true %>
5
+ </div>
6
+ <div class='field'>
7
+ <span class='label_with_help'>
8
+ <%= f.label :label %>
9
+ <%= refinery_help_tag t('refinery.menus.admin.tooltips.label') %>
10
+ </span>
11
+ <%= f.text_field :label %>
12
+ </div>
13
+ <div class='field'>
14
+ <span class='label_with_help'>
15
+ <%= f.label :url %>
16
+ <%= refinery_help_tag t('refinery.menus.admin.tooltips.url') %>
17
+ </span>
18
+ <%= f.text_field :url %>
19
+ </div>
20
+
21
+ <% if Refinery::Menus.linkable_classes.any? %>
22
+ <% if Refinery::Menus.linkable_classes.many? %>
23
+ <div class='field'>
24
+ <span class='label_with_help'>
25
+ <%= f.label :linkable_type %>
26
+ <%= refinery_help_tag t('refinery.menus.admin.tooltips.linkable_type') %>
27
+ </span>
28
+ </div>
29
+ <% else %>
30
+ <%= f.hidden_field :linkable_type, value: Refinery::Menus.linkables.first.class_name %>
31
+ <% end %>
32
+ <div class='field'>
33
+ <%= f.label :linkable_id %>
34
+ <% Refinery::Menus.linkable_classes.each do |linkable_class| %>
35
+ <%= f.select :linkable_id, options_for_select_from_linkable_class(linkable_class) %>
36
+ <% end %>
37
+ </div>
38
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <fieldset class='nested menu-item-edit' data-nested-item='true' data-sortable-item='true'>
2
+ <%= render 'refinery/menus/admin/menus/shared_menu_item_fields', :f => f %>
3
+ </fieldset>
@@ -12,3 +12,11 @@ nav.navbar.navbar-default role='navigation'
12
12
  - Refinery::Menus::MenuItemDecorator.decorate_collection(widget.menu_widget.menu.menu_items.order(:position)).each do |menu_item|
13
13
  li class=('active' if current_page?(menu_item.url(refinery)))
14
14
  = link_to menu_item.label, menu_item.url(refinery)
15
+ - if current_page?(menu_item.url(refinery))
16
+ - content_for :sub_menu do
17
+ .collapse.navbar-collapse#bs-example-navbar-collapse-2
18
+ ul.nav.navbar-nav
19
+ - Refinery::Menus::MenuItemDecorator.decorate_collection(menu_item.menu_items.order(:position)).each do |sub_menu_item|
20
+ = content_tag :li, class: ('active' if @page && @page.try(:self_and_ancestors).try(:include?, sub_menu_item.linkable)) do
21
+ = link_to sub_menu_item.label, sub_menu_item.url(refinery)
22
+ = yield :sub_menu
@@ -0,0 +1,8 @@
1
+ class AddMenuableIdAndTypeToMenuItems < ActiveRecord::Migration
2
+
3
+ def change
4
+ rename_column :refinery_menu_items, :menu_id, :menuable_id
5
+ add_column :refinery_menu_items, :menuable_type, :string
6
+ end
7
+
8
+ end
@@ -23,6 +23,10 @@ module Refinery
23
23
  Refinery.register_extension(Refinery::Menus)
24
24
  end
25
25
 
26
+ Refinery::Core.configure do |config| # # Register extra javascript for backend
27
+ config.register_stylesheet "refinery/menus", :media => 'screen'
28
+ end
29
+
26
30
  config.to_prepare do
27
31
  Dir["#{File.dirname(__FILE__)}/../../../app/helpers/**/*.rb"].each { |f| load(f) }
28
32
  Dir["#{File.dirname(__FILE__)}/../../../app/decorators/**/*.rb"].each { |f| load(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refinerycms-llama_menus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Bolt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-28 00:00:00.000000000 Z
11
+ date: 2014-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: refinerycms-core
@@ -72,6 +72,7 @@ executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []
74
74
  files:
75
+ - app/assets/stylesheets/refinery/menus.css.scss
75
76
  - app/controllers/refinery/menus/admin/menus_controller.rb
76
77
  - app/controllers/refinery/menus/menus_controller.rb
77
78
  - app/decorators/refinery/menus/menu_item_decorator.rb
@@ -85,7 +86,9 @@ files:
85
86
  - app/views/refinery/menus/admin/menus/_menu_item_fields.html.erb
86
87
  - app/views/refinery/menus/admin/menus/_menus.html.erb
87
88
  - app/views/refinery/menus/admin/menus/_records.html.erb
89
+ - app/views/refinery/menus/admin/menus/_shared_menu_item_fields.html.erb
88
90
  - app/views/refinery/menus/admin/menus/_sortable_list.html.erb
91
+ - app/views/refinery/menus/admin/menus/_sub_menu_item_fields.html.erb
89
92
  - app/views/refinery/menus/admin/menus/edit.html.erb
90
93
  - app/views/refinery/menus/admin/menus/index.html.erb
91
94
  - app/views/refinery/menus/admin/menus/new.html.erb
@@ -106,6 +109,7 @@ files:
106
109
  - db/migrate/1_create_menus_menus.rb
107
110
  - db/migrate/2_create_menus_menu_items.rb
108
111
  - db/migrate/3_create_menus_menu_widgets.rb
112
+ - db/migrate/4_add_menuable_id_and_type_to_menu_items.rb
109
113
  - db/seeds.rb
110
114
  - lib/generators/refinery/menus_generator.rb
111
115
  - lib/generators/refinery/templates/config/initializers/refinery/menus.rb.erb