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.
Files changed (118) hide show
  1. data/CHANGELOG +8 -0
  2. data/README.rdoc +71 -0
  3. data/Rakefile +144 -14
  4. data/generators/right_rails/right_rails_generator.rb +18 -21
  5. data/init.rb +11 -32
  6. data/lib/generators/right_rails/right_rails_generator.rb +27 -0
  7. data/lib/generators/right_rails/templates/iframed.html.erb +10 -0
  8. data/lib/right-rails.rb +1 -1
  9. data/lib/right_rails/config.rb +278 -0
  10. data/lib/right_rails/controller_extensions.rb +10 -5
  11. data/lib/right_rails/helpers/basic.rb +10 -66
  12. data/lib/right_rails/helpers/forms.rb +141 -139
  13. data/lib/right_rails/helpers/misc.rb +45 -67
  14. data/lib/right_rails/helpers/rails.rb +40 -105
  15. data/lib/right_rails/helpers.rb +364 -1
  16. data/lib/right_rails/java_script_generator.rb +34 -24
  17. data/lib/right_rails.rb +6 -1
  18. data/{images → public/images}/colorpicker.png +0 -0
  19. data/{images → public/images}/resizable.png +0 -0
  20. data/public/javascripts/right/autocompleter-src.js +612 -0
  21. data/public/javascripts/right/autocompleter.js +18 -0
  22. data/public/javascripts/right/calendar-src.js +1448 -0
  23. data/public/javascripts/right/calendar.js +36 -0
  24. data/public/javascripts/right/colorpicker-src.js +967 -0
  25. data/public/javascripts/right/colorpicker.js +26 -0
  26. data/{javascripts/right-dnd-src.js → public/javascripts/right/dnd-src.js} +86 -52
  27. data/public/javascripts/right/dnd.js +20 -0
  28. data/{javascripts/right-effects-src.js → public/javascripts/right/effects-src.js} +90 -45
  29. data/public/javascripts/right/effects.js +17 -0
  30. data/{javascripts/right-ui-i18n-de.js → public/javascripts/right/i18n/de.js} +7 -7
  31. data/{javascripts/right-ui-i18n-en-us.js → public/javascripts/right/i18n/en-us.js} +1 -1
  32. data/{javascripts/right-ui-i18n-es.js → public/javascripts/right/i18n/es.js} +7 -7
  33. data/{javascripts/right-ui-i18n-fr.js → public/javascripts/right/i18n/fr.js} +7 -7
  34. data/{javascripts/right-ui-i18n-hu.js → public/javascripts/right/i18n/hu.js} +7 -7
  35. data/{javascripts/right-ui-i18n-jp.js → public/javascripts/right/i18n/jp.js} +7 -7
  36. data/{javascripts/right-ui-i18n-nl.js → public/javascripts/right/i18n/nl.js} +7 -7
  37. data/{javascripts/right-ui-i18n-pt-br.js → public/javascripts/right/i18n/pt-br.js} +7 -7
  38. data/{javascripts/right-ui-i18n-ru.js → public/javascripts/right/i18n/ru.js} +7 -7
  39. data/{javascripts/right-ui-i18n-ua.js → public/javascripts/right/i18n/ua.js} +17 -12
  40. data/public/javascripts/right/in-edit-src.js +352 -0
  41. data/public/javascripts/right/in-edit.js +13 -0
  42. data/public/javascripts/right/json-src.js +160 -0
  43. data/public/javascripts/right/json.js +10 -0
  44. data/public/javascripts/right/lightbox-src.js +881 -0
  45. data/public/javascripts/right/lightbox.js +24 -0
  46. data/{javascripts/right-rails-src.js → public/javascripts/right/rails-src.js} +195 -171
  47. data/public/javascripts/right/rails.js +14 -0
  48. data/public/javascripts/right/rater-src.js +366 -0
  49. data/public/javascripts/right/rater.js +13 -0
  50. data/public/javascripts/right/resizable-src.js +420 -0
  51. data/public/javascripts/right/resizable.js +15 -0
  52. data/public/javascripts/right/selectable-src.js +687 -0
  53. data/public/javascripts/right/selectable.js +22 -0
  54. data/public/javascripts/right/slider-src.js +377 -0
  55. data/public/javascripts/right/slider.js +14 -0
  56. data/public/javascripts/right/sortable-src.js +392 -0
  57. data/public/javascripts/right/sortable.js +16 -0
  58. data/public/javascripts/right/tabs-src.js +1123 -0
  59. data/public/javascripts/right/tabs.js +29 -0
  60. data/public/javascripts/right/tooltip-src.js +307 -0
  61. data/public/javascripts/right/tooltip.js +12 -0
  62. data/public/javascripts/right/uploader-src.js +283 -0
  63. data/public/javascripts/right/uploader.js +13 -0
  64. data/{javascripts → public/javascripts}/right-olds-src.js +134 -186
  65. data/public/javascripts/right-olds.js +18 -0
  66. data/public/javascripts/right-safe-src.js +161 -0
  67. data/public/javascripts/right-safe.js +8 -0
  68. data/{javascripts → public/javascripts}/right-src.js +2558 -1750
  69. data/public/javascripts/right.js +92 -0
  70. data/spec/lib/right_rails/config_spec.rb +133 -0
  71. data/spec/lib/right_rails/controller_extensions_spec.rb +1 -1
  72. data/spec/lib/right_rails/helpers/basic_spec.rb +77 -66
  73. data/spec/lib/right_rails/helpers/forms_spec.rb +231 -33
  74. data/spec/lib/right_rails/helpers/misc_spec.rb +94 -26
  75. data/spec/lib/right_rails/helpers/rails_spec.rb +42 -7
  76. data/spec/lib/right_rails/helpers_spec.rb +125 -0
  77. data/spec/lib/right_rails/java_script_generator_spec.rb +30 -0
  78. data/spec/rcov.opts +3 -0
  79. data/spec/spec_helper.rb +12 -7
  80. metadata +70 -61
  81. data/README.textile +0 -69
  82. data/javascripts/right-autocompleter-src.js +0 -318
  83. data/javascripts/right-autocompleter.js +0 -9
  84. data/javascripts/right-behavior-src.js +0 -261
  85. data/javascripts/right-behavior.js +0 -8
  86. data/javascripts/right-calendar-src.js +0 -946
  87. data/javascripts/right-calendar.js +0 -9
  88. data/javascripts/right-colorpicker-src.js +0 -635
  89. data/javascripts/right-colorpicker.js +0 -9
  90. data/javascripts/right-dnd.js +0 -9
  91. data/javascripts/right-effects.js +0 -6
  92. data/javascripts/right-events-src.js +0 -321
  93. data/javascripts/right-events.js +0 -6
  94. data/javascripts/right-in-edit-src.js +0 -194
  95. data/javascripts/right-in-edit.js +0 -6
  96. data/javascripts/right-json-src.js +0 -141
  97. data/javascripts/right-json.js +0 -6
  98. data/javascripts/right-lightbox-src.js +0 -651
  99. data/javascripts/right-lightbox.js +0 -9
  100. data/javascripts/right-olds.js +0 -9
  101. data/javascripts/right-rails.js +0 -9
  102. data/javascripts/right-rater-src.js +0 -253
  103. data/javascripts/right-rater.js +0 -9
  104. data/javascripts/right-resizable-src.js +0 -336
  105. data/javascripts/right-resizable.js +0 -9
  106. data/javascripts/right-selectable-src.js +0 -565
  107. data/javascripts/right-selectable.js +0 -7
  108. data/javascripts/right-slider-src.js +0 -288
  109. data/javascripts/right-slider.js +0 -7
  110. data/javascripts/right-sortable-src.js +0 -225
  111. data/javascripts/right-sortable.js +0 -9
  112. data/javascripts/right-tabs-src.js +0 -937
  113. data/javascripts/right-tabs.js +0 -6
  114. data/javascripts/right-tooltips-src.js +0 -195
  115. data/javascripts/right-tooltips.js +0 -9
  116. data/javascripts/right-uploader-src.js +0 -167
  117. data/javascripts/right-uploader.js +0 -9
  118. 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
- it "should generate a #calendar_field_tag" do
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
- it "should generate a #calendar_field_tag with options" do
21
- calendar_field_tag('name', 'value', :format => '%Y/%m/%d').should ==
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
- it "should generate a #autocomplete_field_tag" do
26
- autocomplete_field_tag('name', 'value', :url => '/foo').should ==
27
- %Q{<input autocomplete="off" id="name" name="name" rel="autocompleter[/foo]" type="text" value="value" />}
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
- @_right_scripts.should == ['autocompleter']
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
- it "should generate a #autocomplete_field_tag with options" do
33
- autocomplete_field_tag('name', 'value', :url => '/foo', :spinner => 'spinner', :min_length => 2).should ==
34
- %Q{<input autocomplete="off" data-autocompleter-options="{minLength:2,spinner:'spinner'}" id="name" name="name" rel="autocompleter[/foo]" type="text" value="value" />}
35
- end
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
- it "should generate a #slider_tag with options" do
38
- slider_tag('some_field', 22, :min => 10, :max => 40).should ==
39
- %Q{<input id="some_field" name="some_field" type="hidden" value="22" />\n<script type="text/javascript">\n//<![CDATA[\nnew Slider({max:40,min:10,value:22}).insertTo('some_field','after').assignTo('some_field');\n//]]>\n</script>}
40
- end
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
- it "should generate a #rater_tag" do
43
- rater_tag('some_field', 2).should ==
44
- %Q{<input id="some_field" name="some_field" type="hidden" value="2" />\n<script type="text/javascript">\n//<![CDATA[\nnew Rater({value:2}).insertTo('some_field','after').assignTo('some_field');\n//]]>\n</script>}
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
- it "should generate the #rater_display tag" do
48
- rater_display(4).should ==
49
- %Q{<div class="right-rater right-rater-disabled"><div class="right-rater-glow">&#9733;</div><div class="right-rater-glow">&#9733;</div><div class="right-rater-glow">&#9733;</div><div class="right-rater-glow">&#9733;</div><div>&#9733;</div></div>}
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
- it "should generate a #colorpicker_field_tag" do
53
- colorpicker_field_tag('name', '#FF0').should ==
54
- %Q{<input id=\"name\" name=\"name\" rel=\"colorpicker\" type=\"text\" value=\"#FF0\" />}
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">&#9733;</div>}+
191
+ %Q{<div class="active">&#9733;</div>}+
192
+ %Q{<div class="active">&#9733;</div>}+
193
+ %Q{<div class="active">&#9733;</div>}+
194
+ %Q{<div>&#9733;</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">&#9733;</div>}+
207
+ %Q{<div class="right-rater-glow">&#9733;</div>}+
208
+ %Q{<div class="right-rater-glow">&#9733;</div>}+
209
+ %Q{<div class="right-rater-glow">&#9733;</div>}+
210
+ %Q{<div>&#9733;</div>}+
211
+ %Q{</div>}
212
+ end
213
+ end
55
214
  end
56
215
 
57
- it "should generate a #colorpicker_field_tag with options" do
58
- colorpicker_field_tag('name', '#FF0', :format => 'rgb').should ==
59
- %Q{<input data-colorpicker-options=\"{format:'rgb'}\" id=\"name\" name=\"name\" rel=\"colorpicker\" type=\"text\" value=\"#FF0\" />}
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
- __rjs_hs(%Q{<script type="text/javascript">\n//<![CDATA[\n#{script}\n//]]>\n</script>})
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" rel="lightbox">boo</a>'
82
- @_right_scripts.should == ['lightbox']
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" rel="lightbox[roadtrip]">boo</a>}
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-options="{hideOnOutClick:false}" rel="lightbox">boo</a>}
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=\"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>}
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
- @_right_scripts.should == ['tabs']
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 data-tabs-options=\"{idPrefix:'foo-'}\" 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');\n//]]>\n</script>}
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=\"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>}
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=\"right-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>}
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=\"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>}
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
- "bla bla bla"
139
- }.should == %Q{<div class=\"right-resizable\"><div class=\"right-resizable-content\">bla bla bla</div><div class=\"right-resizable-handle\"></div></div>}
140
-
141
- @_right_scripts.should == ['resizable']
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
- 'boo'
147
- }.should == %Q{<div class=\"right-resizable-bottom\"><div class=\"right-resizable-content\">boo</div><div class=\"right-resizable-handle\"></div></div>}
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
- 'boo'
153
- }.should == %Q{<div class=\"right-resizable\" data-resizable-options=\"{maxHeight:'10em',minWidth:100}\"><div class=\"right-resizable-content\">boo</div><div class=\"right-resizable-handle\"></div></div>}
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{<form action="/boo" method="post" onsubmit="$(this).send(); return false;">}
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{<form action="/boo" method="post" onsubmit="$(this).send({spinner:'spinner'}); return false;">}
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
- @_right_scripts.should == ['dnd']
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
- @_right_scripts.should == ['dnd']
220
+
221
+ rightjs_required_files.should include('right/dnd')
187
222
  end
188
223
 
189
224
  it "should generate #sortable_element_js" do