compass-jquery-plugin 0.3.0.0 → 0.3.1.beta.2

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.
Files changed (322) hide show
  1. data/README.textile +69 -13
  2. data/Rakefile +1 -1
  3. data/VERSION.yml +2 -2
  4. data/gem_tasks/jqgrid.rake +119 -0
  5. data/gem_tasks/jrails.rake +78 -77
  6. data/gem_tasks/mobile.rake +156 -0
  7. data/gem_tasks/rubygems.rake +5 -1
  8. data/gem_tasks/secret_sauce.rake +64 -0
  9. data/lib/jquery/gridify.rb +42 -0
  10. data/lib/jquery/gridify/assertions.rb +37 -0
  11. data/lib/jquery/gridify/grid.rb +210 -0
  12. data/lib/jquery/gridify/grid_column.rb +134 -0
  13. data/lib/jquery/gridify/grid_finder.rb +223 -0
  14. data/lib/jquery/gridify/grid_options.rb +279 -0
  15. data/lib/jquery/gridify/grid_view.rb +435 -0
  16. data/lib/jquery/jqgrid.rb +5 -0
  17. data/lib/jquery/jqgrid/jqgrid.rb +438 -0
  18. data/lib/jquery/mobile.rb +3 -0
  19. data/lib/jquery/secret_sauce.rb +9 -0
  20. data/lib/jquery/secret_sauce/controller/ui_dialog_controls.rb +14 -0
  21. data/lib/jquery/secret_sauce/controller/ui_grid_controls.rb +18 -0
  22. data/lib/jquery/secret_sauce/helpers/ui_dialog_helper.rb +6 -0
  23. data/lib/jquery/secret_sauce/helpers/ui_form_helper.rb +118 -0
  24. data/lib/jquery/secret_sauce/helpers/ui_grid_helper.rb +226 -0
  25. data/lib/jquery/secret_sauce/model/find_for_grid.rb +42 -0
  26. data/templates/dynatree/jquery.dynatree.js +258 -147
  27. data/templates/dynatree/jquery.dynatree.min.js +81 -79
  28. data/templates/dynatree/jquery/dynatree/aero.scss +35 -18
  29. data/templates/dynatree/jquery/dynatree/aero/drop_sibling_here.png +0 -0
  30. data/templates/dynatree/jquery/dynatree/aqua.scss +36 -19
  31. data/templates/dynatree/jquery/dynatree/aqua/drop_sibling_here.png +0 -0
  32. data/templates/dynatree/jquery/dynatree/crystal.scss +38 -21
  33. data/templates/dynatree/jquery/dynatree/crystal/drop_sibling_here.png +0 -0
  34. data/templates/dynatree/jquery/dynatree/xp.scss +59 -42
  35. data/templates/dynatree/jquery/dynatree/xp/drop_sibling_here.png +0 -0
  36. data/templates/dynatree/manifest.rb +4 -0
  37. data/templates/jqgrid/config/initializers/jqgrid.rb +4 -0
  38. data/templates/jqgrid/config/locales/jquery/jqgrid/de.yml +7 -0
  39. data/templates/jqgrid/config/locales/jquery/jqgrid/en.yml +7 -0
  40. data/templates/jqgrid/i18n/jqgrid/locale-bg.js +132 -0
  41. data/templates/jqgrid/i18n/jqgrid/locale-bg.min.js +6 -0
  42. data/templates/jqgrid/i18n/jqgrid/locale-bg1251.js +132 -0
  43. data/templates/jqgrid/i18n/jqgrid/locale-bg1251.min.js +6 -0
  44. data/templates/jqgrid/i18n/jqgrid/locale-cat.js +128 -0
  45. data/templates/jqgrid/i18n/jqgrid/locale-cat.min.js +6 -0
  46. data/templates/jqgrid/i18n/jqgrid/locale-cn.js +132 -0
  47. data/templates/jqgrid/i18n/jqgrid/locale-cn.min.js +5 -0
  48. data/templates/jqgrid/i18n/jqgrid/locale-cs.js +128 -0
  49. data/templates/jqgrid/i18n/jqgrid/locale-cs.min.js +6 -0
  50. data/templates/jqgrid/i18n/jqgrid/locale-da.js +128 -0
  51. data/templates/jqgrid/i18n/jqgrid/locale-da.min.js +6 -0
  52. data/templates/jqgrid/i18n/jqgrid/locale-de.js +133 -0
  53. data/templates/jqgrid/i18n/jqgrid/locale-de.min.js +7 -0
  54. data/templates/jqgrid/i18n/jqgrid/locale-el.js +126 -0
  55. data/templates/jqgrid/i18n/jqgrid/locale-el.min.js +7 -0
  56. data/templates/jqgrid/i18n/jqgrid/locale-en.js +128 -0
  57. data/templates/jqgrid/i18n/jqgrid/locale-en.min.js +6 -0
  58. data/templates/jqgrid/i18n/jqgrid/locale-es.js +128 -0
  59. data/templates/jqgrid/i18n/jqgrid/locale-es.min.js +7 -0
  60. data/templates/jqgrid/i18n/jqgrid/locale-fa.js +125 -0
  61. data/templates/jqgrid/i18n/jqgrid/locale-fa.min.js +6 -0
  62. data/templates/jqgrid/i18n/jqgrid/locale-fi.js +130 -0
  63. data/templates/jqgrid/i18n/jqgrid/locale-fi.min.js +6 -0
  64. data/templates/jqgrid/i18n/jqgrid/locale-fr.js +126 -0
  65. data/templates/jqgrid/i18n/jqgrid/locale-fr.min.js +7 -0
  66. data/templates/jqgrid/i18n/jqgrid/locale-gl.js +126 -0
  67. data/templates/jqgrid/i18n/jqgrid/locale-gl.min.js +7 -0
  68. data/templates/jqgrid/i18n/jqgrid/locale-he.js +127 -0
  69. data/templates/jqgrid/i18n/jqgrid/locale-he.min.js +6 -0
  70. data/templates/jqgrid/i18n/jqgrid/locale-hu.js +129 -0
  71. data/templates/jqgrid/i18n/jqgrid/locale-hu.min.js +6 -0
  72. data/templates/jqgrid/i18n/jqgrid/locale-is.js +126 -0
  73. data/templates/jqgrid/i18n/jqgrid/locale-is.min.js +6 -0
  74. data/templates/jqgrid/i18n/jqgrid/locale-it.js +1 -0
  75. data/templates/jqgrid/i18n/jqgrid/locale-it.min.js +7 -0
  76. data/templates/jqgrid/i18n/jqgrid/locale-ja.js +155 -0
  77. data/templates/jqgrid/i18n/jqgrid/locale-ja.min.js +5 -0
  78. data/templates/jqgrid/i18n/jqgrid/locale-nl.js +149 -0
  79. data/templates/jqgrid/i18n/jqgrid/locale-nl.min.js +6 -0
  80. data/templates/jqgrid/i18n/jqgrid/locale-no.js +1 -0
  81. data/templates/jqgrid/i18n/jqgrid/locale-no.min.js +6 -0
  82. data/templates/jqgrid/i18n/jqgrid/locale-pl.js +127 -0
  83. data/templates/jqgrid/i18n/jqgrid/locale-pl.min.js +6 -0
  84. data/templates/jqgrid/i18n/jqgrid/locale-pt-br.js +127 -0
  85. data/templates/jqgrid/i18n/jqgrid/locale-pt-br.min.js +6 -0
  86. data/templates/jqgrid/i18n/jqgrid/locale-pt.js +125 -0
  87. data/templates/jqgrid/i18n/jqgrid/locale-pt.min.js +6 -0
  88. data/templates/jqgrid/i18n/jqgrid/locale-ro.js +139 -0
  89. data/templates/jqgrid/i18n/jqgrid/locale-ro.min.js +7 -0
  90. data/templates/jqgrid/i18n/jqgrid/locale-ru.js +127 -0
  91. data/templates/jqgrid/i18n/jqgrid/locale-ru.min.js +7 -0
  92. data/templates/jqgrid/i18n/jqgrid/locale-sk.js +127 -0
  93. data/templates/jqgrid/i18n/jqgrid/locale-sk.min.js +6 -0
  94. data/templates/jqgrid/i18n/jqgrid/locale-sr.js +128 -0
  95. data/templates/jqgrid/i18n/jqgrid/locale-sr.min.js +6 -0
  96. data/templates/jqgrid/i18n/jqgrid/locale-sv.js +127 -0
  97. data/templates/jqgrid/i18n/jqgrid/locale-sv.min.js +6 -0
  98. data/templates/jqgrid/i18n/jqgrid/locale-tr.js +126 -0
  99. data/templates/jqgrid/i18n/jqgrid/locale-tr.min.js +6 -0
  100. data/templates/jqgrid/i18n/jqgrid/locale-ua.js +127 -0
  101. data/templates/jqgrid/i18n/jqgrid/locale-ua.min.js +7 -0
  102. data/templates/jqgrid/jquery.jqGrid.js +11604 -0
  103. data/templates/jqgrid/jquery.jqGrid.min.js +472 -0
  104. data/templates/jqgrid/jquery/jqGrid.scss +692 -0
  105. data/templates/jqgrid/manifest.rb +72 -0
  106. data/templates/jqgrid/public/stylesheets/ellipsis-xbl.xml +13 -0
  107. data/templates/jqtouch/jquery/touch/apple.scss +5 -5
  108. data/templates/jqtouch/jquery/touch/default.scss +5 -5
  109. data/templates/jqtouch/jquery/touch/jqt.scss +5 -5
  110. data/templates/jrails/config/initializers/jrails.rb +3 -0
  111. data/templates/jrails/jquery-ui.js +45 -62
  112. data/templates/jrails/jquery-ui.min.js +22 -22
  113. data/templates/jrails/jquery.js +340 -206
  114. data/templates/jrails/jquery.min.js +152 -151
  115. data/templates/jrails/jquery.tmpl.js +489 -0
  116. data/templates/jrails/jquery.tmpl.min.js +12 -0
  117. data/templates/jrails/jquery.tmplPlus.js +98 -0
  118. data/templates/jrails/jquery.tmplPlus.min.js +3 -0
  119. data/templates/jrails/jquery/ui/_theme.scss +3 -1
  120. data/templates/jrails/manifest.rb +4 -0
  121. data/templates/jstree/jquery.jstree.js +4479 -4468
  122. data/templates/jstree/jquery.jstree.min.js +4 -3
  123. data/templates/mobile/config/initializers/mobile.rb +6 -0
  124. data/templates/mobile/glyphish/Read me first - license.txt +14 -0
  125. data/templates/mobile/glyphish/icons-black/01-refresh.png +0 -0
  126. data/templates/mobile/glyphish/icons-black/02-redo.png +0 -0
  127. data/templates/mobile/glyphish/icons-black/03-loopback.png +0 -0
  128. data/templates/mobile/glyphish/icons-black/04-squiggle.png +0 -0
  129. data/templates/mobile/glyphish/icons-black/05-shuffle.png +0 -0
  130. data/templates/mobile/glyphish/icons-black/06-magnifying-glass.png +0 -0
  131. data/templates/mobile/glyphish/icons-black/07-map-marker.png +0 -0
  132. data/templates/mobile/glyphish/icons-black/08-chat.png +0 -0
  133. data/templates/mobile/glyphish/icons-black/09-chat2.png +0 -0
  134. data/templates/mobile/glyphish/icons-black/10-medical.png +0 -0
  135. data/templates/mobile/glyphish/icons-black/100-coffee.png +0 -0
  136. data/templates/mobile/glyphish/icons-black/101-gameplan.png +0 -0
  137. data/templates/mobile/glyphish/icons-black/102-walk.png +0 -0
  138. data/templates/mobile/glyphish/icons-black/103-map.png +0 -0
  139. data/templates/mobile/glyphish/icons-black/104-index-cards.png +0 -0
  140. data/templates/mobile/glyphish/icons-black/105-piano.png +0 -0
  141. data/templates/mobile/glyphish/icons-black/106-sliders.png +0 -0
  142. data/templates/mobile/glyphish/icons-black/107-widescreen.png +0 -0
  143. data/templates/mobile/glyphish/icons-black/108-badge.png +0 -0
  144. data/templates/mobile/glyphish/icons-black/109-chicken.png +0 -0
  145. data/templates/mobile/glyphish/icons-black/11-clock.png +0 -0
  146. data/templates/mobile/glyphish/icons-black/110-bug.png +0 -0
  147. data/templates/mobile/glyphish/icons-black/111-user.png +0 -0
  148. data/templates/mobile/glyphish/icons-black/112-group.png +0 -0
  149. data/templates/mobile/glyphish/icons-black/113-navigation.png +0 -0
  150. data/templates/mobile/glyphish/icons-black/114-balloon.png +0 -0
  151. data/templates/mobile/glyphish/icons-black/115-bow-and-arrow.png +0 -0
  152. data/templates/mobile/glyphish/icons-black/116-controller.png +0 -0
  153. data/templates/mobile/glyphish/icons-black/117-todo.png +0 -0
  154. data/templates/mobile/glyphish/icons-black/118-coathanger.png +0 -0
  155. data/templates/mobile/glyphish/icons-black/119-piggybank.png +0 -0
  156. data/templates/mobile/glyphish/icons-black/12-eye.png +0 -0
  157. data/templates/mobile/glyphish/icons-black/120-headphones.png +0 -0
  158. data/templates/mobile/glyphish/icons-black/121-lanscape.png +0 -0
  159. data/templates/mobile/glyphish/icons-black/122-stats.png +0 -0
  160. data/templates/mobile/glyphish/icons-black/123-id-card.png +0 -0
  161. data/templates/mobile/glyphish/icons-black/124-bullhorn.png +0 -0
  162. data/templates/mobile/glyphish/icons-black/125-food.png +0 -0
  163. data/templates/mobile/glyphish/icons-black/126-moon.png +0 -0
  164. data/templates/mobile/glyphish/icons-black/127-sock.png +0 -0
  165. data/templates/mobile/glyphish/icons-black/128-bone.png +0 -0
  166. data/templates/mobile/glyphish/icons-black/129-golf.png +0 -0
  167. data/templates/mobile/glyphish/icons-black/13-target.png +0 -0
  168. data/templates/mobile/glyphish/icons-black/130-dice.png +0 -0
  169. data/templates/mobile/glyphish/icons-black/14-tag.png +0 -0
  170. data/templates/mobile/glyphish/icons-black/15-tags.png +0 -0
  171. data/templates/mobile/glyphish/icons-black/16-line-chart.png +0 -0
  172. data/templates/mobile/glyphish/icons-black/17-bar-chart.png +0 -0
  173. data/templates/mobile/glyphish/icons-black/18-envelope.png +0 -0
  174. data/templates/mobile/glyphish/icons-black/19-gear.png +0 -0
  175. data/templates/mobile/glyphish/icons-black/20-gear2.png +0 -0
  176. data/templates/mobile/glyphish/icons-black/21-skull.png +0 -0
  177. data/templates/mobile/glyphish/icons-black/22-skull-n-crossbones.png +0 -0
  178. data/templates/mobile/glyphish/icons-black/23-bird.png +0 -0
  179. data/templates/mobile/glyphish/icons-black/24-gift.png +0 -0
  180. data/templates/mobile/glyphish/icons-black/25-weather.png +0 -0
  181. data/templates/mobile/glyphish/icons-black/26-bandaid.png +0 -0
  182. data/templates/mobile/glyphish/icons-black/27-planet.png +0 -0
  183. data/templates/mobile/glyphish/icons-black/28-star.png +0 -0
  184. data/templates/mobile/glyphish/icons-black/29-heart.png +0 -0
  185. data/templates/mobile/glyphish/icons-black/30-key.png +0 -0
  186. data/templates/mobile/glyphish/icons-black/31-ipod.png +0 -0
  187. data/templates/mobile/glyphish/icons-black/32-iphone.png +0 -0
  188. data/templates/mobile/glyphish/icons-black/33-cabinet.png +0 -0
  189. data/templates/mobile/glyphish/icons-black/34-coffee.png +0 -0
  190. data/templates/mobile/glyphish/icons-black/35-shopping-bag.png +0 -0
  191. data/templates/mobile/glyphish/icons-black/36-toolbox.png +0 -0
  192. data/templates/mobile/glyphish/icons-black/37-suitcase.png +0 -0
  193. data/templates/mobile/glyphish/icons-black/38-airplane.png +0 -0
  194. data/templates/mobile/glyphish/icons-black/39-spraycan.png +0 -0
  195. data/templates/mobile/glyphish/icons-black/40-inbox.png +0 -0
  196. data/templates/mobile/glyphish/icons-black/41-picture-frame.png +0 -0
  197. data/templates/mobile/glyphish/icons-black/42-photos.png +0 -0
  198. data/templates/mobile/glyphish/icons-black/43-film-roll.png +0 -0
  199. data/templates/mobile/glyphish/icons-black/44-shoebox.png +0 -0
  200. data/templates/mobile/glyphish/icons-black/45-movie1.png +0 -0
  201. data/templates/mobile/glyphish/icons-black/46-movie2.png +0 -0
  202. data/templates/mobile/glyphish/icons-black/47-fuel.png +0 -0
  203. data/templates/mobile/glyphish/icons-black/48-fork-and-knife.png +0 -0
  204. data/templates/mobile/glyphish/icons-black/49-battery.png +0 -0
  205. data/templates/mobile/glyphish/icons-black/50-beaker.png +0 -0
  206. data/templates/mobile/glyphish/icons-black/51-outlet.png +0 -0
  207. data/templates/mobile/glyphish/icons-black/52-pinetree.png +0 -0
  208. data/templates/mobile/glyphish/icons-black/53-house.png +0 -0
  209. data/templates/mobile/glyphish/icons-black/54-lock.png +0 -0
  210. data/templates/mobile/glyphish/icons-black/55-network.png +0 -0
  211. data/templates/mobile/glyphish/icons-black/56-cloud.png +0 -0
  212. data/templates/mobile/glyphish/icons-black/57-download.png +0 -0
  213. data/templates/mobile/glyphish/icons-black/58-bookmark.png +0 -0
  214. data/templates/mobile/glyphish/icons-black/59-flag.png +0 -0
  215. data/templates/mobile/glyphish/icons-black/60-signpost.png +0 -0
  216. data/templates/mobile/glyphish/icons-black/61-brightness.png +0 -0
  217. data/templates/mobile/glyphish/icons-black/62-contrast.png +0 -0
  218. data/templates/mobile/glyphish/icons-black/63-runner.png +0 -0
  219. data/templates/mobile/glyphish/icons-black/64-zap.png +0 -0
  220. data/templates/mobile/glyphish/icons-black/65-note.png +0 -0
  221. data/templates/mobile/glyphish/icons-black/66-microphone.png +0 -0
  222. data/templates/mobile/glyphish/icons-black/67-tshirt.png +0 -0
  223. data/templates/mobile/glyphish/icons-black/68-paperclip.png +0 -0
  224. data/templates/mobile/glyphish/icons-black/69-display.png +0 -0
  225. data/templates/mobile/glyphish/icons-black/70-tv.png +0 -0
  226. data/templates/mobile/glyphish/icons-black/71-compass.png +0 -0
  227. data/templates/mobile/glyphish/icons-black/72-pin.png +0 -0
  228. data/templates/mobile/glyphish/icons-black/73-radar.png +0 -0
  229. data/templates/mobile/glyphish/icons-black/74-location.png +0 -0
  230. data/templates/mobile/glyphish/icons-black/75-phone.png +0 -0
  231. data/templates/mobile/glyphish/icons-black/76-baby.png +0 -0
  232. data/templates/mobile/glyphish/icons-black/77-ekg.png +0 -0
  233. data/templates/mobile/glyphish/icons-black/78-stopwatch.png +0 -0
  234. data/templates/mobile/glyphish/icons-black/79-medical-bag.png +0 -0
  235. data/templates/mobile/glyphish/icons-black/80-shopping-cart.png +0 -0
  236. data/templates/mobile/glyphish/icons-black/81-dashboard.png +0 -0
  237. data/templates/mobile/glyphish/icons-black/82-dogpaw.png +0 -0
  238. data/templates/mobile/glyphish/icons-black/83-calendar.png +0 -0
  239. data/templates/mobile/glyphish/icons-black/84-lightbulb.png +0 -0
  240. data/templates/mobile/glyphish/icons-black/85-trophy.png +0 -0
  241. data/templates/mobile/glyphish/icons-black/86-camera.png +0 -0
  242. data/templates/mobile/glyphish/icons-black/87-wineglass.png +0 -0
  243. data/templates/mobile/glyphish/icons-black/88-beermug.png +0 -0
  244. data/templates/mobile/glyphish/icons-black/89-dumbbell.png +0 -0
  245. data/templates/mobile/glyphish/icons-black/90-lifebuoy.png +0 -0
  246. data/templates/mobile/glyphish/icons-black/91-beaker2.png +0 -0
  247. data/templates/mobile/glyphish/icons-black/92-testtube.png +0 -0
  248. data/templates/mobile/glyphish/icons-black/93-thermometer.png +0 -0
  249. data/templates/mobile/glyphish/icons-black/94-pill.png +0 -0
  250. data/templates/mobile/glyphish/icons-black/95-equalizer.png +0 -0
  251. data/templates/mobile/glyphish/icons-black/96-book.png +0 -0
  252. data/templates/mobile/glyphish/icons-black/97-puzzle.png +0 -0
  253. data/templates/mobile/glyphish/icons-black/98-palette.png +0 -0
  254. data/templates/mobile/glyphish/icons-black/99-umbrella.png +0 -0
  255. data/templates/mobile/glyphish/icons-white/09-chat2.png +0 -0
  256. data/templates/mobile/glyphish/icons-white/100-coffee.png +0 -0
  257. data/templates/mobile/glyphish/icons-white/18-envelope.png +0 -0
  258. data/templates/mobile/glyphish/icons-white/19-gear.png +0 -0
  259. data/templates/mobile/glyphish/icons-white/21-skull.png +0 -0
  260. data/templates/mobile/glyphish/icons-white/30-key.png +0 -0
  261. data/templates/mobile/glyphish/icons-white/34-coffee.png +0 -0
  262. data/templates/mobile/glyphish/icons-white/88-beermug.png +0 -0
  263. data/templates/mobile/glyphish/mini-icons-black/band-aid.png +0 -0
  264. data/templates/mobile/glyphish/mini-icons-black/chat.png +0 -0
  265. data/templates/mobile/glyphish/mini-icons-black/clock.png +0 -0
  266. data/templates/mobile/glyphish/mini-icons-black/eye.png +0 -0
  267. data/templates/mobile/glyphish/mini-icons-black/flag.png +0 -0
  268. data/templates/mobile/glyphish/mini-icons-black/fork-and-knife.png +0 -0
  269. data/templates/mobile/glyphish/mini-icons-black/gear.png +0 -0
  270. data/templates/mobile/glyphish/mini-icons-black/heart.png +0 -0
  271. data/templates/mobile/glyphish/mini-icons-black/lightning-bolt.png +0 -0
  272. data/templates/mobile/glyphish/mini-icons-black/magnifying-glass.png +0 -0
  273. data/templates/mobile/glyphish/mini-icons-black/map-marker.png +0 -0
  274. data/templates/mobile/glyphish/mini-icons-black/map-pin.png +0 -0
  275. data/templates/mobile/glyphish/mini-icons-black/microphone.png +0 -0
  276. data/templates/mobile/glyphish/mini-icons-black/music-note.png +0 -0
  277. data/templates/mobile/glyphish/mini-icons-black/paw.png +0 -0
  278. data/templates/mobile/glyphish/mini-icons-black/plus.png +0 -0
  279. data/templates/mobile/glyphish/mini-icons-black/puzzle.png +0 -0
  280. data/templates/mobile/glyphish/mini-icons-black/star.png +0 -0
  281. data/templates/mobile/glyphish/mini-icons-black/tag.png +0 -0
  282. data/templates/mobile/glyphish/mini-icons-black/tshirt.png +0 -0
  283. data/templates/mobile/jquery.mobile.js +3995 -0
  284. data/templates/mobile/jquery.mobile.min.js +28 -0
  285. data/templates/mobile/jquery/mobile/_base.scss +1344 -0
  286. data/templates/mobile/jquery/mobile/default.scss +745 -0
  287. data/templates/mobile/jquery/mobile/default/ajax-loader.png +0 -0
  288. data/templates/mobile/jquery/mobile/default/form-check-off.png +0 -0
  289. data/templates/mobile/jquery/mobile/default/form-check-on.png +0 -0
  290. data/templates/mobile/jquery/mobile/default/form-radio-off.png +0 -0
  291. data/templates/mobile/jquery/mobile/default/form-radio-on.png +0 -0
  292. data/templates/mobile/jquery/mobile/default/icon-search-black.png +0 -0
  293. data/templates/mobile/jquery/mobile/default/icons-18-black.png +0 -0
  294. data/templates/mobile/jquery/mobile/default/icons-18-white.png +0 -0
  295. data/templates/mobile/jquery/mobile/default/icons-36-black.png +0 -0
  296. data/templates/mobile/jquery/mobile/default/icons-36-white.png +0 -0
  297. data/templates/mobile/jquery/mobile/valencia.scss +807 -0
  298. data/templates/mobile/jquery/mobile/valencia/ajax-loader.png +0 -0
  299. data/templates/mobile/jquery/mobile/valencia/form-check-off.png +0 -0
  300. data/templates/mobile/jquery/mobile/valencia/form-check-on.png +0 -0
  301. data/templates/mobile/jquery/mobile/valencia/form-radio-off.png +0 -0
  302. data/templates/mobile/jquery/mobile/valencia/form-radio-on.png +0 -0
  303. data/templates/mobile/jquery/mobile/valencia/icon-search-black.png +0 -0
  304. data/templates/mobile/jquery/mobile/valencia/icons-18-black.png +0 -0
  305. data/templates/mobile/jquery/mobile/valencia/icons-18-white.png +0 -0
  306. data/templates/mobile/jquery/mobile/valencia/icons-36-black.png +0 -0
  307. data/templates/mobile/jquery/mobile/valencia/icons-36-white.png +0 -0
  308. data/templates/mobile/jquery/mobile/valencia/texture_05.png +0 -0
  309. data/templates/mobile/jquery/mobile/valencia/texture_075.png +0 -0
  310. data/templates/mobile/lib/tasks/jquery.mobile.rake +106 -0
  311. data/templates/mobile/manifest.rb +191 -0
  312. data/templates/secret_sauce/app/views/shared/_ui_form_error_messages.html.haml +6 -0
  313. data/templates/secret_sauce/app/views/shared/_ui_grid_for_without_block.js.haml +144 -0
  314. data/templates/secret_sauce/app/views/shared/_ui_static_dialog.html.haml +6 -0
  315. data/templates/secret_sauce/config/initializers/secret_sauce.rb +8 -0
  316. data/templates/secret_sauce/jquery/secret_sauce.scss +33 -0
  317. data/templates/secret_sauce/manifest.rb +10 -0
  318. data/templates/secret_sauce/secret_sauce.js +12 -0
  319. data/templates/secret_sauce/secret_sauce.min.js +1 -0
  320. metadata +313 -17
  321. data/.gitignore +0 -22
  322. data/compass-jquery-plugin.gemspec +0 -1064
@@ -0,0 +1,134 @@
1
+ module Gridify
2
+ class GridColumn
3
+
4
+ attr_accessor :name, # attribute name (required)
5
+ :label,
6
+ :ar_column, # active_record column
7
+ :value_type, # active_record data type :string, :text, :integer, :float, :boolean, + :currency
8
+ :key, # true if this is the key (only :id)
9
+
10
+ # column formatting
11
+ :width, # initial width (150)
12
+ :fixed_width, # true = not resized when recalc fit to width
13
+ :formatter, # see jqGrid doc (based on value_type)
14
+ :format_options, # hash, see jqGrid doc (based on value_type)
15
+ :align, # 'left', 'right', 'center' (left for strings, right for numerics)
16
+ #:classes, # optional classes to add to column
17
+
18
+ # column actions
19
+ :resizable, # t/f (true)
20
+ :sortable, # t/f (true) or jqGrid sorttype: :integer, :float, :currency, :date, :text (true)
21
+ :searchable, # true/false (true) or text or select
22
+ #:search_options,
23
+ :editable, # true/false (false),
24
+ :edit_type, # text, textarea, select, checkbox, password, button, image and file (based on value_type)
25
+ :edit_options, # html input field options, depends on editable type (eg {"size" => 10, "maxlength" => 15}) see http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules
26
+ :validations, # jqGrid editrules (TODO derive from AR model validations) see http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules
27
+ # "required" "integer" "email" "url" etc
28
+ :form_options, # jqGrid formoptions for formatting input forms
29
+ # select types
30
+ #:select_url, # url to dynamically get select options
31
+
32
+ # visiblity
33
+ #:always_hidden, # (false)
34
+ :sort_type,
35
+ :summary_type,
36
+ :summary_tpl,
37
+ :hidden # initial hide state (false)
38
+
39
+ def initialize(options)
40
+ update options
41
+ end
42
+
43
+ def update(options)
44
+ options.each {|atr, val| send( "#{atr}=", val )}
45
+ end
46
+
47
+ def to_json
48
+ properties.to_json #_with_js
49
+ end
50
+
51
+ def properties
52
+ jqgrid_properties
53
+ end
54
+
55
+ def resizable
56
+ if @resizable==false
57
+ false
58
+ else
59
+ # true or nil
60
+ true
61
+ end
62
+ end
63
+
64
+ def fixed_width
65
+ if @fixed_width==false
66
+ false
67
+ elsif @fixed_width.nil?
68
+ !resizable
69
+ else
70
+ @fixed_width
71
+ end
72
+ end
73
+
74
+ # ----------------
75
+ private
76
+
77
+ def jqgrid_type
78
+ return sortable unless sortable==true
79
+ case value_type
80
+ when :string : 'text'
81
+ when :text : 'text'
82
+ when :integer : 'integer'
83
+ when :float : 'float'
84
+ when :boolean : 'boolean'
85
+ when :datetime : 'date'
86
+ end
87
+ end
88
+
89
+ # note, we dont vals[:foo] = foo because dont want to bother generating key if its same as jqGrid default
90
+ def jqgrid_properties
91
+ vals = {
92
+ :name => name,
93
+ :index => name
94
+ }
95
+ #xmlmap not required when same as :name
96
+ # vals[:xmlmap] = name if data_type == :xml
97
+ # vals[:jsonmap] = name if data_type == :json
98
+
99
+ vals[:label] = label || name.titleize
100
+ vals[:resizable] = false if resizable==false
101
+ vals[:fixed] = fixed_width unless fixed_width==false
102
+ vals[:sortable] = false if sortable==false
103
+ vals[:sort_type] = jqgrid_type if sortable
104
+ vals[:search] = false if searchable==false
105
+ vals[:editable] = true if editable
106
+ vals[:align] = align if align
107
+ #vals[:align] = 'right' if [:integer, :float, :currency].include?(value_type)
108
+ case value_type
109
+ when :datetime
110
+ vals[:formatter] = 'date'
111
+ vals[:formatoptions] = { :srcformat => 'UniversalSortableDateTime', :newformat => 'FullDateTime' }
112
+ end
113
+ vals[:hidden] = true if hidden
114
+ vals[:width] = width if width
115
+ vals[:formatter] = formatter if formatter
116
+ vals[:formatoptions] = format_options if format_options
117
+ vals[:edittype] = edit_type if editable && edit_type
118
+ vals[:formoptions] = form_options if editable && form_options
119
+ vals[:editoptions] = edit_options if editable && edit_options
120
+ vals[:editrules] = validations if editable && validations
121
+
122
+ vals[:sort_type] = sort_type if sort_type
123
+ vals[:summaryType] = summary_type if summary_type
124
+ vals[:summaryTpl] = summary_tpl if summary_tpl
125
+ # and more...
126
+
127
+ vals
128
+ end
129
+
130
+ end
131
+ end
132
+
133
+ #<ActiveRecord::ConnectionAdapters::SQLiteColumn:0x2515a98 @sql_type="varchar(255)", @name="title", @precision=nil, @primary=false, @default=nil, @limit=255, @null=true, @type=:string, @scale=nil>
134
+
@@ -0,0 +1,223 @@
1
+ module Gridify
2
+ class Grid
3
+
4
+ attr_accessor :search_rules, # current search/filter rules, as hash
5
+ :search_rules_op # :and, :or
6
+
7
+ # finds records based on request params
8
+ # e.g. params from jqGrid
9
+ # :_search do search (true/false) ["false"]
10
+ # :sidx sort index (column to search on) [""]
11
+ # :sord sort direction (desc/asc) ["asc"]
12
+ # :nd ?
13
+ # :rows number of items to get ["20"]
14
+ # :page page number (starts at 1) ["1"]
15
+
16
+ def update_from_params( params )
17
+ params.symbolize_keys!
18
+ params_to_rules params
19
+ self.data_type = params[:datatype] if params[:datatype]
20
+ self.sort_by = params[:sidx] if params[:sidx]
21
+ self.sort_order = params[:sord] if params[:sord]
22
+ self.current_page = params[:page].to_i if params[:page]
23
+ self.rows_per_page = params[:rows].to_i if params[:rows]
24
+ self.total_rows = params[:total_rows].to_i if params[:total_rows]
25
+ end
26
+
27
+ # return find args (scope) for current settings
28
+ def current_scope
29
+ #debugger
30
+ find_args = {}
31
+ find_args[:include] = colInclude if colInclude
32
+ if sort_by.present? && col = columns_hash[sort_by]
33
+ if (sort_by.include? ".")
34
+ # Workaround for :include and nested attributes
35
+ field = sort_by.split('.', 2)
36
+ if field.length == 2
37
+ self.sort_by = field[0].pluralize + "." + field[1]
38
+ end
39
+ end
40
+ if case_sensitive || !([:string, :text].include?(col.value_type))
41
+ find_args[:order] = "#{sort_by} #{sort_order}"
42
+ else
43
+ find_args[:order] = "upper(#{sort_by}) #{sort_order}"
44
+ end
45
+ end
46
+ if total_rows.present? && total_rows > 0
47
+ find_args[:limit] = total_rows
48
+ offset = (current_page.to_i-1) * rows_per_page if current_page.present?
49
+ find_args[:offset] = offset if offset && offset > 0
50
+ elsif rows_per_page.present? && rows_per_page > 0
51
+ find_args[:limit] = rows_per_page
52
+ offset = (current_page.to_i-1) * rows_per_page if current_page.present?
53
+ find_args[:offset] = offset if offset && offset > 0
54
+ end
55
+ cond = rules_to_conditions
56
+ find_args[:conditions] = cond unless cond.blank?
57
+ find_args
58
+ end
59
+
60
+ def find( params )
61
+ #debugger
62
+ update_from_params params
63
+ klass = resource.classify.constantize
64
+ records = klass.send( finder, :all, current_scope )
65
+ end
66
+
67
+ def encode_records( records, userdata=nil, total_count=nil )
68
+ #debugger
69
+ klass = resource.classify.constantize
70
+ total_count ||= klass.count
71
+ total_pages = total_count / rows_per_page + 1
72
+ #TODO: :only => [attributes], :methods => [virtual attributes]
73
+ case data_type
74
+ when :xml
75
+ if colInclude
76
+ xml = records.to_xml( :include => colInclude, :skip_types => true, :dasherize => false ) do |xml|
77
+ if rows_per_page > 0
78
+ xml.page current_page
79
+ xml.total total_pages
80
+ xml.records total_count
81
+ end
82
+ end
83
+ else
84
+ xml = records.to_xml( :skip_types => true, :dasherize => false ) do |xml|
85
+ if rows_per_page > 0
86
+ xml.page current_page
87
+ xml.total total_pages
88
+ xml.records total_count
89
+ end
90
+ end
91
+ end
92
+ when :json
93
+ #debugger
94
+ data = { resource => records }
95
+ if rows_per_page > 0
96
+ data.merge!(
97
+ :page => current_page,
98
+ :total => total_pages,
99
+ :records => total_count
100
+ )
101
+ end
102
+ data.merge!( :userdata => userdata ) if userdata
103
+ save = ActiveRecord::Base.include_root_in_json
104
+ ActiveRecord::Base.include_root_in_json = false
105
+ if colInclude
106
+ json = data.to_json(:include => colInclude)
107
+ else
108
+ json = data.to_json
109
+ end
110
+ ActiveRecord::Base.include_root_in_json = save
111
+ json
112
+ #others...
113
+ else #nop ?
114
+ records.to_s
115
+ end
116
+ end
117
+
118
+ def find_and_encode( params )
119
+ encode_records( find( params ) )
120
+ end
121
+
122
+ # grid doesnt nest attributes inside the resource
123
+ # could change this behavior in jqGrid, see grid.postext.js ?
124
+ # http://www.trirand.com/jqgridwiki/doku.php?id=wiki:post_data_module
125
+ #
126
+ def member_params( params )
127
+ params.inject({}) {|h, (name, value)| h[name] = value if columns_hash[name]; h }
128
+ end
129
+
130
+ protected
131
+
132
+ OPS = { 'eq' => '=', 'lt' => '<', 'le' => '<=', 'gt' => '>', 'ge' => '>=', 'ne' => '!=' }
133
+ #['eq','ne','lt','le','gt','ge',
134
+ # 'bw','bn','in','ni','ew','en','cn','nc']
135
+ #['equal','not equal', 'less', 'less or equal','greater','greater or equal',
136
+ # 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain']
137
+
138
+ OPS_PATTERN = {
139
+ 'bw' => '?%',
140
+ 'bn' => '?%',
141
+ # 'in'
142
+ # 'ni'
143
+ 'ew' => '%?',
144
+ 'en' => '%?',
145
+ 'cn' => '%?%',
146
+ 'nc' => '%?%',
147
+ }
148
+
149
+ STRING_OPS = {
150
+ 'bw' => 'LIKE',
151
+ 'bn' => 'NOT LIKE',
152
+ 'ew' => 'LIKE',
153
+ 'en' => 'NOT LIKE',
154
+ 'cn' => 'LIKE',
155
+ 'nc' => 'NOT LIKE',
156
+ }
157
+
158
+ # params[:filters] => {"groupOp"=>"AND",
159
+ # "rules"=>[{"data"=>"b", "op"=>"ge", "field"=>"title"}, {"data"=>"f", "op"=>"le", "field"=>"title"}] }
160
+ def params_to_rules( params )
161
+ #debugger
162
+ if params[:_search]=='true' || params[:_search]==true
163
+ if params[:filters]
164
+ # advanced search
165
+ filters = ActiveSupport::JSON.decode( params[:filters] )
166
+ self.search_rules = filters['rules']
167
+ self.search_rules_op = filters['groupOp']
168
+ elsif params[:searchField]
169
+ # simple search
170
+ self.search_rules = [{ "field" => params[:searchField], "op" => params[:searchOper], "data" => params[:searchString]}]
171
+ else
172
+ # toolbar search
173
+ self.search_rules = []
174
+ self.search_rules_op = :and
175
+ colModel.each do |col|
176
+ name = col.name
177
+ data = params[name.to_sym]
178
+ self.search_rules << { "field" => name, "op" => "cn", "data" => data } if data
179
+ end
180
+ end
181
+ end
182
+ search_rules
183
+ end
184
+
185
+ def rules_to_conditions
186
+ # note: ignoring case_sensitive as an option, ActiveRecord find is insensitive by default (have to model the db to let it be case sensitive?)
187
+ return nil if search_rules.blank?
188
+ cond = nil
189
+ expr = ''
190
+ vals = []
191
+ search_rules.each do |rule|
192
+
193
+ # Workaround for :include and nested attributes
194
+ field = rule['field'].split('.', 2)
195
+ if field.length == 2
196
+ rule['field'] = field[0].pluralize + "." + field[1]
197
+ end
198
+
199
+ expr << " #{search_rules_op} " unless expr.blank?
200
+ if op = OPS[rule['op']]
201
+ expr << "#{rule['field']} #{op} ?"
202
+ vals << rule['data']
203
+ elsif op = STRING_OPS[rule['op']]
204
+ expr << "#{rule['field']} #{op} ?"
205
+ vals << OPS_PATTERN[rule['op']].gsub('?', rule['data'])
206
+ end
207
+ end
208
+ cond = [ expr ] + vals
209
+ end
210
+ end
211
+ end
212
+
213
+ # # If you need to display error messages
214
+ # err = ""
215
+ # if user
216
+ # user.errors.entries.each do |error|
217
+ # err << "<strong>#{error[0]}</strong> : #{error[1]}<br/>"
218
+ # end
219
+ # end
220
+ #
221
+ # render :text => "#{err}"
222
+
223
+ # { :add => true, :edit => true, :inline_edit => false, :delete => true, :edit_url => "/users/post_data", :error_handler => "after_submit" }
@@ -0,0 +1,279 @@
1
+ module Gridify
2
+ class Grid
3
+ # non persistent options:
4
+ # :build_model
5
+ # :only
6
+ # :except
7
+
8
+ attr_accessor :name, # name of the table (required)
9
+ :resource, # based on AR model class (assume tableized, plural, string)
10
+ # used as basis for all RESTful requests and data format
11
+ # model
12
+ :colModel, # incoming: hash of presets (native jqGrid); internally: array of GridColumn objects
13
+ # { :body => { "title" => {"width" => 98} }}
14
+ :colNames, # Column names
15
+ :colInclude, # included submodels
16
+ #:widths, # hash of column width (key = data type)
17
+ :searchable, # default: true (used in generating columns, changing has no effect on existing cols)
18
+ :sortable, # default: true (used in generating columns, changing has no effect on existing cols)
19
+ :editable, # default: false (used in generating columns, changing has no effect on existing cols)
20
+ :inline_edit,
21
+ :inline_edit_handler,
22
+ # grid
23
+ :dom_id, # defaults to #{resource}_#{name} eg "notes_grid"
24
+ :grid_view,
25
+ :jqgrid_options, # hash of additional jqGrid options that override any other settings
26
+ :ajax_grid_options,
27
+ #subgrid
28
+ :sub_grid,
29
+ :sub_grid_url,
30
+ :sub_grid_model,
31
+ # grid layout options
32
+ :width, # in pixels, or nil (nil means calculated based on overflow setting)
33
+ :width_fit, # :fluid, :scroll, or :visible
34
+ # :fluid will always fit container (presently ignores width option)
35
+ # :scroll uses horizontal scrollbars
36
+ # :fitted scales columns to fit in width, not fluid
37
+ :height, # in pixels, '100%', or :auto (150)
38
+ # :auto means makes it as tall as needed per number of rows
39
+ :resizable, # allow gride resize with mouse, (true) (or {}) for default options;
40
+ # nil or false for disabled; or hash of jqUI options
41
+ # see http://jqueryui.com/demos/resizable/
42
+ # defaults (differ from jqUI ones) "minWidth" => 150, "minHeight" => 80
43
+ # when overflow is fluid, "handles" => 's', otherwise 'e, s, se'
44
+ :arranger, # :sortable, :hide_show, :chooser, or nil for none (nil) ,
45
+ # can combine with array of options
46
+ # or can be a hash with options
47
+ # see http://www.trirand.com/jqgridwiki/doku.php?id=wiki:show_hide_columns
48
+ # rows
49
+ :alt_rows, # true for odd/even row classes, or odd row style name string (nil)
50
+ :row_numbers, # true to display row numbers in left column; or numeric width in pixels (nil)
51
+ :select_rows, # true for rows are selectable (eg for pager buttons); or js function when row is selected, false disables hover (true if pager buttons else false)
52
+ :multi_select,
53
+ :sortable_rows,
54
+ # header layer
55
+ :title, # title string (aka caption), or true for resource.titleize, nil for no title (nil)
56
+ :collapsible, # when true generates collapse icon (false)
57
+ :collapsed, # when true initial state is collapsed (false)
58
+
59
+ # pager layer
60
+ :pager, # id of the pager, or true => dom_id+"_pager", false or nil for no pager (nil)
61
+ :paging_controls, # false to disable all (true); or hash with native jqGrid options
62
+ :paging_choices, # array of rows_per_page choices ([10,25,50,100])
63
+ # nav buttons
64
+ :view_button, # true, or hash of native jqGrid parameters and events for the action
65
+ :add_button,
66
+ :edit_button,
67
+ :delete_button,
68
+ :search_button, # enable search button and dialog
69
+ :search_advanced, # instead of search_button
70
+ :search_toolbar, # toggleable search bar, true or :visible, :hidden (other options?) (nil)
71
+ :refresh_button,
72
+ :jqgrid_nav_options, # native jqGrid button options (added to 2nd arg in navGrid method)
73
+ # data
74
+ :restful, # use restful url and mtype (true) for all actions
75
+ :finder, # default: :find
76
+ :url, # request url (required unless table_to_grid or derived from resource)
77
+ # if nil, uses "/#{resource}" eg "/notes"
78
+ # note, to force "editurl" use jqgrid_options
79
+
80
+ :data_type, # :xml, :json, and other defined in jqGrid options doc (xml)
81
+ :data_format, # (defaults to rails conventin based on resource) <chickens><chicken><title><body> format
82
+ # set false for jqGrid default <rows><records><row><cell> format
83
+ :sort_by, # name of sort column of next request
84
+ :sort_order, # sort direction of next request, 'asc' or 'desc' ('asc')
85
+ :case_sensitive, # sort and search are case sensitive (false)
86
+ :current_page, # current page requested
87
+ :rows_per_page, # number of items to be requested in the next request (paging_choices.first or -1 if pager false)
88
+ :total_rows, # number of rows to read
89
+ :table_to_grid, # when true generates tableToGrid (false) from html table, then use as local data
90
+ # note, we assume table rows are not selectable.
91
+ # (tableToGrid sets multiselect when first col has checkboxes or radio buttons,
92
+ # we dont know to preserve this so you also need to set in options)
93
+ :load_once, # true to use local data after first load (false)
94
+ :error_handler, # javacript: method for crud error handling (default to "after_submit")
95
+ :error_container, # selector for posting error/flash messages (.errorExplanation)
96
+ # events
97
+ #:on_dbl_click_row,
98
+ #:on_sort_col,
99
+ #:serialize_grid_data,
100
+
101
+ :z
102
+
103
+ # ----------------------
104
+ # attribute defaults and special value handling
105
+ # (sure it'd be easier to initialize defaults using a hash but we want nil to mean the jqGrid default - might be true - and not pass a value at all)
106
+
107
+ def inline_edit
108
+ @inline_edit==true ? true : false
109
+ end
110
+
111
+ def inline_edit_handler
112
+ @inline_edit_handler || 'null'
113
+ end
114
+
115
+ def finder
116
+ @finder || :find
117
+ end
118
+
119
+ def searchable
120
+ @searchable==false ? false : true
121
+ end
122
+
123
+ def sortable
124
+ @sortable==false ? false : true
125
+ end
126
+
127
+ def sortable_rows
128
+ @sortable_rows==true ? true : false
129
+ end
130
+
131
+ def dom_id
132
+ @dom_id || "#{resource}_#{name}"
133
+ end
134
+
135
+ def grid_view
136
+ @grid_view==false ? false : true
137
+ end
138
+
139
+ def jqgrid_options
140
+ @jqgrid_options || {}
141
+ end
142
+
143
+ def ajax_grid_options
144
+ @ajax_grid_options || {}
145
+ end
146
+
147
+ def width_fit
148
+ @width_fit || :fluid
149
+ end
150
+
151
+ def resizable
152
+ return false if @resizable == false
153
+ rs = { "minWidth" => 150, "minHeight" => 80 }
154
+ rs.merge!({ "handles" => 's' }) if width_fit == :fluid
155
+ rs.merge!( @resizable ) if @resizable.is_a?(Hash)
156
+ rs
157
+ end
158
+
159
+ def arranger_type #read-only
160
+ if arranger.is_a?(Hash)
161
+ arranger.keys
162
+ else
163
+ Array(arranger)
164
+ end
165
+ end
166
+
167
+ def arranger_options(type) #read-only
168
+ (arranger[type] if arranger.is_a?(Hash)) || {}
169
+ end
170
+
171
+ def select_rows
172
+ if @select_rows
173
+ @select_rows
174
+ else
175
+ pager && (view_button || edit_button || delete_button)
176
+ end
177
+ end
178
+
179
+ # header layer
180
+ def title
181
+ case @title
182
+ when String: @title
183
+ when true: resource.titleize
184
+ else
185
+ ('&nbsp;' if collapsible || collapsed) #show header with blank title
186
+ end
187
+ end
188
+
189
+ def collapsible
190
+ @collapsible || @collapsed
191
+ end
192
+
193
+ # pager layer
194
+ def pager
195
+ case @pager
196
+ when String: @pager
197
+ when true: dom_id+'_pager'
198
+ end
199
+ end
200
+
201
+ def paging_controls
202
+ @paging_controls.nil? ? true : @paging_controls
203
+ end
204
+
205
+ def paging_choices
206
+ @paging_choices || [10,25,50,100]
207
+ end
208
+
209
+ def restful
210
+ @restful==false ? false : true
211
+ end
212
+
213
+ # data
214
+ def url
215
+ @url || "/#{resource}"
216
+ end
217
+
218
+ def rows_per_page
219
+ #debugger
220
+ # all rows when pager controls or rows per page are off
221
+ if !pager || paging_controls==false || @rows_per_page==false || @rows_per_page==-1
222
+ -1
223
+ elsif @rows_per_page.nil?
224
+ paging_choices.first
225
+ else
226
+ @rows_per_page
227
+ end
228
+ end
229
+
230
+ def data_type
231
+ @data_type || :json
232
+ end
233
+
234
+ def data_format
235
+ if @data_format || @data_format==false #explicit false for no param
236
+ @data_format
237
+ elsif resource && data_type == :xml
238
+ {
239
+ :root => resource,
240
+ :page => resource+'>page',
241
+ :total => resource+'>total',
242
+ :records => resource+'>records',
243
+ :row => resource.singularize,
244
+ :repeatitems => false,
245
+ :id => :id
246
+ }
247
+ elsif resource && data_type == :json
248
+ {
249
+ :root => resource,
250
+ :page => 'page',
251
+ :total => 'total',
252
+ :records => 'records',
253
+ :row => resource.singularize,
254
+ :repeatitems => false,
255
+ :id => :id
256
+ }
257
+ end
258
+ end
259
+
260
+ # events
261
+
262
+ # def serialize_grid_data
263
+ # @serialize_grid_data || {}
264
+ # end
265
+
266
+ def error_handler
267
+ @error_handler || 'gridify_action_error_handler'
268
+ end
269
+
270
+ def error_handler_return_value
271
+ error_handler ? error_handler : 'true;'
272
+ end
273
+
274
+ def error_container
275
+ @error_container || '.errorExplanation'
276
+ end
277
+
278
+ end
279
+ end