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.
- checksums.yaml +4 -4
- data/app/assets/images/push_type/pushtype-favicon.png +0 -0
- data/app/assets/images/push_type/pushtype-logo.svg +23 -0
- data/app/controllers/concerns/push_type/application_controller_methods.rb +58 -2
- data/app/controllers/front_end_controller.rb +25 -8
- data/app/fields/push_type/date_field.rb +1 -0
- data/app/models/push_type/node.rb +11 -2
- data/app/views/push_type/setup.html.erb +129 -0
- data/config/locales/en.yml +9 -0
- data/lib/generators/push_type/field/USAGE +9 -0
- data/lib/generators/push_type/field/field_generator.rb +9 -0
- data/lib/generators/push_type/field/templates/field.rb +15 -0
- data/lib/generators/push_type/node/USAGE +2 -1
- data/lib/generators/push_type/node/node_generator.rb +7 -0
- data/lib/generators/push_type/node/templates/node.rb +3 -1
- data/lib/generators/push_type/node/templates/template.html.erb +8 -1
- data/lib/push_type/core/engine.rb +12 -2
- data/lib/push_type/core.rb +5 -0
- data/lib/push_type/menu_builder/dsl/menu.rb +32 -0
- data/lib/push_type/menu_builder/dsl/menu_item.rb +45 -0
- data/lib/push_type/menu_builder/helpers.rb +11 -0
- data/lib/push_type/menu_builder/menu.rb +57 -0
- data/lib/push_type/menu_builder/menu_item.rb +39 -0
- data/lib/push_type/menu_builder/menu_renderer.rb +47 -0
- data/lib/push_type/menu_builder.rb +17 -0
- data/lib/push_type/version.rb +1 -1
- data/test/controllers/front_end_controller_test.rb +16 -7
- data/test/dummy/app/models/page.rb +1 -1
- data/test/dummy/app/views/nodes/page.html.erb +3 -1
- data/test/dummy/config/initializers/push_type.rb +1 -1
- data/test/dummy/config/secrets.yml +2 -2
- data/test/dummy/db/schema.rb +1 -1
- data/test/dummy/log/test.log +2032 -67930
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/generators/app/models/home_page.rb +3 -1
- data/test/dummy/tmp/generators/app/views/nodes/home_page.html.erb +11 -1
- data/test/lib/generators/push_type/field_generator_test.rb +16 -0
- data/test/lib/generators/push_type/node_generator_test.rb +5 -1
- data/test/lib/push_type/menu_builder/menu_dsl_test.rb +25 -0
- data/test/lib/push_type/menu_builder/menu_item_dsl_test.rb +35 -0
- data/test/lib/push_type/menu_builder/menu_item_test.rb +40 -0
- data/test/lib/push_type/menu_builder/menu_renderer_test.rb +26 -0
- data/test/lib/push_type/menu_builder/menu_test.rb +62 -0
- data/test/lib/push_type/menu_builder_test.rb +20 -0
- data/test/models/concerns/push_type/nestable_test.rb +9 -4
- data/test/models/concerns/push_type/templatable_test.rb +9 -5
- data/test/models/push_type/node_test.rb +16 -0
- metadata +38 -10
- /data/test/dummy/db/migrate/{20150209204334_create_push_type_users.push_type.rb → 20150222152443_create_push_type_users.push_type.rb} +0 -0
- /data/test/dummy/db/migrate/{20150209204335_create_push_type_nodes.push_type.rb → 20150222152444_create_push_type_nodes.push_type.rb} +0 -0
- /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
- /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
|
data/lib/push_type/version.rb
CHANGED
@@ -28,14 +28,18 @@ describe FrontEndController do
|
|
28
28
|
|
29
29
|
describe 'node filters' do
|
30
30
|
ApplicationController.module_eval do
|
31
|
-
|
32
|
-
|
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
|
35
|
-
@foo[:
|
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
|
@@ -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 = '
|
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:
|
14
|
+
secret_key_base: 9f2269b202df34c58227ae618ed373a51840c6fd98ca1d2295d9f6a550a2be9890ef2fb4aabca477caa5ffdee94f0d7f8d9aa282c555b9aacd7131a5dff1480b
|
15
15
|
|
16
16
|
test:
|
17
|
-
secret_key_base:
|
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.
|
data/test/dummy/db/schema.rb
CHANGED
@@ -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:
|
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"
|