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.
- 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"
|