padrino-admin 0.8.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (353) hide show
  1. data/README.rdoc +40 -84
  2. data/VERSION +1 -1
  3. data/lib/padrino-admin.rb +3 -20
  4. data/lib/padrino-admin/access_control.rb +78 -326
  5. data/lib/padrino-admin/generators/actions.rb +6 -26
  6. data/lib/padrino-admin/generators/admin_app.rb +40 -11
  7. data/lib/padrino-admin/generators/admin_page.rb +11 -17
  8. data/lib/padrino-admin/generators/orm.rb +85 -0
  9. data/lib/padrino-admin/generators/templates/account/activerecord.rb.tt +43 -0
  10. data/lib/padrino-admin/generators/templates/account/datamapper.rb.tt +54 -0
  11. data/lib/padrino-admin/generators/templates/{page/db → account}/seeds.rb.tt +5 -6
  12. data/lib/padrino-admin/generators/{app/app.rb.tt → templates/app/app.rb} +2 -10
  13. data/lib/padrino-admin/generators/templates/app/controllers/base.rb +7 -0
  14. data/lib/padrino-admin/generators/{app → templates/app}/controllers/sessions.rb +6 -6
  15. data/lib/padrino-admin/generators/templates/assets/stylesheets/base.css +370 -0
  16. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/amro/style.css +364 -0
  17. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/bec-green/style.css +290 -0
  18. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/bec/style.css +301 -0
  19. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/blue/style.css +287 -0
  20. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/default/style.css +373 -0
  21. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/djime-cerulean/style.css +305 -0
  22. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/kathleene/style.css +279 -0
  23. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/olive/style.css +345 -0
  24. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/orange/style.css +269 -0
  25. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/reidb-greenish/style.css +302 -0
  26. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/ruby/style.css +281 -0
  27. data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/warehouse/style.css +391 -0
  28. data/lib/padrino-admin/generators/templates/erb/app/base/_sidebar.erb.tt +13 -0
  29. data/lib/padrino-admin/generators/templates/erb/app/base/index.erb.tt +17 -0
  30. data/lib/padrino-admin/generators/templates/erb/app/layouts/application.erb.tt +44 -0
  31. data/lib/padrino-admin/generators/templates/erb/app/sessions/new.erb.tt +46 -0
  32. data/lib/padrino-admin/generators/templates/erb/page/_form.erb.tt +11 -0
  33. data/lib/padrino-admin/generators/templates/erb/page/edit.erb.tt +18 -0
  34. data/lib/padrino-admin/generators/templates/erb/page/index.erb.tt +36 -0
  35. data/lib/padrino-admin/generators/templates/erb/page/new.erb.tt +17 -0
  36. data/lib/padrino-admin/generators/templates/page/controller.rb.tt +32 -22
  37. data/lib/padrino-admin/helpers/authentication_helpers.rb +8 -9
  38. data/lib/padrino-admin/helpers/view_helpers.rb +20 -338
  39. data/lib/padrino-admin/locale/admin/de.yml +15 -49
  40. data/lib/padrino-admin/locale/admin/en.yml +12 -50
  41. data/lib/padrino-admin/locale/admin/it.yml +15 -50
  42. data/padrino-admin.gemspec +40 -321
  43. data/test/fixtures/data_mapper.rb +56 -7
  44. data/test/generators/test_admin_app_generator.rb +17 -16
  45. data/test/generators/test_admin_page_generator.rb +12 -16
  46. data/test/test_admin_application.rb +193 -12
  47. metadata +33 -314
  48. data/lib/padrino-admin/column_store.rb +0 -156
  49. data/lib/padrino-admin/config.rb +0 -36
  50. data/lib/padrino-admin/generators/admin_uploader.rb +0 -88
  51. data/lib/padrino-admin/generators/app/controllers/accounts.rb +0 -37
  52. data/lib/padrino-admin/generators/app/controllers/base.rb +0 -11
  53. data/lib/padrino-admin/generators/app/controllers/javascripts.rb +0 -10
  54. data/lib/padrino-admin/generators/app/views/accounts/_form.haml +0 -24
  55. data/lib/padrino-admin/generators/app/views/accounts/edit.haml +0 -3
  56. data/lib/padrino-admin/generators/app/views/accounts/grid.js.erb +0 -9
  57. data/lib/padrino-admin/generators/app/views/accounts/new.haml +0 -3
  58. data/lib/padrino-admin/generators/app/views/accounts/store.jml +0 -7
  59. data/lib/padrino-admin/generators/app/views/base/dashboard.haml +0 -3
  60. data/lib/padrino-admin/generators/app/views/base/index.haml +0 -19
  61. data/lib/padrino-admin/generators/app/views/javascripts/admin.js.erb +0 -490
  62. data/lib/padrino-admin/generators/app/views/javascripts/locale.js.erb +0 -135
  63. data/lib/padrino-admin/generators/app/views/sessions/new.haml +0 -26
  64. data/lib/padrino-admin/generators/assets/flash/charts.swf +0 -0
  65. data/lib/padrino-admin/generators/assets/flash/clippy.swf +0 -0
  66. data/lib/padrino-admin/generators/assets/flash/expressinstall.swf +0 -0
  67. data/lib/padrino-admin/generators/assets/flash/swfupload.swf +0 -0
  68. data/lib/padrino-admin/generators/assets/images/admin/back.gif +0 -0
  69. data/lib/padrino-admin/generators/assets/images/admin/background.png +0 -0
  70. data/lib/padrino-admin/generators/assets/images/admin/bg-content.png +0 -0
  71. data/lib/padrino-admin/generators/assets/images/admin/bg-hd-slate.png +0 -0
  72. data/lib/padrino-admin/generators/assets/images/admin/bg-hd.png +0 -0
  73. data/lib/padrino-admin/generators/assets/images/admin/bg-intro.png +0 -0
  74. data/lib/padrino-admin/generators/assets/images/admin/bg-login.png +0 -0
  75. data/lib/padrino-admin/generators/assets/images/admin/bg-menu-slate.png +0 -0
  76. data/lib/padrino-admin/generators/assets/images/admin/bg-menu.png +0 -0
  77. data/lib/padrino-admin/generators/assets/images/admin/bg.png +0 -0
  78. data/lib/padrino-admin/generators/assets/images/admin/btn-login.png +0 -0
  79. data/lib/padrino-admin/generators/assets/images/admin/cancel.gif +0 -0
  80. data/lib/padrino-admin/generators/assets/images/admin/categories.gif +0 -0
  81. data/lib/padrino-admin/generators/assets/images/admin/close.gif +0 -0
  82. data/lib/padrino-admin/generators/assets/images/admin/close.png +0 -0
  83. data/lib/padrino-admin/generators/assets/images/admin/delete.gif +0 -0
  84. data/lib/padrino-admin/generators/assets/images/admin/download.gif +0 -0
  85. data/lib/padrino-admin/generators/assets/images/admin/duplicate.gif +0 -0
  86. data/lib/padrino-admin/generators/assets/images/admin/edit.gif +0 -0
  87. data/lib/padrino-admin/generators/assets/images/admin/export.gif +0 -0
  88. data/lib/padrino-admin/generators/assets/images/admin/hd-bg.gif +0 -0
  89. data/lib/padrino-admin/generators/assets/images/admin/image.gif +0 -0
  90. data/lib/padrino-admin/generators/assets/images/admin/loader.gif +0 -0
  91. data/lib/padrino-admin/generators/assets/images/admin/logo-loader.png +0 -0
  92. data/lib/padrino-admin/generators/assets/images/admin/logo-small.png +0 -0
  93. data/lib/padrino-admin/generators/assets/images/admin/new.gif +0 -0
  94. data/lib/padrino-admin/generators/assets/images/admin/no-image.png +0 -0
  95. data/lib/padrino-admin/generators/assets/images/admin/preview.gif +0 -0
  96. data/lib/padrino-admin/generators/assets/images/admin/print.gif +0 -0
  97. data/lib/padrino-admin/generators/assets/images/admin/save.gif +0 -0
  98. data/lib/padrino-admin/generators/assets/images/admin/support.gif +0 -0
  99. data/lib/padrino-admin/generators/assets/images/admin/up.gif +0 -0
  100. data/lib/padrino-admin/generators/assets/images/ext/default/box/corners-blue.gif +0 -0
  101. data/lib/padrino-admin/generators/assets/images/ext/default/box/corners.gif +0 -0
  102. data/lib/padrino-admin/generators/assets/images/ext/default/box/l-blue.gif +0 -0
  103. data/lib/padrino-admin/generators/assets/images/ext/default/box/l.gif +0 -0
  104. data/lib/padrino-admin/generators/assets/images/ext/default/box/r-blue.gif +0 -0
  105. data/lib/padrino-admin/generators/assets/images/ext/default/box/r.gif +0 -0
  106. data/lib/padrino-admin/generators/assets/images/ext/default/box/tb-blue.gif +0 -0
  107. data/lib/padrino-admin/generators/assets/images/ext/default/box/tb.gif +0 -0
  108. data/lib/padrino-admin/generators/assets/images/ext/default/button/arrow.gif +0 -0
  109. data/lib/padrino-admin/generators/assets/images/ext/default/button/btn.gif +0 -0
  110. data/lib/padrino-admin/generators/assets/images/ext/default/button/group-cs.gif +0 -0
  111. data/lib/padrino-admin/generators/assets/images/ext/default/button/group-lr.gif +0 -0
  112. data/lib/padrino-admin/generators/assets/images/ext/default/button/group-tb.gif +0 -0
  113. data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-b-noline.gif +0 -0
  114. data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-b.gif +0 -0
  115. data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-bo.gif +0 -0
  116. data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-noline.gif +0 -0
  117. data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-o.gif +0 -0
  118. data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow.gif +0 -0
  119. data/lib/padrino-admin/generators/assets/images/ext/default/dd/drop-add.gif +0 -0
  120. data/lib/padrino-admin/generators/assets/images/ext/default/dd/drop-no.gif +0 -0
  121. data/lib/padrino-admin/generators/assets/images/ext/default/dd/drop-yes.gif +0 -0
  122. data/lib/padrino-admin/generators/assets/images/ext/default/editor/tb-sprite.gif +0 -0
  123. data/lib/padrino-admin/generators/assets/images/ext/default/form/checkbox.gif +0 -0
  124. data/lib/padrino-admin/generators/assets/images/ext/default/form/clear-trigger.gif +0 -0
  125. data/lib/padrino-admin/generators/assets/images/ext/default/form/clear-trigger.psd +0 -0
  126. data/lib/padrino-admin/generators/assets/images/ext/default/form/date-trigger.gif +0 -0
  127. data/lib/padrino-admin/generators/assets/images/ext/default/form/date-trigger.psd +0 -0
  128. data/lib/padrino-admin/generators/assets/images/ext/default/form/error-tip-corners.gif +0 -0
  129. data/lib/padrino-admin/generators/assets/images/ext/default/form/exclamation.gif +0 -0
  130. data/lib/padrino-admin/generators/assets/images/ext/default/form/radio.gif +0 -0
  131. data/lib/padrino-admin/generators/assets/images/ext/default/form/search-trigger.gif +0 -0
  132. data/lib/padrino-admin/generators/assets/images/ext/default/form/search-trigger.psd +0 -0
  133. data/lib/padrino-admin/generators/assets/images/ext/default/form/text-bg.gif +0 -0
  134. data/lib/padrino-admin/generators/assets/images/ext/default/form/trigger-tpl.gif +0 -0
  135. data/lib/padrino-admin/generators/assets/images/ext/default/form/trigger.gif +0 -0
  136. data/lib/padrino-admin/generators/assets/images/ext/default/form/trigger.psd +0 -0
  137. data/lib/padrino-admin/generators/assets/images/ext/default/gradient-bg.gif +0 -0
  138. data/lib/padrino-admin/generators/assets/images/ext/default/grid/Thumbs.db +0 -0
  139. data/lib/padrino-admin/generators/assets/images/ext/default/grid/arrow-left-white.gif +0 -0
  140. data/lib/padrino-admin/generators/assets/images/ext/default/grid/arrow-right-white.gif +0 -0
  141. data/lib/padrino-admin/generators/assets/images/ext/default/grid/col-move-bottom.gif +0 -0
  142. data/lib/padrino-admin/generators/assets/images/ext/default/grid/col-move-top.gif +0 -0
  143. data/lib/padrino-admin/generators/assets/images/ext/default/grid/columns.gif +0 -0
  144. data/lib/padrino-admin/generators/assets/images/ext/default/grid/dirty.gif +0 -0
  145. data/lib/padrino-admin/generators/assets/images/ext/default/grid/done.gif +0 -0
  146. data/lib/padrino-admin/generators/assets/images/ext/default/grid/drop-no.gif +0 -0
  147. data/lib/padrino-admin/generators/assets/images/ext/default/grid/drop-yes.gif +0 -0
  148. data/lib/padrino-admin/generators/assets/images/ext/default/grid/footer-bg.gif +0 -0
  149. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-blue-hd.gif +0 -0
  150. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-blue-split.gif +0 -0
  151. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-hrow.gif +0 -0
  152. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-loading.gif +0 -0
  153. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-split.gif +0 -0
  154. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-vista-hd.gif +0 -0
  155. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-hd-btn.gif +0 -0
  156. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-hrow-over.gif +0 -0
  157. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-hrow.gif +0 -0
  158. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-special-col-bg.gif +0 -0
  159. data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-special-col-sel-bg.gif +0 -0
  160. data/lib/padrino-admin/generators/assets/images/ext/default/grid/group-by.gif +0 -0
  161. data/lib/padrino-admin/generators/assets/images/ext/default/grid/group-expand-sprite.gif +0 -0
  162. data/lib/padrino-admin/generators/assets/images/ext/default/grid/hd-pop.gif +0 -0
  163. data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-asc.gif +0 -0
  164. data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-desc.gif +0 -0
  165. data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-lock.gif +0 -0
  166. data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-lock.png +0 -0
  167. data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-unlock.gif +0 -0
  168. data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-unlock.png +0 -0
  169. data/lib/padrino-admin/generators/assets/images/ext/default/grid/invalid_line.gif +0 -0
  170. data/lib/padrino-admin/generators/assets/images/ext/default/grid/loading.gif +0 -0
  171. data/lib/padrino-admin/generators/assets/images/ext/default/grid/mso-hd.gif +0 -0
  172. data/lib/padrino-admin/generators/assets/images/ext/default/grid/nowait.gif +0 -0
  173. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-first-disabled.gif +0 -0
  174. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-first.gif +0 -0
  175. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-last-disabled.gif +0 -0
  176. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-last.gif +0 -0
  177. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-next-disabled.gif +0 -0
  178. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-next.gif +0 -0
  179. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-prev-disabled.gif +0 -0
  180. data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-prev.gif +0 -0
  181. data/lib/padrino-admin/generators/assets/images/ext/default/grid/pick-button.gif +0 -0
  182. data/lib/padrino-admin/generators/assets/images/ext/default/grid/refresh.gif +0 -0
  183. data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-check-sprite.gif +0 -0
  184. data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-expand-sprite.gif +0 -0
  185. data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-over.gif +0 -0
  186. data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-sel.gif +0 -0
  187. data/lib/padrino-admin/generators/assets/images/ext/default/grid/sort-hd.gif +0 -0
  188. data/lib/padrino-admin/generators/assets/images/ext/default/grid/sort_asc.gif +0 -0
  189. data/lib/padrino-admin/generators/assets/images/ext/default/grid/sort_desc.gif +0 -0
  190. data/lib/padrino-admin/generators/assets/images/ext/default/grid/wait.gif +0 -0
  191. data/lib/padrino-admin/generators/assets/images/ext/default/layout/collapse.gif +0 -0
  192. data/lib/padrino-admin/generators/assets/images/ext/default/layout/expand.gif +0 -0
  193. data/lib/padrino-admin/generators/assets/images/ext/default/layout/gradient-bg.gif +0 -0
  194. data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-bottom.gif +0 -0
  195. data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-left.gif +0 -0
  196. data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-right.gif +0 -0
  197. data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-top.gif +0 -0
  198. data/lib/padrino-admin/generators/assets/images/ext/default/layout/ns-collapse.gif +0 -0
  199. data/lib/padrino-admin/generators/assets/images/ext/default/layout/ns-expand.gif +0 -0
  200. data/lib/padrino-admin/generators/assets/images/ext/default/layout/panel-close.gif +0 -0
  201. data/lib/padrino-admin/generators/assets/images/ext/default/layout/panel-title-bg.gif +0 -0
  202. data/lib/padrino-admin/generators/assets/images/ext/default/layout/panel-title-light-bg.gif +0 -0
  203. data/lib/padrino-admin/generators/assets/images/ext/default/layout/stick.gif +0 -0
  204. data/lib/padrino-admin/generators/assets/images/ext/default/layout/stuck.gif +0 -0
  205. data/lib/padrino-admin/generators/assets/images/ext/default/layout/tab-close-on.gif +0 -0
  206. data/lib/padrino-admin/generators/assets/images/ext/default/layout/tab-close.gif +0 -0
  207. data/lib/padrino-admin/generators/assets/images/ext/default/menu/checked.gif +0 -0
  208. data/lib/padrino-admin/generators/assets/images/ext/default/menu/group-checked.gif +0 -0
  209. data/lib/padrino-admin/generators/assets/images/ext/default/menu/item-over.gif +0 -0
  210. data/lib/padrino-admin/generators/assets/images/ext/default/menu/menu-parent.gif +0 -0
  211. data/lib/padrino-admin/generators/assets/images/ext/default/menu/menu.gif +0 -0
  212. data/lib/padrino-admin/generators/assets/images/ext/default/menu/unchecked.gif +0 -0
  213. data/lib/padrino-admin/generators/assets/images/ext/default/panel/corners-sprite.gif +0 -0
  214. data/lib/padrino-admin/generators/assets/images/ext/default/panel/left-right.gif +0 -0
  215. data/lib/padrino-admin/generators/assets/images/ext/default/panel/light-hd.gif +0 -0
  216. data/lib/padrino-admin/generators/assets/images/ext/default/panel/tool-sprite-tpl.gif +0 -0
  217. data/lib/padrino-admin/generators/assets/images/ext/default/panel/tool-sprites.gif +0 -0
  218. data/lib/padrino-admin/generators/assets/images/ext/default/panel/tools-sprites-trans.gif +0 -0
  219. data/lib/padrino-admin/generators/assets/images/ext/default/panel/top-bottom.gif +0 -0
  220. data/lib/padrino-admin/generators/assets/images/ext/default/panel/top-bottom.png +0 -0
  221. data/lib/padrino-admin/generators/assets/images/ext/default/panel/white-corners-sprite.gif +0 -0
  222. data/lib/padrino-admin/generators/assets/images/ext/default/panel/white-left-right.gif +0 -0
  223. data/lib/padrino-admin/generators/assets/images/ext/default/panel/white-top-bottom.gif +0 -0
  224. data/lib/padrino-admin/generators/assets/images/ext/default/progress/progress-bg.gif +0 -0
  225. data/lib/padrino-admin/generators/assets/images/ext/default/qtip/bg.gif +0 -0
  226. data/lib/padrino-admin/generators/assets/images/ext/default/qtip/close.gif +0 -0
  227. data/lib/padrino-admin/generators/assets/images/ext/default/qtip/tip-anchor-sprite.gif +0 -0
  228. data/lib/padrino-admin/generators/assets/images/ext/default/qtip/tip-sprite.gif +0 -0
  229. data/lib/padrino-admin/generators/assets/images/ext/default/s.gif +0 -0
  230. data/lib/padrino-admin/generators/assets/images/ext/default/shadow-c.png +0 -0
  231. data/lib/padrino-admin/generators/assets/images/ext/default/shadow-lr.png +0 -0
  232. data/lib/padrino-admin/generators/assets/images/ext/default/shadow.png +0 -0
  233. data/lib/padrino-admin/generators/assets/images/ext/default/shared/blue-loading.gif +0 -0
  234. data/lib/padrino-admin/generators/assets/images/ext/default/shared/calendar.gif +0 -0
  235. data/lib/padrino-admin/generators/assets/images/ext/default/shared/glass-bg.gif +0 -0
  236. data/lib/padrino-admin/generators/assets/images/ext/default/shared/hd-sprite.gif +0 -0
  237. data/lib/padrino-admin/generators/assets/images/ext/default/shared/large-loading.gif +0 -0
  238. data/lib/padrino-admin/generators/assets/images/ext/default/shared/left-btn.gif +0 -0
  239. data/lib/padrino-admin/generators/assets/images/ext/default/shared/loading-balls.gif +0 -0
  240. data/lib/padrino-admin/generators/assets/images/ext/default/shared/right-btn.gif +0 -0
  241. data/lib/padrino-admin/generators/assets/images/ext/default/shared/warning.gif +0 -0
  242. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/e-handle-dark.gif +0 -0
  243. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/e-handle.gif +0 -0
  244. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/ne-handle-dark.gif +0 -0
  245. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/ne-handle.gif +0 -0
  246. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/nw-handle-dark.gif +0 -0
  247. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/nw-handle.gif +0 -0
  248. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/s-handle-dark.gif +0 -0
  249. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/s-handle.gif +0 -0
  250. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/se-handle-dark.gif +0 -0
  251. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/se-handle.gif +0 -0
  252. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/square.gif +0 -0
  253. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/sw-handle-dark.gif +0 -0
  254. data/lib/padrino-admin/generators/assets/images/ext/default/sizer/sw-handle.gif +0 -0
  255. data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-bg.png +0 -0
  256. data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-thumb.png +0 -0
  257. data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-v-bg.png +0 -0
  258. data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-v-thumb.png +0 -0
  259. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/scroll-left.gif +0 -0
  260. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/scroll-right.gif +0 -0
  261. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/scroller-bg.gif +0 -0
  262. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  263. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  264. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-left-bg.gif +0 -0
  265. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-right-bg.gif +0 -0
  266. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-close.gif +0 -0
  267. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-strip-bg.gif +0 -0
  268. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-strip-bg.png +0 -0
  269. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-strip-btm-bg.gif +0 -0
  270. data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tabs-sprite.gif +0 -0
  271. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/bg.gif +0 -0
  272. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/btn-arrow-light.gif +0 -0
  273. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/btn-arrow.gif +0 -0
  274. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/btn-over-bg.gif +0 -0
  275. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/gray-bg.gif +0 -0
  276. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/more.gif +0 -0
  277. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-bg.gif +0 -0
  278. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-btn-sprite.gif +0 -0
  279. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  280. data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-xl-sep.gif +0 -0
  281. data/lib/padrino-admin/generators/assets/images/ext/default/tree/arrows.gif +0 -0
  282. data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-add.gif +0 -0
  283. data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-between.gif +0 -0
  284. data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-no.gif +0 -0
  285. data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-over.gif +0 -0
  286. data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-under.gif +0 -0
  287. data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-yes.gif +0 -0
  288. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-minus-nl.gif +0 -0
  289. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-minus.gif +0 -0
  290. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-plus-nl.gif +0 -0
  291. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-plus.gif +0 -0
  292. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end.gif +0 -0
  293. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-line.gif +0 -0
  294. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-minus-nl.gif +0 -0
  295. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-minus.gif +0 -0
  296. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-plus-nl.gif +0 -0
  297. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-plus.gif +0 -0
  298. data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow.gif +0 -0
  299. data/lib/padrino-admin/generators/assets/images/ext/default/tree/folder-open.gif +0 -0
  300. data/lib/padrino-admin/generators/assets/images/ext/default/tree/folder.gif +0 -0
  301. data/lib/padrino-admin/generators/assets/images/ext/default/tree/leaf.gif +0 -0
  302. data/lib/padrino-admin/generators/assets/images/ext/default/tree/loading.gif +0 -0
  303. data/lib/padrino-admin/generators/assets/images/ext/default/tree/s.gif +0 -0
  304. data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-error.gif +0 -0
  305. data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-info.gif +0 -0
  306. data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-question.gif +0 -0
  307. data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-warning.gif +0 -0
  308. data/lib/padrino-admin/generators/assets/images/ext/default/window/left-corners.png +0 -0
  309. data/lib/padrino-admin/generators/assets/images/ext/default/window/left-corners.psd +0 -0
  310. data/lib/padrino-admin/generators/assets/images/ext/default/window/left-right.png +0 -0
  311. data/lib/padrino-admin/generators/assets/images/ext/default/window/left-right.psd +0 -0
  312. data/lib/padrino-admin/generators/assets/images/ext/default/window/right-corners.png +0 -0
  313. data/lib/padrino-admin/generators/assets/images/ext/default/window/right-corners.psd +0 -0
  314. data/lib/padrino-admin/generators/assets/images/ext/default/window/top-bottom.png +0 -0
  315. data/lib/padrino-admin/generators/assets/images/ext/default/window/top-bottom.psd +0 -0
  316. data/lib/padrino-admin/generators/assets/javascripts/controls.js +0 -3
  317. data/lib/padrino-admin/generators/assets/javascripts/dragdrop.js +0 -3
  318. data/lib/padrino-admin/generators/assets/javascripts/effects.js +0 -4
  319. data/lib/padrino-admin/generators/assets/javascripts/ext.js +0 -29
  320. data/lib/padrino-admin/generators/assets/javascripts/prototype.js +0 -14
  321. data/lib/padrino-admin/generators/assets/javascripts/swfupload.js +0 -4
  322. data/lib/padrino-admin/generators/assets/stylesheets/admin.css +0 -60
  323. data/lib/padrino-admin/generators/assets/stylesheets/ext.css +0 -1543
  324. data/lib/padrino-admin/generators/assets/stylesheets/login.css +0 -17
  325. data/lib/padrino-admin/generators/assets/stylesheets/standard.css +0 -62
  326. data/lib/padrino-admin/generators/templates/page/views/_form.haml.tt +0 -9
  327. data/lib/padrino-admin/generators/templates/page/views/edit.haml.tt +0 -3
  328. data/lib/padrino-admin/generators/templates/page/views/grid.js.erb.tt +0 -9
  329. data/lib/padrino-admin/generators/templates/page/views/new.haml.tt +0 -3
  330. data/lib/padrino-admin/generators/templates/page/views/store.jml.tt +0 -6
  331. data/lib/padrino-admin/generators/templates/uploader/controller.rb +0 -24
  332. data/lib/padrino-admin/generators/templates/uploader/lib/uploader.rb +0 -66
  333. data/lib/padrino-admin/generators/templates/uploader/views/grid.js.erb +0 -57
  334. data/lib/padrino-admin/generators/templates/uploader/views/store.jml +0 -10
  335. data/lib/padrino-admin/locale/extjs/de.yml +0 -147
  336. data/lib/padrino-admin/locale/extjs/en.yml +0 -147
  337. data/lib/padrino-admin/locale/extjs/it.yml +0 -147
  338. data/lib/padrino-admin/orm.rb +0 -48
  339. data/lib/padrino-admin/orm/abstract.rb +0 -95
  340. data/lib/padrino-admin/orm/activerecord.rb +0 -144
  341. data/lib/padrino-admin/orm/datamapper.rb +0 -229
  342. data/lib/padrino-admin/orm/mongomapper.rb +0 -65
  343. data/lib/padrino-admin/utils/literal.rb +0 -13
  344. data/test/fixtures/active_record.rb +0 -29
  345. data/test/fixtures/mongo_mapper.rb +0 -12
  346. data/test/fixtures/test_column_store.jml +0 -11
  347. data/test/generators/test_admin_uploader_generator.rb +0 -56
  348. data/test/test_access_control.rb +0 -99
  349. data/test/test_active_record.rb +0 -96
  350. data/test/test_column_store.rb +0 -87
  351. data/test/test_config.rb +0 -13
  352. data/test/test_data_mapper.rb +0 -114
  353. data/test/test_mongo_mapper.rb +0 -30
@@ -1,147 +0,0 @@
1
- it:
2
- extjs:
3
- dateFormat: "d/m/Y"
4
- dateTimeFormat: "d/m/Y G:i"
5
- ddText: "{0} righe selezionate"
6
- closeText: "Chiudi pannello"
7
- invalidText: "Valore non valido"
8
- msg: "Caricamento in corso..."
9
- emptyText: ""
10
- splitRegion:
11
- splitTip: "Trascina per cambiare dimensioni."
12
- collapsibleSplitTip: "Trascina per cambiare dimensioni. Doppio click per nascondere."
13
- messageBox:
14
- ok: "OK"
15
- yesse: "Sì"
16
- cancel: "Annulla"
17
- none: "No"
18
- datePicker:
19
- todayText: "Oggi"
20
- minText: "Data precedente alla data minima"
21
- maxText: "Data successiva alla data massima"
22
- disabledDaysText: ""
23
- disabledDatesText: ""
24
- nextText: 'Mese successivo (Ctrl+Destra)'
25
- prevText: 'Mese precedente (Ctrl+Sinistra)'
26
- monthYearText: 'Scegli un mese (Ctrl+Su/Giu per cambiare anno)'
27
- todayTip: "{0} (Barra spaziatrice)"
28
- format: "d/m/y"
29
- cancelText: "Annulla"
30
- okText: " OK "
31
- startDay: 1
32
- grid:
33
- gridView:
34
- sortAscText: "Ordinamento crescente"
35
- sortDescText: "Ordinamento decrescente"
36
- lockText: "Blocca colonna"
37
- unlockText: "Sblocca colonna"
38
- columnsText: "Colonne"
39
- groupingView:
40
- emptyGroupText: '(Nessun dato)'
41
- groupByText: 'Raggruppa per questo campo'
42
- showGroupsText: 'Mostra nei gruppi'
43
- propertyColumnModel:
44
- nameText: "Nome"
45
- valueText: "Valore"
46
- dateFormat: "j/m/Y"
47
- search:
48
- searchText: "Cerca"
49
- searchTipText: "Inserisci una parola o premi cerca"
50
- selectAllText: "Seleziona Tutto"
51
- minCharsTipText: "Inserisci almeno {0} caratteri"
52
- pagingToolbar:
53
- beforePageText: "Pagina"
54
- afterPageText: "di {0}"
55
- firstText: "Prima pagina"
56
- prevText: "Pagina precedente"
57
- nextText: "Pagina successiva"
58
- lastText: "Ultima pagina"
59
- refreshText: "Aggiorna"
60
- displayMsg: "Record {0} - {1} di {2}"
61
- emptyMsg: 'Nessun dato da mostrare'
62
- form:
63
- textField:
64
- minLengthText: "La lunghezza minima è {0}"
65
- maxLengthText: "La lunghezza massima è {0}"
66
- blankText: "Campo obbligatorio"
67
- regexText: ""
68
- emptyText: ""
69
- numberField:
70
- minText: "Il valore minimo è {0}"
71
- maxText: "Il valore massimo è {0}"
72
- nanText: "{0} non è un valore numerico corretto"
73
- dateField:
74
- disabledDaysText: "Disabilitato"
75
- disabledDatesText: "Disabilitato"
76
- minText: "La data deve essere successiva al {0}"
77
- maxText: "La data deve essere precedente al {0}"
78
- invalidText: "{0} non \u00E8 una data valida. Deve essere nel formato {1}"
79
- format: "d/m/y"
80
- altFormats: "d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
81
- comboBox:
82
- loadingText: "Caricamento in corso..."
83
- valueNotFoundText: ""
84
- vTypes:
85
- emailText: 'Il campo deve essere un indirizzo e-mail nel formato "user@domain.com"'
86
- urlText: 'Il campo deve essere un indirizzo web nel formato "http://www.domain.com"'
87
- alphaText: 'Il campo deve contenere solo lettere e _'
88
- alphanumText: 'Il campo deve contenere solo lettere, numeri e _'
89
- htmlEditor:
90
- createLinkText: 'Inserire un URL per il link:'
91
- buttonTips:
92
- bold:
93
- title: 'Grassetto (Ctrl+B)'
94
- text: 'Rende il testo selezionato in grassetto.'
95
- cls: 'x-html-editor-tip'
96
- italic:
97
- title: 'Corsivo (Ctrl+I)'
98
- text: 'Rende il testo selezionato in corsivo.'
99
- cls: 'x-html-editor-tip'
100
- underline:
101
- title: 'Sottolinea (Ctrl+U)'
102
- text: 'Sottolinea il testo selezionato.'
103
- cls: 'x-html-editor-tip'
104
- increasefontsize:
105
- title: 'Ingrandisci testo'
106
- text: 'Aumenta la dimensione del carattere.'
107
- cls: 'x-html-editor-tip'
108
- decreasefontsize:
109
- title: 'Rimpicciolisci testo'
110
- text: 'Diminuisce la dimensione del carattere.'
111
- cls: 'x-html-editor-tip'
112
- backcolor:
113
- title: 'Colore evidenziatore testo'
114
- text: 'Modifica il colore di sfondo del testo selezionato.'
115
- cls: 'x-html-editor-tip'
116
- forecolor:
117
- title: 'Colore carattere'
118
- text: 'Modifica il colore del testo selezionato.'
119
- cls: 'x-html-editor-tip'
120
- justifyleft:
121
- title: 'Allinea a sinistra'
122
- text: 'Allinea il testo a sinistra.'
123
- cls: 'x-html-editor-tip'
124
- justifycenter:
125
- title: 'Centra'
126
- text: 'Centra il testo.'
127
- cls: 'x-html-editor-tip'
128
- justifyright:
129
- title: 'Allinea a destra'
130
- text: 'Allinea il testo a destra.'
131
- cls: 'x-html-editor-tip'
132
- insertunorderedlist:
133
- title: 'Elenco puntato'
134
- text: 'Elenco puntato.'
135
- cls: 'x-html-editor-tip'
136
- insertorderedlist:
137
- title: 'Elenco numerato'
138
- text: 'Elenco numerato.'
139
- cls: 'x-html-editor-tip'
140
- createlink:
141
- title: 'Collegamento'
142
- text: 'Trasforma il testo selezionato in un collegamanto.'
143
- cls: 'x-html-editor-tip'
144
- sourceedit:
145
- title: 'Sorgente'
146
- text: 'Passa alla modalit\u00E0 editing del sorgente.'
147
- cls: 'x-html-editor-tip'
@@ -1,48 +0,0 @@
1
- module Padrino
2
- module Admin
3
-
4
- ##
5
- # Extend your orm adding these functions:
6
- #
7
- # * Translatable columns names (if not just support them)
8
- # * Full text search
9
- # * Pagination
10
- # * Extend Account Model with: role, validation, permission, authentication
11
- #
12
- module Orm
13
-
14
- ##
15
- # ExtSearch it's the result of an ext_search
16
- #
17
- # result = Account.ext_search(..)
18
- # result.count
19
- # result.records
20
- #
21
- class ExtSearch < Struct.new(:count, :records); end
22
-
23
- ##
24
- # Method used for register the orm extensions.
25
- #
26
- def self.register!
27
- ::DataMapper::Model.append_inclusions(Padrino::Admin::Orm::DataMapper::Base) if defined?(::DataMapper)
28
- ::ActiveRecord::Base.send(:include, Padrino::Admin::Orm::ActiveRecord::Base) if defined?(::ActiveRecord)
29
- ::MongoMapper::Document.append_inclusions(Padrino::Admin::Orm::MongoMapper::Base) if defined?(::MongoMapper)
30
- # Extend also account model
31
- self.extend_account!
32
- end
33
-
34
- ##
35
- # This method it's used for extend Account Model (if present)
36
- #
37
- def self.extend_account!
38
- if defined?(Account) && Account.respond_to?(:orm)
39
- case Account.orm
40
- when :activerecord then Account.send(:include, Padrino::Admin::Orm::ActiveRecord::Account)
41
- when :datamapper then Account.send(:include, Padrino::Admin::Orm::DataMapper::Account)
42
- when :mongomapper then Account.send(:include, Padrino::Admin::Orm::MongoMapper::Account)
43
- end
44
- end
45
- end
46
- end # Orm
47
- end # Admin
48
- end # Padrino
@@ -1,95 +0,0 @@
1
- module Padrino
2
- module Admin
3
- class OrmError < StandardError #:nodoc:
4
- end
5
-
6
- module Orm
7
- module Abstract
8
- ##
9
- # In this module we have shared function that are shared
10
- # with all orm.
11
- #
12
- module Base
13
- def self.included(base) #:nodoc:
14
- base.send :include, InstanceMethods
15
- base.extend ClassMethods
16
- end
17
-
18
- module InstanceMethods
19
- end
20
-
21
- module ClassMethods
22
- ##
23
- # This method generate store and column config.
24
- # for lazinies hands instead supply:
25
- #
26
- # Model.column_store("./../views/model/store.jml")
27
- #
28
- # you can:
29
- #
30
- # Model.column_store(options.views, "models/store")
31
- def column_store(*args)
32
- path = File.join(*args)
33
- path = Dir[path + ".{jml,jaml}"].first.to_s if path !~ /(\.jml|\.jaml)$/
34
- config = YAML.load_file(path)
35
- Padrino::Admin::ColumnStore.new(self, config)
36
- end
37
- end
38
- end # Abstract
39
-
40
- ##
41
- # Accoun Extensions
42
- #
43
- # An Account must have these column/fields:
44
- #
45
- # role:: String
46
- # email:: String (used as login)
47
- # crypted_password:: String
48
- # salt:: String
49
- #
50
- # We add to Account model some methods:
51
- #
52
- # Account.authenticate(email, password):: check if exist an account for the given email and return it if password match
53
- # account.password_clean:: return the decrypted password of an Account instance
54
- #
55
- module Account
56
-
57
- def self.included(base) #:nodoc:
58
- base.extend ClassMethods
59
- base.send :include, InstanceMethods
60
- end
61
-
62
- module ClassMethods
63
- ##
64
- # This method it's for authentication purpose
65
- #
66
- def authenticate(email, password)
67
- account = first(:conditions => { :email => email }) if email.present?
68
- account && account.password_clean == password ? account : nil
69
- end
70
- end
71
-
72
- module InstanceMethods
73
- ##
74
- # This method it's used for retrive the original password.
75
- #
76
- def password_clean
77
- crypted_password.decrypt(salt)
78
- end
79
-
80
- private
81
- def generate_password
82
- return if password.blank?
83
- self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{email}--") if new_record?
84
- self.crypted_password = password.encrypt(self.salt)
85
- end
86
-
87
- def password_required
88
- crypted_password.blank? || !password.blank?
89
- end
90
- end
91
- end # Account
92
- end # Abstract
93
- end # Orm
94
- end # Admin
95
- end # Padrino
@@ -1,144 +0,0 @@
1
- module Padrino
2
- module Admin
3
- module Orm
4
- module ActiveRecord
5
- ##
6
- # Here basic functions for interact with ActiveRecord
7
- #
8
- module Base
9
-
10
- def self.included(base) #:nodoc:
11
- base.send :include, Padrino::Admin::Orm::Abstract::Base
12
- base.send :include, InstanceMethods
13
- base.extend ClassMethods
14
- end
15
-
16
- module InstanceMethods
17
- ##
18
- # Method for get only fields with errors
19
- #
20
- def errors_keys
21
- errors.map { |k,v| k.to_sym }.uniq
22
- end
23
- end # InstanceMethods
24
-
25
- module ClassMethods
26
- ##
27
- # Transforms attribute key names into a more humane and localizable format, such as "First name" instead of "first_name".
28
- #
29
- # ==== Examples
30
- # # Do: I18n.translate("models.person.attributes.first_name")
31
- # Person.human_local_attribute_name("first_name") # => "First name"
32
- #
33
- # Specify +options+ with additional translating options.
34
- #
35
- def human_local_attribute_name(field, options = {})
36
- options.reverse_merge!(:count => 1, :default => field.to_s.humanize, :scope => :models)
37
- I18n.translate("#{self.name.underscore}.attributes.#{field}", options)
38
- end
39
-
40
- ##
41
- # Transform table name into a more humane and localizable format, such as "Blog Posts" instead of "BlogPost".
42
- #
43
- # ==== Examples
44
- # # Do: I18n.translate("models.person.name")
45
- # Person.human_local_name # => "Persona"
46
- #
47
- # Specify +options+ with additional translating options.
48
- #
49
- def human_local_name(options = {})
50
- options.reverse_merge!(:count => 1, :default => self.name.humanize, :scope => :models)
51
- I18n.translate("#{self.name.underscore}.name", options)
52
- end
53
-
54
- ##
55
- # Alias method for get columns names
56
- #
57
- def properties
58
- columns
59
- end
60
-
61
- ##
62
- # Return :activerecord
63
- #
64
- def orm
65
- :activerecord
66
- end
67
-
68
- ##
69
- # Method for perorm a full text search / sorting in ExtJS grids.
70
- #
71
- # For build a query you can provide for +params+:
72
- #
73
- # query:: word do search will be converted to "%word%"
74
- # fields:: where you want search
75
- # sort:: field to sort
76
- # dir:: one of ASC/DESC
77
- # limit:: limit your results
78
- # start:: offset of your resluts
79
- #
80
- # For +query+ we mean standard adapter options such as +include+, +joins+ ...
81
- #
82
- # So a +ext_search+ can be:
83
- #
84
- # Account.ext_search({:query => "foo", fileds="name,surname,categories.name", :sort => "name",
85
- # :dir => "asc", :limit => 50, :offset => 10 }, { :joins => :categories })
86
- #
87
- def ext_search(params, query={})
88
-
89
- # We build a base struct for have some good results
90
- result = ExtSearch.new(0, [])
91
-
92
- # Search conditions
93
- if params[:query].present? && params[:fields].present?
94
- filters = params[:fields].split(",").collect { |f| "#{f} LIKE ?" }.compact
95
- query[:conditions] = [filters.join(" OR ")].concat((1..filters.size).collect { "%#{params[:query]}%" })
96
- end
97
-
98
- result.count = count(query)
99
-
100
- # Order conditions
101
- query[:order] = params[:sort].present? && params[:dir].to_s =~ /^(asc|desc)$/i ? "#{params[:sort]} #{params[:dir]}" : nil
102
-
103
- # Now time to limit/offset it
104
- query[:limit] = params[:limit].to_i if params[:limit].to_i > 0
105
- query[:offset] = params[:start].to_i if params[:start].to_i > 0
106
-
107
- result.records = all(query)
108
- result
109
- end
110
-
111
- end # ClassMethods
112
- end # Base
113
-
114
- ##
115
- # Here extension for Account for ActiveRecord
116
- #
117
- # Basically we need only to perform:
118
- #
119
- # * Validations (email, password, role)
120
- # * Generate crypted_password on save
121
- #
122
- module Account
123
-
124
- def self.included(base) #:nodoc:
125
- base.send :include, Padrino::Admin::Orm::Abstract::Account
126
- base.send :attr_accessor, :password
127
- # Validations
128
- base.validates_presence_of :email, :role
129
- base.validates_presence_of :password, :if => :password_required
130
- base.validates_presence_of :password_confirmation, :if => :password_required
131
- base.validates_length_of :password, :within => 4..40, :if => :password_required
132
- base.validates_confirmation_of :password, :if => :password_required
133
- base.validates_length_of :email, :within => 3..100
134
- base.validates_uniqueness_of :email, :case_sensitive => false
135
- base.validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
136
- base.validates_format_of :role, :with => /[A-Za-z]/
137
- # Callbacks
138
- base.before_save :generate_password
139
- end
140
- end # Account
141
- end # ActiveRecord
142
- end # Orm
143
- end # Admin
144
- end # Padrino
@@ -1,229 +0,0 @@
1
- module Padrino
2
- module Admin
3
- module Orm
4
- module DataMapper
5
- ##
6
- # Here basic functions for interact with DataMapper
7
- #
8
- module Base
9
-
10
- def self.included(base) #:nodoc:
11
- base.send :include, Padrino::Admin::Orm::Abstract::Base
12
- base.send :include, InstanceMethods
13
- base.extend ClassMethods
14
- end
15
-
16
- module InstanceMethods
17
- ##
18
- # This is an alias method to allow us to don't see deprecations
19
- # and keep compatibility with new DataMapper versions
20
- #
21
- def new_record?; new?; end
22
-
23
- ##
24
- # Returns a String, which Padrino uses for constructing an URL to this object.
25
- # The default implementation returns this record‘s id as a String,
26
- # or nil if this record‘s unsaved.
27
- #
28
- def to_param
29
- # We can't use alias_method here, because method 'id' optimizes itself on the fly.
30
- (id = self.id) ? id.to_s : nil # Be sure to stringify the id for routes
31
- end
32
-
33
- ##
34
- # Update attributes is deprecated but for compatibility with other ORM we support them.
35
- #
36
- def update_attributes(attributes = {})
37
- update(attributes)
38
- end
39
-
40
- ##
41
- # Method for get only fields with errors
42
- #
43
- def errors_keys
44
- errors.keys
45
- end
46
-
47
- end # InstanceMethods
48
-
49
- module ClassMethods
50
- ##
51
- # Transforms attribute key names into a more humane and localizable format, such as "First name" instead of "first_name".
52
- #
53
- # ==== Examples
54
- # # Do: I18n.translate("models.person.attributes.first_name")
55
- # Person.human_local_attribute_name("first_name") # => "First name"
56
- #
57
- # Specify +options+ with additional translating options.
58
- #
59
- def human_local_attribute_name(field, options = {})
60
- options.reverse_merge!(:count => 1, :default => field.to_s.humanize, :scope => :models)
61
- I18n.translate("#{self.name.underscore}.attributes.#{field}", options)
62
- end
63
-
64
- ##
65
- # Transform table name into a more humane and localizable format, such as "Blog Posts" instead of "BlogPost".
66
- #
67
- # ==== Examples
68
- # # Do: I18n.translate("models.person.name")
69
- # Person.human_local_name # => "Persona"
70
- #
71
- # Specify +options+ with additional translating options.
72
- #
73
- def human_local_name(options = {})
74
- options.reverse_merge!(:count => 1, :default => self.name.humanize, :scope => :models)
75
- I18n.translate("#{self.name.underscore}.name", options)
76
- end
77
-
78
- ##
79
- # Return the name of the Table
80
- #
81
- # Because in some unkown circumstances +storage_names[:default]+ give us an wrong value
82
- # we use the class name for get the value
83
- #
84
- def table_name
85
- self.name.underscore.pluralize
86
- end
87
-
88
- ##
89
- # Return :activerecord
90
- #
91
- def orm
92
- :datamapper
93
- end
94
-
95
- ##
96
- # Method for perorm a full text search / sorting in ExtJS grids.
97
- #
98
- # For build a query you can provide for +params+:
99
- #
100
- # query:: word do search will be converted to "%word%"
101
- # fields:: where you want search
102
- # sort:: field to sort
103
- # dir:: one of ASC/DESC
104
- # limit:: limit your results
105
- # start:: offset of your resluts
106
- #
107
- # For +query+ we mean standard adapter options such as +links+ ...
108
- #
109
- # So a +ext_search+ can be:
110
- #
111
- # Account.ext_search({:query => "foo", fileds="name,surname,categories.name", :sort => "name",
112
- # :dir => "asc", :limit => 50, :offset => 10 }, { :links => :categories })
113
- #
114
- def ext_search(params, query={})
115
-
116
- # We build a base struct for have some good results
117
- result = ExtSearch.new(0, [])
118
-
119
- if params[:query].present? && params[:fields].present?
120
- # Here we build some like: ["name LIKE ?", "surname LIKE ?"]
121
- fields = params[:fields].split(",").collect { |f| "#{f.strip.downcase} LIKE ?" }
122
- # Here we build some like: ["name LIKE ? OR surname LIKE ?", "%foo%", "%foo%"]
123
- query[:conditions] = [fields.join(" OR ")].concat(1.upto(fields.length).collect { "%#{params[:query]}%" })
124
- end
125
-
126
- # Now we can perform a count
127
- result.count = count(query)
128
-
129
- # First we need to sort our record but we have some problems if we sort for associated tables.
130
- #
131
- # see: http://www.mail-archive.com/datamapper@googlegroups.com/msg01310.html
132
- #
133
- # I can get these values:
134
- #
135
- # * accounts.name
136
- # * accounts.posts.name
137
- # * accounts.posts.categories.name
138
- #
139
- # We need to transform in some like [DataMapper::Query::Direction.new(Account.properties[:name], :asc)]
140
- #
141
- if params[:sort].present? && params[:dir].to_s =~ /^(asc|desc)$/i
142
- values = params[:sort].to_s.sub(/^#{table_name}\./, "").split(".").collect(&:to_sym)
143
- property = values.delete_at(-1) # the last value is always a property
144
- relation = values.inject(self) do |relation, value|
145
- raise "Unknow relation #{value} for #{relation}" unless relation.relationships[value]
146
- relation.send(value)
147
- end
148
- target = relation.respond_to?(:model) ? relation.model.properties[property] : relation.properties[property]
149
- query[:order] = [::DataMapper::Query::Direction.new(target, params[:dir].to_s.downcase.to_sym)]
150
- end
151
-
152
- # Now time to limit/offset it
153
- query[:limit] = params[:limit].to_i if params[:limit].to_i > 0
154
- query[:offset] = params[:start].to_i if params[:start].to_i > 0
155
-
156
- # Now we can perform ording/limiting
157
- result.records = all(query)
158
- result
159
- end
160
-
161
- ##
162
- # The aim of this method is act DM as AR, so when you define a many-to-many relation like:
163
- #
164
- # has n, :images
165
- # has n, :images, :through => Resource
166
- #
167
- # you have two new methods:
168
- #
169
- # images_ids
170
- # images_ids=(*ids)
171
- #
172
- def has(cardinality, name, *args)
173
- relationship = super(cardinality, name, *args)
174
- if relationship.is_a?(::DataMapper::Associations::ManyToMany::Relationship) ||
175
- relationship.is_a?(::DataMapper::Associations::OneToMany::Relationship)
176
-
177
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
178
- def #{name.to_s.singular}_ids
179
- #{name}.collect(&:id)
180
- end
181
-
182
- def #{name.to_s.singular}_ids=(*ids)
183
- self.#{name} = #{relationship.child_model.name}.all(:id => ids.flatten)
184
- end
185
- RUBY
186
- end
187
- relationship
188
- end
189
- end # ClassMethods
190
- end # Base
191
-
192
- ##
193
- # Here extension for Account for MongoMapper
194
- #
195
- # Basically we need only to perform:
196
- #
197
- # * Validations (email, password, role)
198
- # * Generate crypted_password on save
199
- #
200
- module Account
201
-
202
- def self.included(base) #:nodoc:
203
- super(base)
204
- base.send :include, Padrino::Admin::Orm::Abstract::Account
205
- base.send :include, ::DataMapper::Validate
206
- base.send :attr_accessor, :password, :password_confirmation
207
- # Properties
208
- base.property :email, String
209
- base.property :crypted_password, String
210
- base.property :salt, String
211
- base.property :role, String
212
- # Validations
213
- base.validates_present :email, :role
214
- base.validates_present :password, :if => :password_required
215
- base.validates_present :password_confirmation, :if => :password_required
216
- base.validates_length :password, :min => 4, :max => 40, :if => :password_required
217
- base.validates_is_confirmed :password, :if => :password_required
218
- base.validates_length :email, :min => 3, :max => 100
219
- base.validates_is_unique :email, :case_sensitive => false
220
- base.validates_format :email, :with => :email_address
221
- base.validates_format :role, :with => /[A-Za-z]/
222
- # Callbacks
223
- base.before :save, :generate_password
224
- end
225
- end # Account
226
- end # DataMapper
227
- end # Orm
228
- end # Admin
229
- end # Padrino