push_type_core 0.2.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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"