paloma 4.2.0 → 4.2.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/Changelog.md +4 -0
- data/lib/paloma/action_controller_extension.rb +36 -5
- data/paloma.gemspec +1 -1
- data/test_app/app/assets/javascripts/application.js +2 -1
- data/test_app/app/controllers/main_controller.rb +37 -0
- data/test_app/app/views/layouts/application.html.erb +5 -0
- data/test_app/config/routes.rb +5 -0
- data/test_app/spec/integration/basic_spec.rb +65 -0
- data/test_app/spec/units/controller_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6d90c6346ffaca96320b8924a984d7b4a09d26b
|
4
|
+
data.tar.gz: d77644a771b84cfbb6e55ded22be99a7a930ac90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebc6f8eafd2f25d3983ee8c253be793da6e2736deebe61fa887a28e9d71250b677f00d74d571f51bed4ddd9af72ebe1aad9c4d4fa97071c0a6572569ff7d5a22
|
7
|
+
data.tar.gz: 67753deb514e0615089d462cf86130ea85c29b1b23074b3940f7a165d7b3ba38395dc048702c1ebbad7b1cb72305cd800efdbb9579ee0144cd34bb952d202056
|
data/Changelog.md
CHANGED
@@ -55,6 +55,20 @@ module Paloma
|
|
55
55
|
# Can call a different Controller or execute a different action, and
|
56
56
|
# pass parameters.
|
57
57
|
#
|
58
|
+
# NOTE:
|
59
|
+
# Calling this more than once in a single action will not clear
|
60
|
+
# the previous config from the previous call.
|
61
|
+
#
|
62
|
+
# Example:
|
63
|
+
# def new
|
64
|
+
# js 'MyController#new'
|
65
|
+
# js :edit
|
66
|
+
# js :x => 1, :y => 2
|
67
|
+
#
|
68
|
+
# # Paloma will execute JS for
|
69
|
+
# # MyController#edit and will pass the parameters :x => 1, :y => 2
|
70
|
+
# end
|
71
|
+
#
|
58
72
|
# Usage:
|
59
73
|
#
|
60
74
|
# js 'Controller', {params}
|
@@ -64,6 +78,8 @@ module Paloma
|
|
64
78
|
# js '#action', {params}
|
65
79
|
# js :action, {params}
|
66
80
|
# js :param_1 => 1, :param_2 => 2
|
81
|
+
# js true
|
82
|
+
# js false
|
67
83
|
#
|
68
84
|
#
|
69
85
|
def js path_or_options, params = {}
|
@@ -80,8 +96,8 @@ module Paloma
|
|
80
96
|
#
|
81
97
|
if path_or_options.is_a? String
|
82
98
|
route = ::Paloma::Utilities.interpret_route path_or_options
|
83
|
-
self.paloma.resource = route[:resource]
|
84
|
-
self.paloma.action = route[:action]
|
99
|
+
self.paloma.resource = route[:resource] if route[:resource].present?
|
100
|
+
self.paloma.action = route[:action] if route[:action].present?
|
85
101
|
|
86
102
|
# :action
|
87
103
|
elsif path_or_options.is_a? Symbol
|
@@ -91,7 +107,12 @@ module Paloma
|
|
91
107
|
elsif path_or_options.is_a? Hash
|
92
108
|
self.paloma.params.merge! path_or_options || {}
|
93
109
|
|
110
|
+
elsif path_or_options != true
|
111
|
+
raise "Paloma: Invalid argument (#{path_or_options}) for js method"
|
94
112
|
end
|
113
|
+
|
114
|
+
self.paloma.resource ||= self.default_resource
|
115
|
+
self.paloma.action ||= self.default_action
|
95
116
|
end
|
96
117
|
|
97
118
|
|
@@ -101,8 +122,8 @@ module Paloma
|
|
101
122
|
# Keeps track of what Rails controller/action is executed.
|
102
123
|
#
|
103
124
|
def track_paloma_request
|
104
|
-
self.paloma.resource ||=
|
105
|
-
self.paloma.action ||= self.
|
125
|
+
self.paloma.resource ||= self.default_resource
|
126
|
+
self.paloma.action ||= self.default_action
|
106
127
|
end
|
107
128
|
|
108
129
|
|
@@ -113,7 +134,7 @@ module Paloma
|
|
113
134
|
# will execute the tracked Paloma requests.
|
114
135
|
#
|
115
136
|
def insert_paloma_hook
|
116
|
-
return
|
137
|
+
return nil if self.paloma.has_no_request?
|
117
138
|
|
118
139
|
hook = view_context.render(
|
119
140
|
:partial => 'paloma/hook',
|
@@ -134,6 +155,16 @@ module Paloma
|
|
134
155
|
@paloma ||= ::Paloma::Controller.new
|
135
156
|
end
|
136
157
|
|
158
|
+
|
159
|
+
def default_resource
|
160
|
+
::Paloma::Utilities.get_resource self.controller_path
|
161
|
+
end
|
162
|
+
|
163
|
+
|
164
|
+
def default_action
|
165
|
+
self.action_name
|
166
|
+
end
|
167
|
+
|
137
168
|
end
|
138
169
|
|
139
170
|
|
data/paloma.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'paloma'
|
3
|
-
s.version = '4.2.
|
3
|
+
s.version = '4.2.1'
|
4
4
|
s.summary = "Provides an easy way to execute page-specific javascript for Rails."
|
5
5
|
s.description = "Page-specific javascript for Rails done right"
|
6
6
|
s.authors = ['Karl Paragua']
|
@@ -36,12 +36,13 @@ Main.prototype.index = function(){};
|
|
36
36
|
Main.prototype.otherAction = function(){};
|
37
37
|
Main.prototype.prevent = function(){};
|
38
38
|
Main.prototype.basic_params = function(){};
|
39
|
+
Main.prototype.multiple_calls_1 = function(){};
|
39
40
|
|
40
41
|
|
41
42
|
var OtherMain = Paloma.controller('OtherMain');
|
42
43
|
OtherMain.prototype.show = function(){};
|
43
44
|
OtherMain.prototype.otherAction = function(){};
|
44
|
-
|
45
|
+
OtherMain.prototype.multiple_calls_2 = function(){};
|
45
46
|
|
46
47
|
|
47
48
|
var Foos = Paloma.controller('Admin/Foos');
|
@@ -27,6 +27,43 @@ class MainController < ApplicationController
|
|
27
27
|
end
|
28
28
|
|
29
29
|
|
30
|
+
def multiple_calls_1
|
31
|
+
js false
|
32
|
+
js :x => 70
|
33
|
+
render :inline => 'Main#multiple_calls', :layout => 'application'
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def multiple_calls_2
|
38
|
+
js false
|
39
|
+
js 'OtherMain'
|
40
|
+
render :inline => 'Main#multiple_calls_2', :layout => 'application'
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def multiple_calls_3
|
45
|
+
js 'OtherMain'
|
46
|
+
js :show
|
47
|
+
render :inline => 'Main#multiple_calls_3', :layout => 'application'
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def multiple_calls_4
|
52
|
+
js 'OtherMain#show'
|
53
|
+
js false
|
54
|
+
render :inline => 'Main#multiple_calls_4', :layout => 'application'
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def multiple_calls_5
|
59
|
+
js false
|
60
|
+
js true
|
61
|
+
render :inline => 'Main#multiple_calls_5', :layout => 'application'
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
30
67
|
# Stop paloma from execution
|
31
68
|
def prevent
|
32
69
|
js false
|
@@ -17,6 +17,11 @@
|
|
17
17
|
<li><%= link_to 'Main#edit', edit_main_path(1) %></li>
|
18
18
|
<li><%= link_to 'Main#prevent', prevent_main_index_path %></li>
|
19
19
|
<li><%= link_to 'Main#basic_params', basic_params_main_index_path %></li>
|
20
|
+
<li><%= link_to 'Main#multiple_calls_1', multiple_calls_1_main_index_path %></li>
|
21
|
+
<li><%= link_to 'Main#multiple_calls_2', multiple_calls_2_main_index_path %></li>
|
22
|
+
<li><%= link_to 'Main#multiple_calls_3', multiple_calls_3_main_index_path %></li>
|
23
|
+
<li><%= link_to 'Main#multiple_calls_4', multiple_calls_4_main_index_path %></li>
|
24
|
+
<li><%= link_to 'Main#multiple_calls_5', multiple_calls_5_main_index_path %></li>
|
20
25
|
<li><%= link_to 'Main#xml_response', xml_response_main_index_path %></li>
|
21
26
|
<li><%= link_to 'Main#file_response', file_response_main_index_path %></li>
|
22
27
|
<li><%= link_to 'Main#ajax', ajax_main_index_path, :id => 'js-ajax-link' %></li>
|
data/test_app/config/routes.rb
CHANGED
@@ -79,6 +79,71 @@ feature 'executing Paloma controller', :js => true do
|
|
79
79
|
|
80
80
|
|
81
81
|
|
82
|
+
#
|
83
|
+
#
|
84
|
+
# Multiple Calls
|
85
|
+
#
|
86
|
+
#
|
87
|
+
|
88
|
+
context 'false at first then pass a parameter' do
|
89
|
+
it 'executes default controller#action plus the parameter' do
|
90
|
+
visit multiple_calls_1_main_index_path
|
91
|
+
|
92
|
+
expect(
|
93
|
+
request['controller'] == 'Main' &&
|
94
|
+
request['action'] == 'multiple_calls_1' &&
|
95
|
+
request['params'] == {'x' => 70}
|
96
|
+
).to be_truthy
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
context 'false at first then pass a controller string' do
|
102
|
+
it 'executes passed controller and default action' do
|
103
|
+
visit multiple_calls_2_main_index_path
|
104
|
+
|
105
|
+
expect(
|
106
|
+
request['controller'] == 'OtherMain' &&
|
107
|
+
request['action'] == 'multiple_calls_2'
|
108
|
+
).to be_truthy
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
|
113
|
+
context 'controller at first then action' do
|
114
|
+
it 'executes the controller and action' do
|
115
|
+
visit multiple_calls_3_main_index_path
|
116
|
+
|
117
|
+
expect(
|
118
|
+
request['controller'] == 'OtherMain' &&
|
119
|
+
request['action'] == 'show'
|
120
|
+
).to be_truthy
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
context 'controller#action at first then false' do
|
126
|
+
it 'does not execute any js' do
|
127
|
+
visit multiple_calls_4_main_index_path
|
128
|
+
expect(request).to be_nil
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
context 'false at first then true' do
|
134
|
+
it 'executes default controller#action' do
|
135
|
+
visit multiple_calls_5_main_index_path
|
136
|
+
|
137
|
+
expect(
|
138
|
+
request['controller'] == 'Main' &&
|
139
|
+
request['action'] == 'multiple_calls_5'
|
140
|
+
).to be_truthy
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
82
147
|
#
|
83
148
|
#
|
84
149
|
# Prevent Paloma
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paloma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.2.
|
4
|
+
version: 4.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Paragua
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jquery-rails
|