push_type_core 0.2.1 → 0.3.1

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/push_type/pushtype-favicon.png +0 -0
  3. data/app/assets/images/push_type/pushtype-logo.svg +23 -0
  4. data/app/controllers/concerns/push_type/application_controller_methods.rb +58 -2
  5. data/app/controllers/front_end_controller.rb +25 -8
  6. data/app/fields/push_type/date_field.rb +1 -0
  7. data/app/models/push_type/node.rb +11 -2
  8. data/app/views/push_type/setup.html.erb +129 -0
  9. data/config/locales/en.yml +9 -0
  10. data/lib/generators/push_type/field/USAGE +9 -0
  11. data/lib/generators/push_type/field/field_generator.rb +9 -0
  12. data/lib/generators/push_type/field/templates/field.rb +15 -0
  13. data/lib/generators/push_type/node/USAGE +2 -1
  14. data/lib/generators/push_type/node/node_generator.rb +7 -0
  15. data/lib/generators/push_type/node/templates/node.rb +3 -1
  16. data/lib/generators/push_type/node/templates/template.html.erb +8 -1
  17. data/lib/push_type/core/engine.rb +12 -2
  18. data/lib/push_type/core.rb +5 -0
  19. data/lib/push_type/menu_builder/dsl/menu.rb +32 -0
  20. data/lib/push_type/menu_builder/dsl/menu_item.rb +45 -0
  21. data/lib/push_type/menu_builder/helpers.rb +11 -0
  22. data/lib/push_type/menu_builder/menu.rb +57 -0
  23. data/lib/push_type/menu_builder/menu_item.rb +39 -0
  24. data/lib/push_type/menu_builder/menu_renderer.rb +47 -0
  25. data/lib/push_type/menu_builder.rb +17 -0
  26. data/lib/push_type/version.rb +1 -1
  27. data/test/controllers/front_end_controller_test.rb +16 -7
  28. data/test/dummy/app/models/page.rb +1 -1
  29. data/test/dummy/app/views/nodes/page.html.erb +3 -1
  30. data/test/dummy/config/initializers/push_type.rb +1 -1
  31. data/test/dummy/config/secrets.yml +2 -2
  32. data/test/dummy/db/schema.rb +1 -1
  33. data/test/dummy/log/test.log +2032 -67930
  34. data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  35. data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  36. data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  37. data/test/dummy/tmp/generators/app/models/home_page.rb +3 -1
  38. data/test/dummy/tmp/generators/app/views/nodes/home_page.html.erb +11 -1
  39. data/test/lib/generators/push_type/field_generator_test.rb +16 -0
  40. data/test/lib/generators/push_type/node_generator_test.rb +5 -1
  41. data/test/lib/push_type/menu_builder/menu_dsl_test.rb +25 -0
  42. data/test/lib/push_type/menu_builder/menu_item_dsl_test.rb +35 -0
  43. data/test/lib/push_type/menu_builder/menu_item_test.rb +40 -0
  44. data/test/lib/push_type/menu_builder/menu_renderer_test.rb +26 -0
  45. data/test/lib/push_type/menu_builder/menu_test.rb +62 -0
  46. data/test/lib/push_type/menu_builder_test.rb +20 -0
  47. data/test/models/concerns/push_type/nestable_test.rb +9 -4
  48. data/test/models/concerns/push_type/templatable_test.rb +9 -5
  49. data/test/models/push_type/node_test.rb +16 -0
  50. metadata +38 -10
  51. /data/test/dummy/db/migrate/{20150209204334_create_push_type_users.push_type.rb → 20150222152443_create_push_type_users.push_type.rb} +0 -0
  52. /data/test/dummy/db/migrate/{20150209204335_create_push_type_nodes.push_type.rb → 20150222152444_create_push_type_nodes.push_type.rb} +0 -0
  53. /data/test/dummy/db/migrate/{20150209204336_create_push_type_node_hierarchies.push_type.rb → 20150222152445_create_push_type_node_hierarchies.push_type.rb} +0 -0
  54. /data/test/dummy/db/migrate/{20150209204337_create_push_type_assets.push_type.rb → 20150222152446_create_push_type_assets.push_type.rb} +0 -0
@@ -0,0 +1,47 @@
1
+ require 'push_type/menu_builder/dsl/menu_item'
2
+
3
+ module PushType
4
+ module MenuBuilder
5
+
6
+ class MenuRenderer
7
+
8
+ def initialize(view)
9
+ @view = view
10
+ end
11
+
12
+ def render_menu(menu_or_key)
13
+ @menu = case menu_or_key
14
+ when Menu then menu_or_key
15
+ when Symbol then PushType::MenuBuilder.select(menu_or_key)
16
+ else raise('menu_or_key must be a menu of symbol')
17
+ end
18
+
19
+ @view.content_tag @menu.element, @menu.html_options do
20
+ @menu.items.inject('') do |str, item|
21
+ str << render_item(item)
22
+ end.html_safe
23
+ end
24
+ end
25
+
26
+ def render_item(item)
27
+ text = get_item_value(:text, item)
28
+ link = get_item_value(:link, item)
29
+
30
+ css_class = [
31
+ item.item_options[:class],
32
+ ( get_item_value(:active, item) ? item.active_class || @menu.active_class : nil )
33
+ ].compact.join(' ')
34
+ options = item.item_options.merge class: ( css_class if css_class.present? )
35
+
36
+ @view.content_tag item.element, @view.link_to(text, link, item.link_options), options
37
+ end
38
+
39
+ def get_item_value(key, item)
40
+ val = item.instance_variable_get(:"@#{ key }")
41
+ val.respond_to?(:call) ? @view.instance_exec(&val) : val
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,17 @@
1
+ require 'push_type/menu_builder/menu'
2
+ require 'push_type/menu_builder/menu_item'
3
+ require 'push_type/menu_builder/menu_renderer'
4
+ require 'push_type/menu_builder/helpers'
5
+
6
+ module PushType
7
+ module MenuBuilder
8
+ @@menus = {}
9
+
10
+ def self.select(key, &block)
11
+ k = key.to_sym
12
+ @@menus[k] ||= PushType::MenuBuilder::Menu.new
13
+ @@menus[k].build(&block) if block_given?
14
+ @@menus[k]
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module PushType
2
- VERSION = '0.2.1'
2
+ VERSION = '0.3.1'
3
3
  end
@@ -28,14 +28,18 @@ describe FrontEndController do
28
28
 
29
29
  describe 'node filters' do
30
30
  ApplicationController.module_eval do
31
- def before_node_load
32
- @foo = {}
31
+ before_node_load { @foo = {} }
32
+ before_node_action { @foo[:node_action] = true }
33
+ before_node_action(only: :page) { @foo[:page_action] = true }
34
+ before_node_action(except: :page) { @foo[:except_page_action] = true }
35
+ before_node_action(except: :foo) { @foo[:except_foo_action] = true }
36
+ before_node_action :test_1, :test_2
37
+ private
38
+ def test_1
39
+ @foo[:test_1] = true
33
40
  end
34
- def before_node_action
35
- @foo[:node_action] = true
36
- end
37
- def before_page_action
38
- @foo[:page_action] = true
41
+ def test_2
42
+ @foo[:test_2] = true
39
43
  end
40
44
  end
41
45
  let(:page) { FactoryGirl.create :published_node, type: 'Page' }
@@ -43,6 +47,11 @@ describe FrontEndController do
43
47
  it { assigns[:foo].must_be_instance_of Hash }
44
48
  it { assigns[:foo][:node_action].must_equal true }
45
49
  it { assigns[:foo][:page_action].must_equal true }
50
+ it { assigns[:foo][:foo_action].wont_be :present? }
51
+ it { assigns[:foo][:except_page_action].wont_be :present? }
52
+ it { assigns[:foo][:except_foo_action].must_equal true }
53
+ it { assigns[:foo][:test_1].must_equal true }
54
+ it { assigns[:foo][:test_2].must_equal true }
46
55
  end
47
56
 
48
57
  end
@@ -4,7 +4,7 @@ class Page < PushType::Node
4
4
  # has_child_nodes :all
5
5
 
6
6
  # Set custom fields
7
- # field :description
8
7
  # field :body, :text, validates: { presence: true }
8
+
9
9
 
10
10
  end
@@ -1,3 +1,5 @@
1
1
  <h1><%= @node.title %></h1>
2
2
  <p>This is a generated Page template.</p>
3
- <p>Find me at: app/views/nodes/page.html.erb</p>
3
+ <p>Find me at: app/views/nodes/page.html.erb</p>
4
+
5
+
@@ -28,6 +28,6 @@ PushType.setup do |config|
28
28
  # secret_access_key: ENV['SECRET_ACCESS_KEY_ID']
29
29
  # }
30
30
 
31
- # config.dragonfly_secret = '2fcd8782bda2cc7d4af5e73debc5f20ee72ed291ae1bf5c61c70131294fcde45'
31
+ # config.dragonfly_secret = '4fdcaca11213b1e5ec77c323794de105bdb7d6662e9e3969f2027d0f24c09b28'
32
32
 
33
33
  end
@@ -11,10 +11,10 @@
11
11
  # if you're sharing your code publicly.
12
12
 
13
13
  development:
14
- secret_key_base: 0aa228f56c34f505dfbe61ac5f9833cf6536d4c55c52e6b2af9ebf1c8baf2c4ba4a395a361955b120b344c2e6b548d9c0547fca8d8da5dcbace5718ea9bd888f
14
+ secret_key_base: 9f2269b202df34c58227ae618ed373a51840c6fd98ca1d2295d9f6a550a2be9890ef2fb4aabca477caa5ffdee94f0d7f8d9aa282c555b9aacd7131a5dff1480b
15
15
 
16
16
  test:
17
- secret_key_base: 320fa42023072869c0c5042f0523a849026b8f3b2718c8e70863035f966aca0b9924c7aee6572c19823837a04c40e88efa37169a099b9e02164a7ef7d023dc4b
17
+ secret_key_base: 4758c4c94231cdf06718d3486fefdbc1d649dd798cf0943ea020ebf2105cb8e2371fd2fcc26994bc0f6c302a712f4130f4463497ef99aaa80892aed0278774c1
18
18
 
19
19
  # Do not keep production secrets in the repository,
20
20
  # instead read values from the environment.
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20150209204337) do
14
+ ActiveRecord::Schema.define(version: 20150222152446) do
15
15
 
16
16
  # These are extensions that must be enabled in order to support this database
17
17
  enable_extension "plpgsql"