right-rails 0.6.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +8 -0
- data/README.rdoc +71 -0
- data/Rakefile +144 -14
- data/generators/right_rails/right_rails_generator.rb +18 -21
- data/init.rb +11 -32
- data/lib/generators/right_rails/right_rails_generator.rb +27 -0
- data/lib/generators/right_rails/templates/iframed.html.erb +10 -0
- data/lib/right-rails.rb +1 -1
- data/lib/right_rails/config.rb +278 -0
- data/lib/right_rails/controller_extensions.rb +10 -5
- data/lib/right_rails/helpers/basic.rb +10 -66
- data/lib/right_rails/helpers/forms.rb +141 -139
- data/lib/right_rails/helpers/misc.rb +45 -67
- data/lib/right_rails/helpers/rails.rb +40 -105
- data/lib/right_rails/helpers.rb +364 -1
- data/lib/right_rails/java_script_generator.rb +34 -24
- data/lib/right_rails.rb +6 -1
- data/{images → public/images}/colorpicker.png +0 -0
- data/{images → public/images}/resizable.png +0 -0
- data/public/javascripts/right/autocompleter-src.js +612 -0
- data/public/javascripts/right/autocompleter.js +18 -0
- data/public/javascripts/right/calendar-src.js +1448 -0
- data/public/javascripts/right/calendar.js +36 -0
- data/public/javascripts/right/colorpicker-src.js +967 -0
- data/public/javascripts/right/colorpicker.js +26 -0
- data/{javascripts/right-dnd-src.js → public/javascripts/right/dnd-src.js} +86 -52
- data/public/javascripts/right/dnd.js +20 -0
- data/{javascripts/right-effects-src.js → public/javascripts/right/effects-src.js} +90 -45
- data/public/javascripts/right/effects.js +17 -0
- data/{javascripts/right-ui-i18n-de.js → public/javascripts/right/i18n/de.js} +7 -7
- data/{javascripts/right-ui-i18n-en-us.js → public/javascripts/right/i18n/en-us.js} +1 -1
- data/{javascripts/right-ui-i18n-es.js → public/javascripts/right/i18n/es.js} +7 -7
- data/{javascripts/right-ui-i18n-fr.js → public/javascripts/right/i18n/fr.js} +7 -7
- data/{javascripts/right-ui-i18n-hu.js → public/javascripts/right/i18n/hu.js} +7 -7
- data/{javascripts/right-ui-i18n-jp.js → public/javascripts/right/i18n/jp.js} +7 -7
- data/{javascripts/right-ui-i18n-nl.js → public/javascripts/right/i18n/nl.js} +7 -7
- data/{javascripts/right-ui-i18n-pt-br.js → public/javascripts/right/i18n/pt-br.js} +7 -7
- data/{javascripts/right-ui-i18n-ru.js → public/javascripts/right/i18n/ru.js} +7 -7
- data/{javascripts/right-ui-i18n-ua.js → public/javascripts/right/i18n/ua.js} +17 -12
- data/public/javascripts/right/in-edit-src.js +352 -0
- data/public/javascripts/right/in-edit.js +13 -0
- data/public/javascripts/right/json-src.js +160 -0
- data/public/javascripts/right/json.js +10 -0
- data/public/javascripts/right/lightbox-src.js +881 -0
- data/public/javascripts/right/lightbox.js +24 -0
- data/{javascripts/right-rails-src.js → public/javascripts/right/rails-src.js} +195 -171
- data/public/javascripts/right/rails.js +14 -0
- data/public/javascripts/right/rater-src.js +366 -0
- data/public/javascripts/right/rater.js +13 -0
- data/public/javascripts/right/resizable-src.js +420 -0
- data/public/javascripts/right/resizable.js +15 -0
- data/public/javascripts/right/selectable-src.js +687 -0
- data/public/javascripts/right/selectable.js +22 -0
- data/public/javascripts/right/slider-src.js +377 -0
- data/public/javascripts/right/slider.js +14 -0
- data/public/javascripts/right/sortable-src.js +392 -0
- data/public/javascripts/right/sortable.js +16 -0
- data/public/javascripts/right/tabs-src.js +1123 -0
- data/public/javascripts/right/tabs.js +29 -0
- data/public/javascripts/right/tooltip-src.js +307 -0
- data/public/javascripts/right/tooltip.js +12 -0
- data/public/javascripts/right/uploader-src.js +283 -0
- data/public/javascripts/right/uploader.js +13 -0
- data/{javascripts → public/javascripts}/right-olds-src.js +134 -186
- data/public/javascripts/right-olds.js +18 -0
- data/public/javascripts/right-safe-src.js +161 -0
- data/public/javascripts/right-safe.js +8 -0
- data/{javascripts → public/javascripts}/right-src.js +2558 -1750
- data/public/javascripts/right.js +92 -0
- data/spec/lib/right_rails/config_spec.rb +133 -0
- data/spec/lib/right_rails/controller_extensions_spec.rb +1 -1
- data/spec/lib/right_rails/helpers/basic_spec.rb +77 -66
- data/spec/lib/right_rails/helpers/forms_spec.rb +231 -33
- data/spec/lib/right_rails/helpers/misc_spec.rb +94 -26
- data/spec/lib/right_rails/helpers/rails_spec.rb +42 -7
- data/spec/lib/right_rails/helpers_spec.rb +125 -0
- data/spec/lib/right_rails/java_script_generator_spec.rb +30 -0
- data/spec/rcov.opts +3 -0
- data/spec/spec_helper.rb +12 -7
- metadata +70 -61
- data/README.textile +0 -69
- data/javascripts/right-autocompleter-src.js +0 -318
- data/javascripts/right-autocompleter.js +0 -9
- data/javascripts/right-behavior-src.js +0 -261
- data/javascripts/right-behavior.js +0 -8
- data/javascripts/right-calendar-src.js +0 -946
- data/javascripts/right-calendar.js +0 -9
- data/javascripts/right-colorpicker-src.js +0 -635
- data/javascripts/right-colorpicker.js +0 -9
- data/javascripts/right-dnd.js +0 -9
- data/javascripts/right-effects.js +0 -6
- data/javascripts/right-events-src.js +0 -321
- data/javascripts/right-events.js +0 -6
- data/javascripts/right-in-edit-src.js +0 -194
- data/javascripts/right-in-edit.js +0 -6
- data/javascripts/right-json-src.js +0 -141
- data/javascripts/right-json.js +0 -6
- data/javascripts/right-lightbox-src.js +0 -651
- data/javascripts/right-lightbox.js +0 -9
- data/javascripts/right-olds.js +0 -9
- data/javascripts/right-rails.js +0 -9
- data/javascripts/right-rater-src.js +0 -253
- data/javascripts/right-rater.js +0 -9
- data/javascripts/right-resizable-src.js +0 -336
- data/javascripts/right-resizable.js +0 -9
- data/javascripts/right-selectable-src.js +0 -565
- data/javascripts/right-selectable.js +0 -7
- data/javascripts/right-slider-src.js +0 -288
- data/javascripts/right-slider.js +0 -7
- data/javascripts/right-sortable-src.js +0 -225
- data/javascripts/right-sortable.js +0 -9
- data/javascripts/right-tabs-src.js +0 -937
- data/javascripts/right-tabs.js +0 -6
- data/javascripts/right-tooltips-src.js +0 -195
- data/javascripts/right-tooltips.js +0 -9
- data/javascripts/right-uploader-src.js +0 -167
- data/javascripts/right-uploader.js +0 -9
- data/javascripts/right.js +0 -7
@@ -9,53 +9,251 @@ describe RightRails::Helpers::Forms do
|
|
9
9
|
|
10
10
|
def url_for(options) options end
|
11
11
|
def escape_javascript(str) str end
|
12
|
-
|
13
|
-
|
14
|
-
calendar_field_tag('name', 'value').should ==
|
15
|
-
%Q{<input id="name" name="name" rel="calendar" type="text" value="value" />}
|
16
|
-
|
17
|
-
@_right_scripts.should == ['calendar']
|
12
|
+
def rightjs_required_files
|
13
|
+
RightRails::Helpers.required_js_files(self)
|
18
14
|
end
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
%Q{<input data-calendar-options="{format:'%Y/%m/%d'}" id="name" name="name" rel="calendar" type="text" value="value" />}
|
16
|
+
before :each do
|
17
|
+
RightRails::Config.reset!
|
23
18
|
end
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
|
20
|
+
describe ".calendar_field" do
|
21
|
+
it "should generate a basic calendar_field_tag" do
|
22
|
+
calendar_field_tag('name', 'value').should ==
|
23
|
+
%Q{<input data-calendar="{}" id="name" name="name" type="text" value="value" />}
|
24
|
+
|
25
|
+
rightjs_required_files.should include('right/calendar')
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should generate a calendar_field_tag with options" do
|
29
|
+
calendar_field_tag('name', 'value', :format => '%Y/%m/%d').should ==
|
30
|
+
%Q{<input data-calendar="{format:'%Y/%m/%d'}" id="name" }+
|
31
|
+
%Q{name="name" type="text" value="value" />}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should generate a basic calendar_field" do
|
35
|
+
calendar_field('model', 'method').should ==
|
36
|
+
%Q{<input data-calendar="{}" id="model_method" name="model[method]" size="30" type="text" />}
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should generate a calendar_field with options" do
|
40
|
+
calendar_field('model', 'method', :hide_on_pick => true).should ==
|
41
|
+
%Q{<input data-calendar="{hideOnPick:true}" id="model_method" }+
|
42
|
+
%Q{name="model[method]" size="30" type="text" />}
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "in RightJS 1 mode" do
|
46
|
+
before :each do
|
47
|
+
RightRails::Config.rightjs_version = 1
|
48
|
+
end
|
28
49
|
|
29
|
-
|
50
|
+
it "should generate a basic calendar_field_tag" do
|
51
|
+
calendar_field_tag('name', 'value').should ==
|
52
|
+
%Q{<input id="name" name="name" rel="calendar" type="text" value="value" />}
|
53
|
+
|
54
|
+
rightjs_required_files.should include('right/calendar')
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should generate a calendar_field_tag with options" do
|
58
|
+
calendar_field_tag('name', 'value', :format => '%Y/%m/%d').should ==
|
59
|
+
%Q{<input data-calendar-options="{format:'%Y/%m/%d'}" id="name" name="name" }+
|
60
|
+
%Q{rel="calendar" type="text" value="value" />}
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should generate a basic calendar_field" do
|
64
|
+
calendar_field('model', 'method').should ==
|
65
|
+
%Q{<input id="model_method" name="model[method]" rel="calendar" size="30" type="text" />}
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should generate a calendar_field with options" do
|
69
|
+
calendar_field('model', 'method', :hide_on_pick => true).should ==
|
70
|
+
%Q{<input data-calendar-options="{hideOnPick:true}" id="model_method" }+
|
71
|
+
%Q{name="model[method]" rel="calendar" size="30" type="text" />}
|
72
|
+
end
|
73
|
+
end
|
30
74
|
end
|
31
75
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
76
|
+
describe ".autocomplete_field" do
|
77
|
+
it "should generate a basic autocomplete_field_tag" do
|
78
|
+
autocomplete_field_tag('name', 'value', :url => '/foo').should ==
|
79
|
+
%Q{<input autocomplete="off" data-autocompleter="{url:'/foo'}" id="name" name="name" type="text" value="value" />}
|
80
|
+
|
81
|
+
rightjs_required_files.should include('right/autocompleter')
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should generate an autocomplete_field_tag with options" do
|
85
|
+
autocomplete_field_tag('name', 'value', :url => '/foo', :spinner => 'spinner', :min_length => 2).should ==
|
86
|
+
%Q{<input autocomplete="off" data-autocompleter="{minLength:2,spinner:'spinner',url:'/foo'}" }+
|
87
|
+
%Q{id="name" name="name" type="text" value="value" />}
|
88
|
+
end
|
36
89
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
90
|
+
it "should generate a basic autocomplete_field" do
|
91
|
+
autocomplete_field('object', 'method', :url => '/foo').should ==
|
92
|
+
%Q{<input autocomplete="off" data-autocompleter="{url:'/foo'}" id="object_method" name="object[method]" size="30" type="text" />}
|
93
|
+
end
|
41
94
|
|
42
|
-
|
43
|
-
|
44
|
-
|
95
|
+
it "should generate an autocomplete_field with options" do
|
96
|
+
autocomplete_field('object', 'method', :url => '/foo', :fx_name => 'fade').should ==
|
97
|
+
%Q{<input autocomplete="off" data-autocompleter="{fxName:'fade',url:'/foo'}" id="object_method" }+
|
98
|
+
%Q{name="object[method]" size="30" type="text" />}
|
99
|
+
end
|
100
|
+
|
101
|
+
describe "in RightJS 1 mode" do
|
102
|
+
before :each do
|
103
|
+
RightRails::Config.rightjs_version = 1
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should generate a basic autocomplete_field_tag" do
|
107
|
+
autocomplete_field_tag('name', 'value', :url => '/foo').should ==
|
108
|
+
%Q{<input autocomplete="off" id="name" name="name" rel="autocompleter[/foo]" type="text" value="value" />}
|
109
|
+
|
110
|
+
rightjs_required_files.should include('right/autocompleter')
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should generate an autocomplete_field_tag with options" do
|
114
|
+
autocomplete_field_tag('name', 'value', :url => '/foo', :spinner => 'spinner', :min_length => 2).should ==
|
115
|
+
%Q{<input autocomplete="off" data-autocompleter-options="{minLength:2,spinner:'spinner'}" }+
|
116
|
+
%Q{id="name" name="name" rel="autocompleter[/foo]" type="text" value="value" />}
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should generate a basic autocomplete_field" do
|
120
|
+
autocomplete_field('object', 'method', :url => '/foo').should ==
|
121
|
+
%Q{<input autocomplete="off" id="object_method" name="object[method]" rel="autocompleter[/foo]" size="30" type="text" />}
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should generate an autocomplete_field with options" do
|
125
|
+
autocomplete_field('object', 'method', :url => '/foo', :fx_name => 'fade').should ==
|
126
|
+
%Q{<input autocomplete="off" data-autocompleter-options="{fxName:'fade'}" id="object_method" }+
|
127
|
+
%Q{name="object[method]" rel="autocompleter[/foo]" size="30" type="text" />}
|
128
|
+
end
|
129
|
+
end
|
45
130
|
end
|
46
131
|
|
47
|
-
|
48
|
-
|
49
|
-
|
132
|
+
describe ".slider" do
|
133
|
+
|
134
|
+
it "should generate a basic slider_tag" do
|
135
|
+
slider_tag('some_field', 22).should ==
|
136
|
+
%Q{<input id="some_field" name="some_field" type="hidden" value="22" />\n}+
|
137
|
+
%Q{<script type="text/javascript">\n//<![CDATA[\n}+
|
138
|
+
%Q{new Slider({value:22}).insertTo('some_field','after').assignTo('some_field');\n}+
|
139
|
+
%Q{//]]>\n}+
|
140
|
+
%Q{</script>}
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should generate a slider_tag with options" do
|
144
|
+
slider_tag('some_field', 22, :min => 10, :max => 40).should ==
|
145
|
+
%Q{<input id="some_field" name="some_field" type="hidden" value="22" />\n}+
|
146
|
+
%Q{<script type="text/javascript">\n//<![CDATA[\n}+
|
147
|
+
%Q{new Slider({max:40,min:10,value:22}).insertTo('some_field','after').assignTo('some_field');\n}+
|
148
|
+
%Q{//]]>\n}+
|
149
|
+
%Q{</script>}
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should generate a slider with options" do
|
153
|
+
model = {}
|
154
|
+
model.should_receive('method').twice.and_return(22)
|
155
|
+
should_receive(:instance_variable_get).twice.with('@object').and_return(model)
|
156
|
+
|
157
|
+
slider('object', 'method', :value => 22, :min => 20, :max => 80).should ==
|
158
|
+
%Q{<input id="object_method" name="object[method]" type="hidden" value="22" />\n}+
|
159
|
+
%Q{<script type="text/javascript">\n//<![CDATA[\n}+
|
160
|
+
%Q{new Slider({max:80,min:20,value:22}).insertTo('object_method','after').assignTo('object_method');\n}+
|
161
|
+
%Q{//]]>\n}+
|
162
|
+
%Q{</script>}
|
163
|
+
end
|
50
164
|
end
|
51
165
|
|
52
|
-
|
53
|
-
|
54
|
-
|
166
|
+
describe ".rater" do
|
167
|
+
it "should generate a simple rater" do
|
168
|
+
model = {}
|
169
|
+
model.should_receive('method').twice.and_return(2)
|
170
|
+
should_receive(:instance_variable_get).twice.with('@object').and_return(model)
|
171
|
+
|
172
|
+
rater('object', 'method', :value => 2).should ==
|
173
|
+
%Q{<input id="object_method" name="object[method]" type="hidden" value="2" />\n}+
|
174
|
+
%Q{<script type="text/javascript">\n//<![CDATA[\n}+
|
175
|
+
%Q{new Rater({value:2}).insertTo('object_method','after').assignTo('object_method');\n}+
|
176
|
+
%Q{//]]>\n</script>}
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should generate a #rater_tag" do
|
180
|
+
rater_tag('some_field', 2).should ==
|
181
|
+
%Q{<input id="some_field" name="some_field" type="hidden" value="2" />\n}+
|
182
|
+
%Q{<script type="text/javascript">\n//<![CDATA[\n}+
|
183
|
+
%Q{new Rater({value:2}).insertTo('some_field','after').assignTo('some_field');\n}+
|
184
|
+
%Q{//]]>\n</script>}
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should generate the #rater_display tag" do
|
188
|
+
rater_display(4).should ==
|
189
|
+
%Q{<div class="rui-rater rui-rater-disabled">}+
|
190
|
+
%Q{<div class="active">★</div>}+
|
191
|
+
%Q{<div class="active">★</div>}+
|
192
|
+
%Q{<div class="active">★</div>}+
|
193
|
+
%Q{<div class="active">★</div>}+
|
194
|
+
%Q{<div>★</div>}+
|
195
|
+
%Q{</div>}
|
196
|
+
end
|
197
|
+
|
198
|
+
describe "in RightJS 1 mode" do
|
199
|
+
before :each do
|
200
|
+
RightRails::Config.rightjs_version = 1
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should generate the #rater_display tag" do
|
204
|
+
rater_display(4).should ==
|
205
|
+
%Q{<div class="right-rater right-rater-disabled">}+
|
206
|
+
%Q{<div class="right-rater-glow">★</div>}+
|
207
|
+
%Q{<div class="right-rater-glow">★</div>}+
|
208
|
+
%Q{<div class="right-rater-glow">★</div>}+
|
209
|
+
%Q{<div class="right-rater-glow">★</div>}+
|
210
|
+
%Q{<div>★</div>}+
|
211
|
+
%Q{</div>}
|
212
|
+
end
|
213
|
+
end
|
55
214
|
end
|
56
215
|
|
57
|
-
|
58
|
-
|
59
|
-
|
216
|
+
describe ".colorpicker" do
|
217
|
+
it "should generate a simple colorpicker_field_tag" do
|
218
|
+
colorpicker_field_tag('name', '#FF0').should ==
|
219
|
+
%Q{<input data-colorpicker="{}" id="name" name="name" type="text" value="#FF0" />}
|
220
|
+
end
|
221
|
+
|
222
|
+
it "should generate a colorpicker_field_tag with options" do
|
223
|
+
colorpicker_field_tag('name', '#FF0', :format => 'rgb').should ==
|
224
|
+
%Q{<input data-colorpicker="{format:'rgb'}" }+
|
225
|
+
%Q{id="name" name="name" type="text" value="#FF0" />}
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should generate a colorpicker_field with options" do
|
229
|
+
colorpicker_field('object', 'method', :fx_name => 'slide').should ==
|
230
|
+
%Q{<input data-colorpicker="{fxName:'slide'}" id="object_method" }+
|
231
|
+
%Q{name="object[method]" size="30" type="text" />}
|
232
|
+
end
|
233
|
+
|
234
|
+
describe "in RightJS 1 mode" do
|
235
|
+
before :each do
|
236
|
+
RightRails::Config.rightjs_version = 1
|
237
|
+
end
|
238
|
+
|
239
|
+
it "should generate a simple colorpicker_field_tag" do
|
240
|
+
colorpicker_field_tag('name', '#FF0').should ==
|
241
|
+
%Q{<input id="name" name="name" rel="colorpicker" type="text" value="#FF0" />}
|
242
|
+
end
|
243
|
+
|
244
|
+
it "should generate a colorpicker_field_tag with options" do
|
245
|
+
colorpicker_field_tag('name', '#FF0', :format => 'rgb').should ==
|
246
|
+
%Q{<input data-colorpicker-options="{format:'rgb'}" }+
|
247
|
+
%Q{id="name" name="name" rel="colorpicker" type="text" value="#FF0" />}
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should generate a colorpicker_field with options" do
|
251
|
+
colorpicker_field('object', 'method', :fx_name => 'slide').should ==
|
252
|
+
%Q{<input data-colorpicker-options="{fxName:'slide'}" id="object_method" }+
|
253
|
+
%Q{name="object[method]" rel="colorpicker" size="30" type="text" />}
|
254
|
+
end
|
255
|
+
end
|
60
256
|
end
|
257
|
+
|
258
|
+
|
61
259
|
end
|
@@ -9,7 +9,7 @@ describe RightRails::Helpers::Misc do
|
|
9
9
|
|
10
10
|
# fraking Rails 3 replacement
|
11
11
|
def javascript_tag(script)
|
12
|
-
|
12
|
+
RightRails::Helpers.html_safe(%Q{<script type="text/javascript">\n//<![CDATA[\n#{script}\n//]]>\n</script>})
|
13
13
|
end
|
14
14
|
|
15
15
|
# stubbing those two
|
@@ -21,6 +21,14 @@ describe RightRails::Helpers::Misc do
|
|
21
21
|
content
|
22
22
|
end
|
23
23
|
|
24
|
+
def rightjs_required_files
|
25
|
+
RightRails::Helpers.required_js_files(self)
|
26
|
+
end
|
27
|
+
|
28
|
+
before :each do
|
29
|
+
RightRails::Config.reset!
|
30
|
+
end
|
31
|
+
|
24
32
|
|
25
33
|
it "should provide the basic #flashes builder" do
|
26
34
|
should_receive(:flash).any_number_of_times.and_return({
|
@@ -78,18 +86,39 @@ describe RightRails::Helpers::Misc do
|
|
78
86
|
|
79
87
|
describe "#link_to_lightbox" do
|
80
88
|
it "should generate the link" do
|
81
|
-
link_to_lightbox('boo', 'boo').should == '<a href="boo"
|
82
|
-
|
89
|
+
link_to_lightbox('boo', 'boo').should == '<a href="boo" data-lightbox="{}">boo</a>'
|
90
|
+
rightjs_required_files.should include('right/lightbox')
|
83
91
|
end
|
84
|
-
|
92
|
+
|
85
93
|
it "should generate lightbox with roadtrip" do
|
86
94
|
link_to_lightbox('boo', 'boo', :roadtrip => true).should ==
|
87
|
-
%Q{<a href="boo"
|
95
|
+
%Q{<a href="boo" data-lightbox="{group:'true'}">boo</a>}
|
88
96
|
end
|
89
|
-
|
97
|
+
|
90
98
|
it "should generate lightbox with options" do
|
91
99
|
link_to_lightbox('boo', 'boo', :hide_on_out_click => false).should ==
|
92
|
-
%Q{<a href="boo" data-lightbox
|
100
|
+
%Q{<a href="boo" data-lightbox="{hideOnOutClick:false}">boo</a>}
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "in RightJS 1 mode" do
|
104
|
+
before :each do
|
105
|
+
RightRails::Config.rightjs_version = 1
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should generate the link" do
|
109
|
+
link_to_lightbox('boo', 'boo').should == '<a href="boo" rel="lightbox">boo</a>'
|
110
|
+
rightjs_required_files.should include('right/lightbox')
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should generate lightbox with roadtrip" do
|
114
|
+
link_to_lightbox('boo', 'boo', :roadtrip => true).should ==
|
115
|
+
%Q{<a href="boo" rel="lightbox[roadtrip]">boo</a>}
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should generate lightbox with options" do
|
119
|
+
link_to_lightbox('boo', 'boo', :hide_on_out_click => false).should ==
|
120
|
+
%Q{<a href="boo" data-lightbox-options="{hideOnOutClick:false}" rel="lightbox">boo</a>}
|
121
|
+
end
|
93
122
|
end
|
94
123
|
end
|
95
124
|
|
@@ -98,59 +127,98 @@ describe RightRails::Helpers::Misc do
|
|
98
127
|
tabs(:id => 'my-tabs') {
|
99
128
|
tab("Tab 1", :id => 'tab-1'){ 'content 1' }
|
100
129
|
tab("Tab 2", :id => 'tab-2'){ 'content 2' }
|
101
|
-
}.should == %Q{<ul id
|
130
|
+
}.should == %Q{<ul id="my-tabs"><ul><li><a href="#tab-1">Tab 1</a></li>\n<li><a href="#tab-2">Tab 2</a></li></ul>\n<li id="tab-1">content 1</li>\n<li id="tab-2">content 2</li>\n</ul>\n<script type="text/javascript">\n//<![CDATA[\nnew Tabs('my-tabs', {});\n//]]>\n</script>}
|
102
131
|
|
103
|
-
|
132
|
+
rightjs_required_files.should include('right/tabs')
|
104
133
|
end
|
105
134
|
|
106
135
|
it "should generate tabs with id prefix" do
|
107
136
|
tabs(:id => 'my-tabs', :id_prefix => 'foo-') {
|
108
137
|
tab("Tab 1", :id => 'tab-1'){ 'content 1' }
|
109
138
|
tab("Tab 2", :id => 'tab-2'){ 'content 2' }
|
110
|
-
}.should == %Q{<ul
|
139
|
+
}.should == %Q{<ul id="my-tabs"><ul><li><a href="#tab-1">Tab 1</a></li>\n<li><a href="#tab-2">Tab 2</a></li></ul>\n<li id="foo-tab-1">content 1</li>\n<li id="foo-tab-2">content 2</li>\n</ul>\n<script type="text/javascript">\n//<![CDATA[\nnew Tabs('my-tabs', {idPrefix:'foo-'});\n//]]>\n</script>}
|
111
140
|
end
|
112
141
|
|
113
142
|
it "should generate remote tabs" do
|
114
143
|
tabs(:id => 'my-tabs') {
|
115
144
|
tab("Tab 1", :url => '/tab/1')
|
116
145
|
tab("Tab 2", :url => '/tab/2')
|
117
|
-
}.should == %Q{<ul id
|
146
|
+
}.should == %Q{<ul id="my-tabs"><ul><li><a href="/tab/1">Tab 1</a></li>\n<li><a href="/tab/2">Tab 2</a></li></ul>\n</ul>\n<script type="text/javascript">\n//<![CDATA[\nnew Tabs('my-tabs', {});\n//]]>\n</script>}
|
118
147
|
end
|
119
148
|
|
120
149
|
it "should generate carousel tabs" do
|
121
150
|
tabs(:id => 'my-tabs', :type => :carousel) {
|
122
151
|
tab("Tab 1", :id => 'tab-1'){ 'content 1' }
|
123
152
|
tab("Tab 2", :id => 'tab-2'){ 'content 2' }
|
124
|
-
}.should == %Q{<ul class
|
153
|
+
}.should == %Q{<ul class="#{RightRails::Helpers.css_prefix}-tabs-carousel" id="my-tabs"><ul><li><a href="#tab-1">Tab 1</a></li>\n<li><a href="#tab-2">Tab 2</a></li></ul>\n<li id="tab-1">content 1</li>\n<li id="tab-2">content 2</li>\n</ul>\n<script type="text/javascript">\n//<![CDATA[\nnew Tabs('my-tabs', {});\n//]]>\n</script>}
|
125
154
|
end
|
126
155
|
|
127
156
|
it "should generate harmonica tabs" do
|
128
157
|
tabs(:id => 'my-tabs', :type => :harmonica) {
|
129
158
|
tab("Tab 1", :id => 'tab-1'){ 'content 1' }
|
130
159
|
tab("Tab 2", :id => 'tab-2'){ 'content 2' }
|
131
|
-
}.should == %Q{<dl id
|
160
|
+
}.should == %Q{<dl id="my-tabs"><dt><a href="#tab-1">Tab 1</a></dt>\n<dd id="tab-1">content 1</dd>\n<dt><a href="#tab-2">Tab 2</a></dt>\n<dd id=\"tab-2\">content 2</dd></dl>\n<script type="text/javascript">\n//<![CDATA[\nnew Tabs('my-tabs', {});\n//]]>\n</script>}
|
132
161
|
end
|
133
162
|
end
|
134
163
|
|
135
164
|
describe "#resizable generator" do
|
165
|
+
|
136
166
|
it "should generate a simple resizable" do
|
137
|
-
resizable {
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
end
|
167
|
+
resizable { "bla bla bla" }.should ==
|
168
|
+
%Q{<div class="rui-resizable">}+
|
169
|
+
%Q{<div class="rui-resizable-content">bla bla bla</div>}+
|
170
|
+
%Q{<div class="rui-resizable-handle"></div>}+
|
171
|
+
%Q{</div>}
|
143
172
|
|
173
|
+
rightjs_required_files.should include('right/resizable')
|
174
|
+
end
|
175
|
+
|
144
176
|
it "should generate a resizable with directions" do
|
145
|
-
resizable(:direction => :bottom) {
|
146
|
-
|
147
|
-
|
177
|
+
resizable(:direction => :bottom) { 'boo' }.should ==
|
178
|
+
%Q{<div class="rui-resizable-bottom">}+
|
179
|
+
%Q{<div class="rui-resizable-content">boo</div>}+
|
180
|
+
%Q{<div class="rui-resizable-handle"></div>}+
|
181
|
+
%Q{</div>}
|
148
182
|
end
|
149
|
-
|
183
|
+
|
150
184
|
it "should generate a resizable with constraints" do
|
151
|
-
resizable(:min_width => 100, :maxHeight => '10em'){
|
152
|
-
|
153
|
-
|
185
|
+
resizable(:min_width => 100, :maxHeight => '10em'){ 'boo' }.should ==
|
186
|
+
%Q{<div class="rui-resizable" data-resizable="{maxHeight:'10em',minWidth:100}">}+
|
187
|
+
%Q{<div class="rui-resizable-content">boo</div>}+
|
188
|
+
%Q{<div class="rui-resizable-handle"></div>}+
|
189
|
+
%Q{</div>}
|
190
|
+
end
|
191
|
+
|
192
|
+
describe "in RightJS 1 mode" do
|
193
|
+
before :each do
|
194
|
+
RightRails::Config.rightjs_version = 1
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should generate a simple resizable" do
|
198
|
+
resizable { "bla bla bla" }.should ==
|
199
|
+
%Q{<div class="right-resizable">}+
|
200
|
+
%Q{<div class="right-resizable-content">bla bla bla</div>}+
|
201
|
+
%Q{<div class="right-resizable-handle"></div>}+
|
202
|
+
%Q{</div>}
|
203
|
+
|
204
|
+
rightjs_required_files.should include('right/resizable')
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should generate a resizable with directions" do
|
208
|
+
resizable(:direction => :bottom) { 'boo' }.should ==
|
209
|
+
%Q{<div class="right-resizable-bottom">}+
|
210
|
+
%Q{<div class="right-resizable-content">boo</div>}+
|
211
|
+
%Q{<div class="right-resizable-handle"></div>}+
|
212
|
+
%Q{</div>}
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should generate a resizable with constraints" do
|
216
|
+
resizable(:min_width => 100, :maxHeight => '10em'){ 'boo' }.should ==
|
217
|
+
%Q{<div class="right-resizable" data-resizable-options="{maxHeight:'10em',minWidth:100}">}+
|
218
|
+
%Q{<div class="right-resizable-content">boo</div>}+
|
219
|
+
%Q{<div class="right-resizable-handle"></div>}+
|
220
|
+
%Q{</div>}
|
221
|
+
end
|
154
222
|
end
|
155
223
|
end
|
156
224
|
end
|
@@ -45,6 +45,20 @@ describe RightRails::Helpers::Rails do
|
|
45
45
|
# stubbing the convertion methods
|
46
46
|
def url_for(url) url end
|
47
47
|
def protect_against_forgery?() false end
|
48
|
+
def rightjs_required_files
|
49
|
+
RightRails::Helpers.required_js_files(self)
|
50
|
+
end
|
51
|
+
|
52
|
+
before :each do
|
53
|
+
RightRails::Config.reset!
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#include_javascript_tag" do
|
57
|
+
it "should load the RightJS scripts by default" do
|
58
|
+
should_receive(:rightjs_scripts).and_return('right.js')
|
59
|
+
include_javascript_tag(:default).should == 'right.js'
|
60
|
+
end
|
61
|
+
end
|
48
62
|
|
49
63
|
describe "#remote_function" do
|
50
64
|
it "should generatorate a simple request" do
|
@@ -111,6 +125,21 @@ describe RightRails::Helpers::Rails do
|
|
111
125
|
remote_function(:url => '/foo', :confirm => 'Sure?').should ==
|
112
126
|
"if(confirm('Sure?')){Xhr.load('/foo')}"
|
113
127
|
end
|
128
|
+
|
129
|
+
describe "in safe-mode" do
|
130
|
+
before :each do
|
131
|
+
RightRails::Config.safe_mode = true
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should prefix the 'Xhr' calls" do
|
135
|
+
remote_function(:url => '/foo').should == "RightJS.Xhr.load('/foo')"
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should prefix the '$' calls" do
|
139
|
+
remote_function(:url => '/foo', :update => 'boo').should ==
|
140
|
+
"RightJS.Xhr.load('/foo',{onComplete:function(request){RightJS.$('boo').update(this.text)}})"
|
141
|
+
end
|
142
|
+
end
|
114
143
|
end
|
115
144
|
|
116
145
|
describe "#link_to_function" do
|
@@ -157,13 +186,19 @@ describe RightRails::Helpers::Rails do
|
|
157
186
|
|
158
187
|
describe "#form_remote_tag" do
|
159
188
|
it "should generate a simple remote form".should do
|
160
|
-
form_remote_tag(:url => '/boo').should
|
161
|
-
%Q{
|
189
|
+
form_remote_tag(:url => '/boo').should =~
|
190
|
+
/<form[^>]+#{Regexp.escape(%Q{action="/boo" method="post" onsubmit="$(this).send(); return false;">})}/
|
162
191
|
end
|
163
192
|
|
164
193
|
it "should generate a proper remote form with options" do
|
165
|
-
form_remote_tag(:url => '/boo', :spinner => 'spinner').should
|
166
|
-
%Q{
|
194
|
+
form_remote_tag(:url => '/boo', :spinner => 'spinner').should =~
|
195
|
+
/<form[^>]+#{Regexp.escape(%Q{action="/boo" method="post" onsubmit="$(this).send({spinner:'spinner'}); return false;">})}/
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should prefix '$' with RightJS. in safe-mode" do
|
199
|
+
RightRails::Config.safe_mode = true
|
200
|
+
form_remote_tag(:url => '/boo').should =~
|
201
|
+
/<form[^>]+#{Regexp.escape(%Q{action="/boo" method="post" onsubmit="RightJS.$(this).send(); return false;">})}/
|
167
202
|
end
|
168
203
|
end
|
169
204
|
|
@@ -176,14 +211,14 @@ describe RightRails::Helpers::Rails do
|
|
176
211
|
|
177
212
|
it "should generate #draggable_element_js" do
|
178
213
|
draggable_element_js(:element_id, :revert => true).should == 'new Draggable("element_id", {revert:true});'
|
179
|
-
|
214
|
+
rightjs_required_files.should include('right/dnd')
|
180
215
|
end
|
181
216
|
|
182
217
|
it "should generate #drop_receiving_element_js" do
|
183
218
|
drop_receiving_element_js(:element_id, :url => '/boo').should ==
|
184
219
|
%Q{new Droppable("element_id", {onDrop:function(draggable){Xhr.load('/boo',{params:'id=' + encodeURIComponent(draggable.element.id)})}});}
|
185
|
-
|
186
|
-
|
220
|
+
|
221
|
+
rightjs_required_files.should include('right/dnd')
|
187
222
|
end
|
188
223
|
|
189
224
|
it "should generate #sortable_element_js" do
|