compass-jquery-plugin 0.2.4.5 → 0.2.4.99

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/README.textile +36 -4
  2. data/VERSION.yml +1 -1
  3. data/compass-jquery-plugin.gemspec +49 -3
  4. data/gem_tasks/calendar.rake +2 -2
  5. data/gem_tasks/dynatree.rake +2 -2
  6. data/gem_tasks/jqgrid.rake +2 -2
  7. data/gem_tasks/jqtouch.rake +114 -0
  8. data/gem_tasks/jrails.rake +20 -4
  9. data/gem_tasks/rubygems.rake +4 -1
  10. data/gem_tasks/secret_sauce.rake +2 -2
  11. data/lib/jquery/jqgrid/jqgrid.rb +435 -0
  12. data/lib/jquery/jqgrid/jqgrid2xml.rb +50 -0
  13. data/lib/jquery/jqgrid.rb +3 -419
  14. data/lib/jquery/jqtouch.rb +4 -0
  15. data/templates/dynatree/jquery.ui/dynatree.vista/folder.png +0 -0
  16. data/templates/dynatree/manifest.rb +0 -1
  17. data/templates/jqtouch/config/initializers/jqtouch.rb +3 -0
  18. data/templates/jqtouch/jqtouch/apple/backButton.png +0 -0
  19. data/templates/jqtouch/jqtouch/apple/blueButton.png +0 -0
  20. data/templates/jqtouch/jqtouch/apple/cancel.png +0 -0
  21. data/templates/jqtouch/jqtouch/apple/chevron.png +0 -0
  22. data/templates/jqtouch/jqtouch/apple/grayButton.png +0 -0
  23. data/templates/jqtouch/jqtouch/apple/listArrowSel.png +0 -0
  24. data/templates/jqtouch/jqtouch/apple/listGroup.png +0 -0
  25. data/templates/jqtouch/jqtouch/apple/loading.gif +0 -0
  26. data/templates/jqtouch/jqtouch/apple/on_off.png +0 -0
  27. data/templates/jqtouch/jqtouch/apple/pinstripes.png +0 -0
  28. data/templates/jqtouch/jqtouch/apple/selection.png +0 -0
  29. data/templates/jqtouch/jqtouch/apple/thumb.png +0 -0
  30. data/templates/jqtouch/jqtouch/apple/toggle.png +0 -0
  31. data/templates/jqtouch/jqtouch/apple/toggleOn.png +0 -0
  32. data/templates/jqtouch/jqtouch/apple/toolButton.png +0 -0
  33. data/templates/jqtouch/jqtouch/apple/toolbar.png +0 -0
  34. data/templates/jqtouch/jqtouch/apple/whiteButton.png +0 -0
  35. data/templates/jqtouch/jqtouch/apple.sass +651 -0
  36. data/templates/jqtouch/jqtouch/icons/iphone_16x16.png +0 -0
  37. data/templates/jqtouch/jqtouch/iphone-emulator.sass +17 -0
  38. data/templates/jqtouch/jqtouch/iphone_fullsize.png +0 -0
  39. data/templates/jqtouch/jqtouch/jqt/back_button.png +0 -0
  40. data/templates/jqtouch/jqtouch/jqt/back_button_clicked.png +0 -0
  41. data/templates/jqtouch/jqtouch/jqt/button.png +0 -0
  42. data/templates/jqtouch/jqtouch/jqt/button_clicked.png +0 -0
  43. data/templates/jqtouch/jqtouch/jqt/chevron.png +0 -0
  44. data/templates/jqtouch/jqtouch/jqt/chevron_circle.png +0 -0
  45. data/templates/jqtouch/jqtouch/jqt/grayButton.png +0 -0
  46. data/templates/jqtouch/jqtouch/jqt/loading.gif +0 -0
  47. data/templates/jqtouch/jqtouch/jqt/on_off.png +0 -0
  48. data/templates/jqtouch/jqtouch/jqt/rowhead.png +0 -0
  49. data/templates/jqtouch/jqtouch/jqt/toggle.png +0 -0
  50. data/templates/jqtouch/jqtouch/jqt/toggleOn.png +0 -0
  51. data/templates/jqtouch/jqtouch/jqt/toolbar.png +0 -0
  52. data/templates/jqtouch/jqtouch/jqt/whiteButton.png +0 -0
  53. data/templates/jqtouch/jqtouch/jqt.sass +580 -0
  54. data/templates/jqtouch/jqtouch/jqtouch.sass +75 -0
  55. data/templates/jqtouch/jquery.jqtouch.js +1007 -0
  56. data/templates/jqtouch/jquery.jqtouch.min.js +1 -0
  57. data/templates/jqtouch/manifest.rb +43 -0
  58. data/templates/jrails/config/initializers/jrails.rb +2 -0
  59. data/templates/jrails/jquery.compat-1.3.js +288 -0
  60. data/templates/jrails/jquery.compat-1.3.min.js +1 -0
  61. data/templates/jrails/jquery.js +4483 -2570
  62. data/templates/jrails/jquery.min.js +12 -8
  63. data/templates/jrails/manifest.rb +2 -0
  64. metadata +49 -3
  65. data/templates/dynatree/jquery.ui/dynatree.vista/folder_open.png +0 -0
data/lib/jquery/jqgrid.rb CHANGED
@@ -1,421 +1,5 @@
1
- module ActionView
2
- module Helpers
3
-
4
- def jqgrid_javascripts(locale)
5
- js = capture { javascript_include_tag "i18n/jqgrid/locale-#{locale}.min" }
6
- js << capture {javascript_tag "jQuery.jgrid.no_legacy_api = true;" }
7
- js << capture { javascript_include_tag 'jquery.jqGrid.min' }
8
- end
9
-
10
- def jqgrid_from_xml(name, opts={})
11
- @@grid_name = name.to_s
12
- grid_data = YAML::load_file("#{RAILS_ROOT}/config/jquery/jqGrid/#{name}.yml")
13
-
14
- before = grid_data[:before]
15
- params = grid_data[:params]
16
-
17
- def param_body(value)
18
- value.scan(/^\((.+?)\)(.+)/).flatten
19
- end
20
-
21
- jquery_grid_code = <<-CODE
22
- <script type="text/javascript">
23
- <%= before %>_n_
24
- jQuery(document).ready(function(){
25
- jQuery("#<%= name %>").jqGrid({
26
- <% params.each do |key,value| %>
27
- <% if opts.keys.include?(key) %>
28
- _ss_<%= key %>: <%= opts[key].to_json %>,
29
- <% elsif (value.is_a? String) && (value[0..0] == "$") %>
30
- _ss_<%= key %>: <%= "jQuery"+value[1,value.length] %>,
31
- <% elsif (key.to_s[0..8] == 'function_') %>
32
- <% js_params, body = param_body(value) %>
33
- _ss_<%= key.to_s[9..-1] %>: function(<%= js_params %>) {
34
- _ss__ss_<%= body %>
35
- _ss_},
36
- <% else %>
37
- _ss_<%= key %>: <%= value.to_json %>,
38
- <% end %>
39
- <% end %>
40
- <% opts.each do |key,value| %>
41
- <% unless params.keys.include?(key) %>
42
- _ss_<%= key %>: <%= value.to_json %>,
43
- <% end %>
44
- <% end %> });
45
- });
46
- </script>
47
- CODE
48
- ::ERB.new(jquery_grid_code, nil, '>').result(binding).gsub("_n_", "\n").
49
- gsub(/[ \t]{2,}/,' ').
50
- gsub(/,\s+\}\);/, "\n });").
51
- gsub(/\n\s*\n/m, "\n").
52
- gsub("_ss_", " ").
53
- gsub("<grid_name>", @@grid_name)
54
- end
55
-
56
-
57
- def jqgrid(title, id, action, columns = {},
58
- options = {}, edit_options = "", add_options = "", del_options = "", search_options = "",
59
- custom1_button = nil, custom2_button = nil, custom3_button = nil, custom4_button = nil, custom5_button = nil )
60
- # Default options
61
- options[:autowidth] = false if options[:autowidth].blank?
62
- options[:hidegrid] = true if options[:hidegrid].nil?
63
- options[:rows_per_page] = "10" if options[:rows_per_page].blank?
64
- options[:sort_column] = "id" if options[:sort_column].blank?
65
- options[:sort_order] = "asc" if options[:sort_order].blank?
66
- options[:height] = "150" if options[:height].blank?
67
- options[:error_handler] = 'null' if options[:error_handler].blank?
68
- options[:error_handler_return_value] = options[:error_handler]
69
- options[:error_handler_return_value] = "true;" if options[:error_handler_return_value] == 'null'
70
- options[:inline_edit_handler] = 'null' if options[:inline_edit_handler].blank?
71
-
72
- options[:add] = (options[:add].blank?) ? "false" : options[:add].to_s
73
- options[:delete] = (options[:delete].blank?) ? "false" : options[:delete].to_s
74
- options[:inline_edit] = (options[:inline_edit].blank?) ? "false" : options[:inline_edit].to_s
75
- edit_button = (options[:edit] == true && options[:inline_edit] == "false") ? "true" : "false"
76
-
77
- # Generate columns data
78
- col_names, col_model = gen_columns(columns)
79
-
80
- # Enable multi-selection (checkboxes)
81
- multiselect = ""
82
- if options[:multi_selection]
83
- multiselect = %Q/multiselect: true,/
84
- multihandler = %Q/
85
- jQuery("##{id}_select_button").click( function() {
86
- var s; s = jQuery("##{id}").jqGrid('getGridParam','selarrrow');
87
- #{options[:selection_handler]}(s);
88
- return false;
89
- });/
90
- end
91
-
92
- # Enable master-details
93
- masterdetails = ""
94
- if options[:master_details]
95
- masterdetails = %Q/
96
- onSelectRow: function(ids) {
97
- if(ids == null) {
98
- ids=0;
99
- if(jQuery("##{id}_details").jqGrid('getGridParam','records') >0 )
100
- {
101
- jQuery("##{id}_details").jqGrid('setGridParam',{url:"#{options[:details_url]}?q=1&id="+ids,page:1})
102
- jQuery("##{id}_details").jqGrid('setCaption',"#{options[:details_caption]}: "+ids)
103
- jQuery("##{id}_details").trigger('reloadGrid');
104
- }
105
- }
106
- else
107
- {
108
- jQuery("##{id}_details").jqGrid('setGridParam',{url:"#{options[:details_url]}?q=1&id="+ids,page:1})
109
- jQuery("##{id}_details").jqGrid('setCaption',"#{options[:details_caption]} : "+ids)
110
- jQuery("##{id}_details").trigger('reloadGrid');
111
- }
112
- },/
113
- end
114
-
115
- # Enable selection link, button
116
- # The javascript function created by the user (options[:selection_handler]) will be called with the selected row id as a parameter
117
- selection_link = ""
118
- if (options[:direct_selection].blank? || options[:direct_selection] == false) && options[:selection_handler].present? && (options[:multi_selection].blank? || options[:multi_selection] == false)
119
- selection_link = %Q/
120
- jQuery("##{id}_select_button").click( function(){
121
- var id = jQuery("##{id}").jqGrid('getGridParam','selrow');
122
- if (id) {
123
- #{options[:selection_handler]}(id);
124
- } else {
125
- alert("Please select a row");
126
- }
127
- return false;
128
- });/
129
- end
130
-
131
- # Enable direct selection (when a row in the table is clicked)
132
- # The javascript function created by the user (options[:selection_handler]) will be called with the selected row id as a parameter
133
- direct_link = ""
134
- if options[:direct_selection] && options[:selection_handler].present? && options[:multi_selection].blank?
135
- direct_link = %Q/
136
- onSelectRow: function(id){
137
- if(id){
138
- #{options[:selection_handler]}(id);
139
- }
140
- },/
141
- end
142
-
143
- # Enable grid_loaded callback
144
- # When data are loaded into the grid, call the Javascript function options[:grid_loaded] (defined by the user)
145
- grid_loaded = ""
146
- if options[:grid_loaded].present?
147
- grid_loaded = %Q/
148
- loadComplete: function(){
149
- #{options[:grid_loaded]}();
150
- },
151
- /
152
- end
153
-
154
- # Enable inline editing
155
- # When a row is selected, all fields are transformed to input types
156
- editable = ""
157
- if options[:edit] && options[:inline_edit] == "true"
158
- editable = %Q/
159
- onSelectRow: function(id){
160
- if(id && id!==lastsel_#{id}){
161
- jQuery('##{id}').jqGrid('restoreRow',lastsel_#{id});
162
- jQuery('##{id}').jqGrid('editRow',id, true, #{options[:inline_edit_handler]}, #{options[:error_handler]});
163
- lastsel_#{id}=id;
164
- }
165
- },/
166
- end
167
-
168
- # Enable subgrids
169
- subgrid = ""
170
- subgrid_enabled = "subGrid:false,"
171
- if options[:subgrid]
172
- subgrid_enabled = "subGrid:true,"
173
- options[:subgrid][:rows_per_page] = "10" if options[:subgrid][:rows_per_page].blank?
174
- options[:subgrid][:sort_column] = "id" if options[:subgrid][:sort_column].blank?
175
- options[:subgrid][:sort_order] = "asc" if options[:subgrid][:sort_order].blank?
176
- subgrid_search = (options[:subgrid][:search].blank?) ? "false" : options[:subgrid][:search]
177
- options[:subgrid][:add] = (options[:subgrid][:add].blank?) ? "false" : options[:subgrid][:add].to_s
178
- options[:subgrid][:delete] = (options[:subgrid][:delete].blank?) ? "false" : options[:subgrid][:delete].to_s
179
- options[:subgrid][:edit] = (options[:subgrid][:edit].blank?) ? "false" : options[:subgrid][:edit].to_s
180
-
181
- subgrid_inline_edit = ""
182
- if options[:subgrid][:inline_edit] == true
183
- options[:subgrid][:edit] = "false"
184
- subgrid_inline_edit = %Q/
185
- onSelectRow: function(id){
186
- if(id && id!==lastsel_#{id}){
187
- jQuery('#'+subgrid_table_id).jqGrid('restoreRow',lastsel_#{id});
188
- jQuery('#'+subgrid_table_id).jqGrid('editRow',id,true);
189
- lastsel_#{id}=id;
190
- }
191
- },
192
- /
193
- end
194
-
195
- if options[:subgrid][:direct_selection] && options[:subgrid][:selection_handler].present?
196
- subgrid_direct_link = %Q/
197
- onSelectRow: function(id){
198
- if(id){
199
- #{options[:subgrid][:selection_handler]}(id);
200
- }
201
- },
202
- /
203
- end
204
-
205
- sub_col_names, sub_col_model = gen_columns(options[:subgrid][:columns])
206
-
207
- subgrid = %Q(
208
- subGridRowExpanded: function(subgrid_id, row_id) {
209
- var subgrid_table_id, pager_id;
210
- subgrid_table_id = subgrid_id+"_t";
211
- pager_id = "p_"+subgrid_table_id;
212
- jQuery("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
213
- jQuery("#"+subgrid_table_id).jqGrid({
214
- url:"#{options[:subgrid][:url]}?q=2&id="+row_id,
215
- editurl:'#{options[:subgrid][:edit_url]}?parent_id='+row_id,
216
- datatype: "json",
217
- colNames: #{sub_col_names},
218
- colModel: #{sub_col_model},
219
- rowNum:#{options[:subgrid][:rows_per_page]},
220
- pager: pager_id,
221
- sortname: '#{options[:subgrid][:sort_column]}',
222
- sortorder: '#{options[:subgrid][:sort_order]}',
223
- viewrecords: true,
224
- toolbar : [true,"top"],
225
- #{subgrid_inline_edit}
226
- #{subgrid_direct_link}
227
- height: '100%'
228
- });
229
- jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:#{options[:subgrid][:edit]},add:#{options[:subgrid][:add]},del:#{options[:subgrid][:delete]},search:false});
230
- jQuery("#"+subgrid_table_id).jqGrid('navButtonAdd',"#"+pager_id,{caption:"Search",title:"Toggle Search",buttonimg:'/images/jquery/search.png',
231
- onClickButton:function(){
232
- if(jQuery("#t_"+subgrid_table_id).css("display")=="none") {
233
- jQuery("#t_"+subgrid_table_id).css("display","");
234
- } else {
235
- jQuery("#t_"+subgrid_table_id).css("display","none");
236
- }
237
- }
238
- });
239
- jQuery("#t_"+subgrid_table_id).height(25).hide().jqGrid('filterGrid',""+subgrid_table_id,{gridModel:true,gridToolbar:true});
240
- },
241
- subGridRowColapsed: function(subgrid_id, row_id) {
242
- },
243
- )
244
- end
245
-
246
-
247
- # Generate required Javascript & html to create the jqgrid
248
- %Q(
249
- <script type="text/javascript">
250
- var lastsel_#{id};
251
- jQuery(document).ready(function(){
252
- jQuery("##{id}").jqGrid({
253
- // adding ?nd='+new Date().getTime() prevent IE caching
254
- url:'#{action}?nd='+new Date().getTime(),
255
- editurl:'#{options[:edit_url]}',
256
- datatype: "json",
257
- colNames:#{col_names},
258
- colModel:#{col_model},
259
- pager: jQuery('##{id}_pager'),
260
- rowNum:#{options[:rows_per_page]},
261
- rowList:[10,25,50,100],
262
- sortname: '#{options[:sort_column]}',
263
- viewrecords: true,
264
- height: #{options[:height]},
265
- toolbar : [true,"top"],
266
- autowidth: #{options[:autowidth]},
267
- sortorder: "#{options[:sort_order]}",
268
- #{multiselect}
269
- #{masterdetails}
270
- #{grid_loaded}
271
- #{direct_link}
272
- #{editable}
273
- #{subgrid_enabled}
274
- #{subgrid}
275
- caption: "#{title}",
276
- hidegrid: #{options[:hidegrid]}
277
- });
278
- jQuery("#t_#{id}").height(25).hide().jqGrid('filterGrid',"#{id}",{gridModel:true,gridToolbar:true});
279
- #{multihandler}
280
- #{selection_link}
281
- jQuery("##{id}").jqGrid('navGrid','##{id}_pager',{edit:#{edit_button},add:#{options[:add]},del:#{options[:delete]},search:false,refresh:true},
282
- {afterSubmit:function(r,data){return #{options[:error_handler_return_value]}(r,data,'edit');} #{edit_options}},
283
- {afterSubmit:function(r,data){return #{options[:error_handler_return_value]}(r,data,'add');} #{add_options}},
284
- {afterSubmit:function(r,data){return #{options[:error_handler_return_value]}(r,data,'delete');} #{del_options}},
285
- {#{search_options}}
286
- );
287
-
288
- jQuery("##{id}").jqGrid('navButtonAdd',"##{id}_pager",{
289
- caption:"#{I18n.t('jquery.jqgrid.search')}",
290
- title:"#{I18n.t('jquery.jqgrid.toogle_search')}",
291
- buttonicon:"ui-icon-search",
292
- onClickButton:function(){
293
- if(jQuery("#t_#{id}").css("display")=="none") {
294
- jQuery("#t_#{id}").css("display","");
295
- } else {
296
- jQuery("#t_#{id}").css("display","none");
297
- }
298
- }
299
- });
300
- });
301
- </script>
302
- )
303
- end
304
-
305
- private
306
-
307
- def gen_columns(columns)
308
- # Generate columns data
309
- col_names = "[" # Labels
310
- col_model = "[" # Options
311
- columns.each do |c|
312
- col_names << "'#{c[:label]}',"
313
- col_model << "{name:'#{c[:field]}', index:'#{c[:field]}'#{get_attributes(c)}},"
314
- end
315
- col_names.chop! << "]"
316
- col_model.chop! << "]"
317
- [col_names, col_model]
318
- end
319
-
320
- # Generate a list of attributes for related column (align:'right', sortable:true, resizable:false, ...)
321
- def get_attributes(column)
322
- options = ","
323
- column.except(:field, :label).each do |couple|
324
- if couple[0] == :editoptions
325
- options << "editoptions:#{get_sub_options(couple[1])},"
326
- elsif couple[0] == :formoptions
327
- options << "formoptions:#{get_sub_options(couple[1])},"
328
- elsif couple[0] == :searchoptions
329
- options << "searchoptions:#{get_sub_options(couple[1])},"
330
- elsif couple[0] == :editrules
331
- options << "editrules:#{get_sub_options(couple[1])},"
332
- else
333
- if couple[1].class == String
334
- options << "#{couple[0]}:'#{couple[1]}',"
335
- else
336
- options << "#{couple[0]}:#{couple[1]},"
337
- end
338
- end
339
- end
340
- options.chop!
341
- end
342
-
343
- # Generate options for editable fields (value, data, width, maxvalue, cols, rows, ...)
344
- def get_sub_options(editoptions)
345
- options = "{"
346
- editoptions.each do |couple|
347
- if couple[0] == :value # :value => [[1, "Rails"], [2, "Ruby"], [3, "jQuery"]]
348
- options << %Q/value:"/
349
- couple[1].each do |v|
350
- options << "#{v[0]}:#{v[1]};"
351
- end
352
- options.chop! << %Q/",/
353
- elsif couple[0] == :data # :data => [Category.all, :id, :title])
354
- options << %Q/value:"/
355
- couple[1].first.each do |obj|
356
- options << "%s:%s;" % [obj.send(couple[1].second), obj.send(couple[1].third)]
357
- end
358
- options.chop! << %Q/",/
359
- else # :size => 30, :rows => 5, :maxlength => 20, ...
360
- if couple[1].instance_of?(Fixnum) || couple[1] == 'true' || couple[1] == 'false' || couple[1] == true || couple[1] == false
361
- options << %Q/#{couple[0]}:#{couple[1]},/
362
- else
363
- options << %Q/#{couple[0]}:"#{couple[1]}",/
364
- end
365
- end
366
- end
367
- options.chop! << "}"
368
- end
369
- end
370
- end
371
-
372
- module JqgridJson
373
- include ActionView::Helpers::JavaScriptHelper
374
-
375
- def to_jqgrid_json(attributes, current_page, per_page, total)
376
- json = %Q({"page":"#{current_page}","total":#{total/per_page.to_i+1},"records":"#{total}")
377
- if total > 0
378
- json << %Q(,"rows":[)
379
- each do |elem|
380
- elem.id ||= index(elem)
381
- json << %Q({"id":"#{elem.id}","cell":[)
382
- couples = elem.attributes.symbolize_keys
383
- attributes.each do |atr|
384
- value = get_atr_value(elem, atr, couples)
385
- value = escape_javascript(value) if value and value.is_a? String
386
- json << %Q("#{value}",)
387
- end
388
- json.chop! << "]},"
389
- end
390
- json.chop! << "]}"
391
- else
392
- json << "}"
393
- end
394
- end
395
-
396
- private
397
-
398
- def get_atr_value(elem, atr, couples)
399
- if atr.to_s.include?('.')
400
- value = get_nested_atr_value(elem, atr.to_s.split('.').reverse)
401
- else
402
- value = couples[atr]
403
- value = elem.send(atr.to_sym) if value.blank? && elem.respond_to?(atr) # Required for virtual attributes
404
- end
405
- value
406
- end
407
-
408
- def get_nested_atr_value(elem, hierarchy)
409
- return nil if hierarchy.size == 0
410
- atr = hierarchy.pop
411
- raise ArgumentError, "#{atr} doesn't exist on #{elem.inspect}" unless elem.respond_to?(atr)
412
- nested_elem = elem.send(atr)
413
- return "" if nested_elem.nil?
414
- value = get_nested_atr_value(nested_elem, hierarchy)
415
- value.nil? ? nested_elem : value
416
- end
1
+ module JqGrid#:nodoc:
417
2
  end
418
3
 
419
- class Array
420
- include JqgridJson
421
- end
4
+ require 'jquery/jqgrid/jqgrid'
5
+ require 'jquery/jqgrid/jqgrid2xml'
@@ -0,0 +1,4 @@
1
+ module JqTouch#:nodoc:
2
+ end
3
+
4
+ #require 'jquery/jqtouch/controller/ui_dialog_controls'
@@ -84,7 +84,6 @@ image 'jquery.ui/dynatree.vista/expanded_hover.png'
84
84
  image 'jquery.ui/dynatree.vista/folder.png'
85
85
  image 'jquery.ui/dynatree.vista/folder_docs.png'
86
86
  image 'jquery.ui/dynatree.vista/folder_images.png'
87
- image 'jquery.ui/dynatree.vista/folder_open.png'
88
87
  image 'jquery.ui/dynatree.vista/folder_page.png'
89
88
  image 'jquery.ui/dynatree.vista/ltDoc.png'
90
89
  image 'jquery.ui/dynatree.vista/ltError.png'
@@ -0,0 +1,3 @@
1
+ require 'jquery/jqtouch'
2
+
3
+ ActionView::Helpers::AssetTagHelper.register_javascript_expansion :jqtouch => ['jquery.jqtouch.min']