neuron 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/neuron/authorization.rb +13 -2
- data/lib/neuron/controller.rb +11 -0
- data/lib/neuron/railtie.rb +11 -0
- data/lib/neuron/resources.rb +3 -2
- data/lib/neuron/show_for/helper.rb +27 -0
- data/lib/neuron/show_for.rb +20 -0
- data/lib/neuron/version.rb +1 -1
- data/lib/neuron/view.rb +20 -6
- data/lib/neuron.rb +10 -23
- data/neuron.gemspec +2 -0
- metadata +23 -4
- data/lib/neuron/rails.rb +0 -10
data/lib/neuron/authorization.rb
CHANGED
@@ -12,9 +12,20 @@ module Neuron
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
if defined?(::Devise)
|
16
|
+
def access_denied(exception = nil)
|
17
|
+
if user_signed_in?
|
18
|
+
redirect_to '/422.html'
|
19
|
+
else
|
20
|
+
redirect_to new_user_session_path, alert: I18n.t('devise.failure.unauthenticated')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
else
|
24
|
+
def access_denied(exception = nil)
|
25
|
+
redirect_to '/422.html'
|
26
|
+
end
|
17
27
|
end
|
28
|
+
|
18
29
|
end
|
19
30
|
|
20
31
|
module View
|
data/lib/neuron/controller.rb
CHANGED
@@ -5,6 +5,17 @@ module Neuron
|
|
5
5
|
module Controller
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
|
8
|
+
def self.setup!
|
9
|
+
if defined?(::ActionController)
|
10
|
+
ActionController::Base.send(:include, Neuron::Controller)
|
11
|
+
if defined?(::InheritedResources)
|
12
|
+
ActionController::Base.send(:include, Neuron::Resources::Controller)
|
13
|
+
require 'neuron/integrations/cancan_inherited_resources' if defined?(::CanCan)
|
14
|
+
end
|
15
|
+
ActionController::Base.send(:include, Neuron::Authorization::Controller) if defined?(::CanCan)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
8
19
|
module ClassMethods
|
9
20
|
def append_neuron_view_path_resolver
|
10
21
|
append_view_path Neuron::Resolver.new
|
data/lib/neuron/resources.rb
CHANGED
@@ -48,6 +48,7 @@ module Neuron
|
|
48
48
|
options[:class] ||= resource_class
|
49
49
|
options[:by] = options[:by].to_sym
|
50
50
|
options[:as] ||= human(options[:class], options[:by])
|
51
|
+
html_options[:title] ||= human(options[:class], options[:by])
|
51
52
|
asc_orders = Array(params[:ascending]).map(&:to_sym)
|
52
53
|
desc_orders = Array(params[:descending]).map(&:to_sym)
|
53
54
|
ascending = asc_orders.include?(options[:by])
|
@@ -107,7 +108,7 @@ module Neuron
|
|
107
108
|
collection ||= self.collection
|
108
109
|
content_tag(:article, class: 'b-collection') do
|
109
110
|
''.html_safe.tap do |result|
|
110
|
-
result << content_tag(:header, collection_title(collection, tag), class: 'b-collection__header')
|
111
|
+
result << content_tag(:header, collection_title(collection, tag: tag), class: 'b-collection__header')
|
111
112
|
if block_given?
|
112
113
|
result << capture(&block)
|
113
114
|
else
|
@@ -130,7 +131,7 @@ module Neuron
|
|
130
131
|
result << title(nil,
|
131
132
|
resource: link_to(resource, canonical_path(resource)),
|
132
133
|
default: resource.to_s)
|
133
|
-
if (action == :show) && can?(:update, resource)
|
134
|
+
if (action == :show) && can?(:update, resource) && controller.respond_to?(:edit)
|
134
135
|
result << content_tag(:sup,
|
135
136
|
link_to(t(:edit,
|
136
137
|
object: resource,
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'neuron/show_for'
|
2
|
+
require 'show_for/helper'
|
3
|
+
|
4
|
+
module Neuron
|
5
|
+
module ShowFor
|
6
|
+
module Helper
|
7
|
+
# Creates a div around the object and yields a builder.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# show_for @user do |f|
|
11
|
+
# f.attribute :name
|
12
|
+
# f.attribute :email
|
13
|
+
# end
|
14
|
+
def show_for(object, html_options={}, &block)
|
15
|
+
tag = html_options.delete(:show_for_tag) || ::ShowFor.show_for_tag
|
16
|
+
|
17
|
+
html_options[:id] ||= dom_id(object, :show_for)
|
18
|
+
html_options[:class] = "show_for #{dom_class(object)} #{html_options[:class]}".strip
|
19
|
+
|
20
|
+
builder = html_options.delete(:builder) || ::ShowFor::Builder
|
21
|
+
content = capture(builder.new(object, self), &block)
|
22
|
+
|
23
|
+
content_tag(tag, content, html_options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'neuron'
|
2
|
+
require 'show_for'
|
3
|
+
|
4
|
+
module Neuron
|
5
|
+
module ShowFor
|
6
|
+
extend ActiveSupport::Autoload
|
7
|
+
|
8
|
+
autoload :Helper
|
9
|
+
|
10
|
+
def self.setup!
|
11
|
+
# Reconfigure ShowFor
|
12
|
+
ShowFor.wrapper_tag = :dl
|
13
|
+
ShowFor.label_tag = :dt
|
14
|
+
ShowFor.content_tag = :dd
|
15
|
+
ShowFor.separator = ''
|
16
|
+
|
17
|
+
Helper # loads improved ShowFor helper
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/neuron/version.rb
CHANGED
data/lib/neuron/view.rb
CHANGED
@@ -2,6 +2,18 @@ require 'neuron'
|
|
2
2
|
|
3
3
|
module Neuron
|
4
4
|
module View
|
5
|
+
extend ActiveSupport::Memoizable
|
6
|
+
|
7
|
+
def self.setup!
|
8
|
+
if defined?(::ActionView)
|
9
|
+
ActionView::Base.send(:include, Neuron::View)
|
10
|
+
ActionView::Base.send(:include, Neuron::Navigation::View)
|
11
|
+
ActionView::Base.send(:include, Neuron::Resources::View) if defined?(::InheritedResources)
|
12
|
+
ActionView::Base.send(:include, Neuron::Authorization::View) if defined?(::CanCan)
|
13
|
+
ActionView::Base.send(:include, Neuron::ShowFor::Helper) if defined?(::ShowFor)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
5
17
|
def block_modifiers(block, *modifiers)
|
6
18
|
klasses = [block]
|
7
19
|
if (options = modifiers.extract_options!).any?
|
@@ -28,24 +40,26 @@ module Neuron
|
|
28
40
|
def human(klass, attribute = nil)
|
29
41
|
attribute ? klass.human_attribute_name(attribute) : klass.name.human
|
30
42
|
end
|
31
|
-
|
32
|
-
# Build canonical path for given resource
|
33
|
-
def canonical_path(resource, options = {})
|
34
|
-
canonical_url(resource, options.merge(routing_type: :path))
|
35
|
-
end
|
43
|
+
memoize :human
|
36
44
|
|
37
45
|
# Build canonical url for given resource
|
38
46
|
def canonical_url(resource, options = {})
|
39
47
|
polymorphic_url(resource, options)
|
40
48
|
end
|
41
49
|
|
50
|
+
# Build canonical path for given resource
|
51
|
+
def canonical_path(resource, options = {})
|
52
|
+
canonical_url(resource, options.merge(routing_type: :path))
|
53
|
+
end
|
54
|
+
|
42
55
|
def view_name
|
43
56
|
{create: 'new', update: 'edit'}[action_name] || action_name
|
44
57
|
end
|
45
58
|
|
46
59
|
def controller_i18n_scope
|
47
|
-
|
60
|
+
controller.controller_path.gsub(%r{/}, '.')
|
48
61
|
end
|
62
|
+
memoize :controller_i18n_scope
|
49
63
|
|
50
64
|
def time(time, options = {})
|
51
65
|
format = options.delete(:format) { :short }
|
data/lib/neuron.rb
CHANGED
@@ -5,35 +5,22 @@ module Neuron
|
|
5
5
|
autoload :Authorization, 'neuron/authorization'
|
6
6
|
autoload :Controller, 'neuron/controller'
|
7
7
|
autoload :Navigation, 'neuron/navigation'
|
8
|
+
autoload :Railtie, 'neuron/railtie'
|
8
9
|
autoload :Resolver, 'neuron/resolver'
|
9
10
|
autoload :Resources, 'neuron/resources'
|
10
|
-
autoload :
|
11
|
+
autoload :ShowFor, 'neuron/show_for'
|
11
12
|
autoload :View, 'neuron/view'
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
class << self
|
15
|
+
def setup!
|
16
|
+
Neuron::Controller.setup!
|
17
|
+
Neuron::View.setup!
|
17
18
|
end
|
18
|
-
if defined?(ActionController)
|
19
|
-
ActionController::Base.send :include, Neuron::Controller
|
20
|
-
end
|
21
|
-
if defined?(InheritedResources)
|
22
|
-
ActionController::Base.send :include, Neuron::Resources::Controller
|
23
|
-
ActionView::Base.send :include, Neuron::Resources::View
|
24
|
-
if defined?(CanCan)
|
25
|
-
require 'neuron/integrations/cancan_inherited_resources'
|
26
|
-
end
|
27
|
-
end
|
28
|
-
if defined?(CanCan)
|
29
|
-
ActionController::Base.send :include, Neuron::Authorization::Controller
|
30
|
-
ActionView::Base.send :include, Neuron::Authorization::View
|
31
|
-
end
|
32
|
-
end
|
33
19
|
|
34
|
-
|
35
|
-
|
20
|
+
def path
|
21
|
+
File.expand_path('../..', __FILE__)
|
22
|
+
end
|
36
23
|
end
|
37
24
|
end
|
38
25
|
|
39
|
-
require 'neuron/
|
26
|
+
require 'neuron/railtie' if defined?(Rails)
|
data/neuron.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neuron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,19 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-06-
|
13
|
-
dependencies:
|
12
|
+
date: 2011-06-11 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &73648720 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *73648720
|
14
25
|
description: Code reused in many applications
|
15
26
|
email:
|
16
27
|
- al@semyonov.us
|
@@ -36,9 +47,11 @@ files:
|
|
36
47
|
- lib/neuron/controller.rb
|
37
48
|
- lib/neuron/integrations/cancan_inherited_resources.rb
|
38
49
|
- lib/neuron/navigation.rb
|
39
|
-
- lib/neuron/
|
50
|
+
- lib/neuron/railtie.rb
|
40
51
|
- lib/neuron/resolver.rb
|
41
52
|
- lib/neuron/resources.rb
|
53
|
+
- lib/neuron/show_for.rb
|
54
|
+
- lib/neuron/show_for/helper.rb
|
42
55
|
- lib/neuron/version.rb
|
43
56
|
- lib/neuron/view.rb
|
44
57
|
- neuron.gemspec
|
@@ -54,12 +67,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
54
67
|
- - ! '>='
|
55
68
|
- !ruby/object:Gem::Version
|
56
69
|
version: '0'
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
hash: -188768273
|
57
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
74
|
none: false
|
59
75
|
requirements:
|
60
76
|
- - ! '>='
|
61
77
|
- !ruby/object:Gem::Version
|
62
78
|
version: '0'
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
hash: -188768273
|
63
82
|
requirements: []
|
64
83
|
rubyforge_project: neuron
|
65
84
|
rubygems_version: 1.8.5
|