crystal-ext 0.0.1

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 (327) hide show
  1. data/.gitignore +4 -0
  2. data/Rakefile +66 -0
  3. data/lib/abstract_interface/controller_helper.rb +30 -0
  4. data/lib/abstract_interface/form_builders/abstract_form_builder.rb +79 -0
  5. data/lib/abstract_interface/form_builders/themed_form_builder.rb +46 -0
  6. data/lib/abstract_interface/form_builders/themed_form_tag_builder.rb +13 -0
  7. data/lib/abstract_interface/haml_builder.rb +56 -0
  8. data/lib/abstract_interface/model_stub.rb +20 -0
  9. data/lib/abstract_interface/support.rb +56 -0
  10. data/lib/abstract_interface/theme.rb +37 -0
  11. data/lib/abstract_interface/view_builder.rb +158 -0
  12. data/lib/abstract_interface/view_helper.rb +31 -0
  13. data/lib/abstract_interface.rb +78 -0
  14. data/lib/common_interface/MIT-LICENSE +20 -0
  15. data/lib/common_interface/README.md +51 -0
  16. data/lib/common_interface/app/controllers/theme_controller.rb +65 -0
  17. data/lib/common_interface/app/controllers/theme_site_controller.rb +2 -0
  18. data/lib/common_interface/app/views/layouts/theme.html.erb +1 -0
  19. data/lib/common_interface/app/views/layouts/theme.js.erb +11 -0
  20. data/lib/common_interface/app/views/theme/_dialog.html.haml +7 -0
  21. data/lib/common_interface/app/views/theme/_popup.html.haml +4 -0
  22. data/lib/common_interface/app/views/theme/aspects.html.haml +32 -0
  23. data/lib/common_interface/app/views/theme/basic.html.haml +123 -0
  24. data/lib/common_interface/app/views/theme/dialog.js.erb +1 -0
  25. data/lib/common_interface/app/views/theme/folder.html.haml +45 -0
  26. data/lib/common_interface/app/views/theme/help.html.haml +7 -0
  27. data/lib/common_interface/app/views/theme/index.html.haml +24 -0
  28. data/lib/common_interface/app/views/theme/items.html.haml +91 -0
  29. data/lib/common_interface/app/views/theme/list.html.haml +23 -0
  30. data/lib/common_interface/app/views/theme/page/_folder.html.haml +10 -0
  31. data/lib/common_interface/app/views/theme/page/_note.html.haml +4 -0
  32. data/lib/common_interface/app/views/theme/page/_toolbar.html.haml +5 -0
  33. data/lib/common_interface/app/views/theme/page.html.haml +19 -0
  34. data/lib/common_interface/app/views/theme/popup.js.erb +1 -0
  35. data/lib/common_interface/app/views/theme/selector.html.haml +38 -0
  36. data/lib/common_interface/app/views/theme/style.html.erb +113 -0
  37. data/lib/common_interface/app/views/theme/tmp.html.erb +31 -0
  38. data/lib/common_interface/app/views/theme/user.html.haml +16 -0
  39. data/lib/common_interface/app/views/theme_shared/_comments.html.haml +11 -0
  40. data/lib/common_interface/app/views/theme_shared/_core_tools.html.haml +6 -0
  41. data/lib/common_interface/app/views/theme_shared/_line_previews.html.haml +39 -0
  42. data/lib/common_interface/app/views/theme_shared/_paginator.html.haml +7 -0
  43. data/lib/common_interface/app/views/theme_shared/_tools.html.haml +27 -0
  44. data/lib/common_interface/app/views/theme_shared/_top_navigation_bottom.html.haml +32 -0
  45. data/lib/common_interface/app/views/theme_site/blog.html.haml +13 -0
  46. data/lib/common_interface/app/views/theme_site/home.html.haml +9 -0
  47. data/lib/common_interface/app/views/theme_site/post.html.haml +11 -0
  48. data/lib/common_interface/app/views/theme_site/style.html.haml +9 -0
  49. data/lib/common_interface/app/views/themes/default/_application_t.html.haml +29 -0
  50. data/lib/common_interface/app/views/themes/default/_help_t.html.haml +1 -0
  51. data/lib/common_interface/app/views/themes/default/aspects/_comment_t.html.haml +14 -0
  52. data/lib/common_interface/app/views/themes/default/aspects/_controls_t.html.haml +3 -0
  53. data/lib/common_interface/app/views/themes/default/aspects/_details_t.html.haml +6 -0
  54. data/lib/common_interface/app/views/themes/default/aspects/_discussion_t.html.haml +9 -0
  55. data/lib/common_interface/app/views/themes/default/aspects/_paginator_t.html.haml +8 -0
  56. data/lib/common_interface/app/views/themes/default/aspects/_tag_selector_t.html.haml +11 -0
  57. data/lib/common_interface/app/views/themes/default/basic/_bottom_panel_t.html.haml +9 -0
  58. data/lib/common_interface/app/views/themes/default/basic/_dialog_t.html.haml +1 -0
  59. data/lib/common_interface/app/views/themes/default/basic/_divider_t.html.haml +2 -0
  60. data/lib/common_interface/app/views/themes/default/basic/_html_t.html.haml +1 -0
  61. data/lib/common_interface/app/views/themes/default/basic/_inplace_t.html.haml +1 -0
  62. data/lib/common_interface/app/views/themes/default/basic/_message_t.html.haml +3 -0
  63. data/lib/common_interface/app/views/themes/default/basic/_more_t.html.haml +5 -0
  64. data/lib/common_interface/app/views/themes/default/basic/_narrow_t.html.haml +1 -0
  65. data/lib/common_interface/app/views/themes/default/basic/_navigation_t.html.haml +9 -0
  66. data/lib/common_interface/app/views/themes/default/basic/_popup_t.html.haml +1 -0
  67. data/lib/common_interface/app/views/themes/default/basic/_text_t.html.haml +1 -0
  68. data/lib/common_interface/app/views/themes/default/basic/_title_t.html.haml +3 -0
  69. data/lib/common_interface/app/views/themes/default/basic/_tool_t.html.haml +4 -0
  70. data/lib/common_interface/app/views/themes/default/basic/_top_panel_t.html.haml +18 -0
  71. data/lib/common_interface/app/views/themes/default/components/_basic_list_item_t.html.haml +4 -0
  72. data/lib/common_interface/app/views/themes/default/components/_basic_list_t.html.haml +1 -0
  73. data/lib/common_interface/app/views/themes/default/components/_table_row_t.html.haml +5 -0
  74. data/lib/common_interface/app/views/themes/default/components/_table_t.html.haml +12 -0
  75. data/lib/common_interface/app/views/themes/default/components/_tabs_item_t.html.haml +4 -0
  76. data/lib/common_interface/app/views/themes/default/components/_tabs_t.html.haml +4 -0
  77. data/lib/common_interface/app/views/themes/default/components/_toolbar_t.html.haml +14 -0
  78. data/lib/common_interface/app/views/themes/default/forms/_begin_t.html.erb +3 -0
  79. data/lib/common_interface/app/views/themes/default/forms/_end_t.html.erb +3 -0
  80. data/lib/common_interface/app/views/themes/default/forms/_errors_t.html.haml +5 -0
  81. data/lib/common_interface/app/views/themes/default/forms/_field_t.html.haml +19 -0
  82. data/lib/common_interface/app/views/themes/default/forms/_line_t.html.haml +6 -0
  83. data/lib/common_interface/app/views/themes/default/items/_file_t.html.haml +19 -0
  84. data/lib/common_interface/app/views/themes/default/items/_folder_t.html.haml +23 -0
  85. data/lib/common_interface/app/views/themes/default/items/_line_t.html.haml +34 -0
  86. data/lib/common_interface/app/views/themes/default/items/_list_item_t.html.haml +16 -0
  87. data/lib/common_interface/app/views/themes/default/items/_list_t.html.haml +35 -0
  88. data/lib/common_interface/app/views/themes/default/items/_note_t.html.haml +16 -0
  89. data/lib/common_interface/app/views/themes/default/items/_page_t.html.haml +29 -0
  90. data/lib/common_interface/app/views/themes/default/items/_selector_t.html.haml +18 -0
  91. data/lib/common_interface/app/views/themes/default/items/_thumb_t.html.haml +12 -0
  92. data/lib/common_interface/app/views/themes/default/items/_user_t.html.haml +12 -0
  93. data/lib/common_interface/app/views/themes/default/layout_templates/_dashboard_t.html.haml +1 -0
  94. data/lib/common_interface/app/views/themes/default/layout_templates/_default_t.html.haml +11 -0
  95. data/lib/common_interface/app/views/themes/default/metadata.rb +117 -0
  96. data/lib/common_interface/app/views/themes/simple_organization/_application_js_t.html.erb +12 -0
  97. data/lib/common_interface/app/views/themes/simple_organization/_application_t.html.erb +45 -0
  98. data/lib/common_interface/app/views/themes/simple_organization/_help_t.html.erb +1 -0
  99. data/lib/common_interface/app/views/themes/simple_organization/aspects/_comment_t.html.haml +21 -0
  100. data/lib/common_interface/app/views/themes/simple_organization/aspects/_discussion_t.html.haml +14 -0
  101. data/lib/common_interface/app/views/themes/simple_organization/aspects/_paginator_t.html.haml +5 -0
  102. data/lib/common_interface/app/views/themes/simple_organization/aspects/_tag_selector_t.html.haml +10 -0
  103. data/lib/common_interface/app/views/themes/simple_organization/basic/_bottom_panel_t.html.erb +12 -0
  104. data/lib/common_interface/app/views/themes/simple_organization/basic/_divider_t.html.erb +3 -0
  105. data/lib/common_interface/app/views/themes/simple_organization/basic/_message_t.html.erb +7 -0
  106. data/lib/common_interface/app/views/themes/simple_organization/basic/_more_t.html.haml +5 -0
  107. data/lib/common_interface/app/views/themes/simple_organization/basic/_navigation_t.html.erb +15 -0
  108. data/lib/common_interface/app/views/themes/simple_organization/basic/_text_t.html.haml +1 -0
  109. data/lib/common_interface/app/views/themes/simple_organization/basic/_tool_t.html.erb +9 -0
  110. data/lib/common_interface/app/views/themes/simple_organization/basic/_top_panel_t.html.erb +14 -0
  111. data/lib/common_interface/app/views/themes/simple_organization/items/_line_t.html.haml +17 -0
  112. data/lib/common_interface/app/views/themes/simple_organization/items/_note_t.html.haml +16 -0
  113. data/lib/common_interface/app/views/themes/simple_organization/items/_selector_t.html.haml +11 -0
  114. data/lib/common_interface/app/views/themes/simple_organization/layout_templates/_default_t.html.erb +20 -0
  115. data/lib/common_interface/app/views/themes/simple_organization/layout_templates/_home_t.html.erb +14 -0
  116. data/lib/common_interface/app/views/themes/simple_organization/metadata.rb +193 -0
  117. data/lib/common_interface/asset_packages.yml +89 -0
  118. data/lib/common_interface/init.rb +21 -0
  119. data/lib/common_interface/lib/common_interface_helper.rb +49 -0
  120. data/lib/common_interface/public/common_interface/images/img1.jpg +0 -0
  121. data/lib/common_interface/public/common_interface/images/img1_200.jpg +0 -0
  122. data/lib/common_interface/public/common_interface/images/img1_icon.jpg +0 -0
  123. data/lib/common_interface/public/common_interface/images/img1_thumb.jpg +0 -0
  124. data/lib/common_interface/public/common_interface/images/img2.jpg +0 -0
  125. data/lib/common_interface/public/common_interface/images/img2_200.jpg +0 -0
  126. data/lib/common_interface/public/common_interface/images/img2_icon.jpg +0 -0
  127. data/lib/common_interface/public/common_interface/images/img2_thumb.jpg +0 -0
  128. data/lib/common_interface/public/common_interface/images/img3.jpg +0 -0
  129. data/lib/common_interface/public/common_interface/images/img3_200.jpg +0 -0
  130. data/lib/common_interface/public/common_interface/images/img3_icon.jpg +0 -0
  131. data/lib/common_interface/public/common_interface/images/img3_thumb.jpg +0 -0
  132. data/lib/common_interface/public/common_interface/images/video_icon.png +0 -0
  133. data/lib/common_interface/public/common_interface/js/aspects.js +0 -0
  134. data/lib/common_interface/public/common_interface/js/basic.js +229 -0
  135. data/lib/common_interface/public/common_interface/js/files_upload.js +115 -0
  136. data/lib/common_interface/public/common_interface/js/items.js +118 -0
  137. data/lib/common_interface/public/common_interface/js/style.js +50 -0
  138. data/lib/common_interface/public/common_interface/lib/jquery.elastic.js +117 -0
  139. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/blank.gif +0 -0
  140. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_close.png +0 -0
  141. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_loading.png +0 -0
  142. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_nav_left.png +0 -0
  143. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_nav_right.png +0 -0
  144. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_e.png +0 -0
  145. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_n.png +0 -0
  146. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_ne.png +0 -0
  147. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_nw.png +0 -0
  148. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_s.png +0 -0
  149. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_se.png +0 -0
  150. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_sw.png +0 -0
  151. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_shadow_w.png +0 -0
  152. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_title_left.png +0 -0
  153. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_title_main.png +0 -0
  154. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_title_over.png +0 -0
  155. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancy_title_right.png +0 -0
  156. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancybox-x.png +0 -0
  157. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancybox-y.png +0 -0
  158. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/fancybox.png +0 -0
  159. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/jquery.easing-1.3.pack.js +72 -0
  160. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/jquery.fancybox-1.3.1.js +1077 -0
  161. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/jquery.fancybox.css +363 -0
  162. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/jquery.fancybox.js +44 -0
  163. data/lib/common_interface/public/common_interface/lib/jquery.fancybox/jquery.mousewheel-3.0.2.pack.js +13 -0
  164. data/lib/common_interface/public/common_interface/lib/jquery.form.js +660 -0
  165. data/lib/common_interface/public/common_interface/lib/jquery.hoverIntent.js +111 -0
  166. data/lib/common_interface/public/common_interface/lib/jquery.jgrowl/jquery.jgrowl.css +128 -0
  167. data/lib/common_interface/public/common_interface/lib/jquery.jgrowl/jquery.jgrowl.js +307 -0
  168. data/lib/common_interface/public/common_interface/lib/jquery.js +4376 -0
  169. data/lib/common_interface/public/common_interface/lib/jquery.json.js +178 -0
  170. data/lib/common_interface/public/common_interface/lib/jquery.swfupload/cancel.png +0 -0
  171. data/lib/common_interface/public/common_interface/lib/jquery.swfupload/jquery.swfupload.js +64 -0
  172. data/lib/common_interface/public/common_interface/lib/jquery.swfupload/style.css +8 -0
  173. data/lib/common_interface/public/common_interface/lib/jquery.swfupload/swfupload/swfupload.js +980 -0
  174. data/lib/common_interface/public/common_interface/lib/jquery.swfupload/swfupload/swfupload.queue.js +98 -0
  175. data/lib/common_interface/public/common_interface/lib/jquery.swfupload/swfupload/swfupload.swf +0 -0
  176. data/lib/common_interface/public/common_interface/lib/jquery.swfupload/swfupload/wdp_buttons_upload_61x22.png +0 -0
  177. data/lib/common_interface/public/common_interface/lib/jquery.template.js +255 -0
  178. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  179. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  180. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_flat_10_000000_40x100.png +0 -0
  181. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  182. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  183. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  184. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  185. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  186. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  187. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-icons_222222_256x240.png +0 -0
  188. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-icons_228ef1_256x240.png +0 -0
  189. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-icons_ef8c08_256x240.png +0 -0
  190. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-icons_ffd27a_256x240.png +0 -0
  191. data/lib/common_interface/public/common_interface/lib/jquery.ui/images/ui-icons_ffffff_256x240.png +0 -0
  192. data/lib/common_interface/public/common_interface/lib/jquery.ui/jquery.ui.css +406 -0
  193. data/lib/common_interface/public/common_interface/lib/jquery.ui/jquery.ui.js +71 -0
  194. data/lib/common_interface/public/common_interface/themes/default/_aspects.scss +58 -0
  195. data/lib/common_interface/public/common_interface/themes/default/_basic.scss +228 -0
  196. data/lib/common_interface/public/common_interface/themes/default/_components.scss +151 -0
  197. data/lib/common_interface/public/common_interface/themes/default/_custom_reset.scss +12 -0
  198. data/lib/common_interface/public/common_interface/themes/default/_elastic.scss +72 -0
  199. data/lib/common_interface/public/common_interface/themes/default/_items.scss +88 -0
  200. data/lib/common_interface/public/common_interface/themes/default/_mixins.scss +39 -0
  201. data/lib/common_interface/public/common_interface/themes/default/_special.scss +34 -0
  202. data/lib/common_interface/public/common_interface/themes/default/_variables.scss +15 -0
  203. data/lib/common_interface/public/common_interface/themes/default/_yui_reset.scss +127 -0
  204. data/lib/common_interface/public/common_interface/themes/default/elastic.js +307 -0
  205. data/lib/common_interface/public/common_interface/themes/default/elastic.print.css +8 -0
  206. data/lib/common_interface/public/common_interface/themes/default/reset.css +157 -0
  207. data/lib/common_interface/public/common_interface/themes/default/reset.scss +5 -0
  208. data/lib/common_interface/public/common_interface/themes/default/style.css +580 -0
  209. data/lib/common_interface/public/common_interface/themes/default/style.js +84 -0
  210. data/lib/common_interface/public/common_interface/themes/default/style.scss +11 -0
  211. data/lib/common_interface/public/common_interface/themes/simple_organization/_fixes.scss +130 -0
  212. data/lib/common_interface/public/common_interface/themes/simple_organization/_original.scss +852 -0
  213. data/lib/common_interface/public/common_interface/themes/simple_organization/img/comment-arrow.gif +0 -0
  214. data/lib/common_interface/public/common_interface/themes/simple_organization/img/comment-gravatar.gif +0 -0
  215. data/lib/common_interface/public/common_interface/themes/simple_organization/img/comment-reply.gif +0 -0
  216. data/lib/common_interface/public/common_interface/themes/simple_organization/img/logo-small.gif +0 -0
  217. data/lib/common_interface/public/common_interface/themes/simple_organization/img/logo.gif +0 -0
  218. data/lib/common_interface/public/common_interface/themes/simple_organization/img/main-two-columns-left.gif +0 -0
  219. data/lib/common_interface/public/common_interface/themes/simple_organization/img/main-two-columns.gif +0 -0
  220. data/lib/common_interface/public/common_interface/themes/simple_organization/img/sample-event.jpg +0 -0
  221. data/lib/common_interface/public/common_interface/themes/simple_organization/img/sample-gravatar.gif +0 -0
  222. data/lib/common_interface/public/common_interface/themes/simple_organization/img/sample-image.jpg +0 -0
  223. data/lib/common_interface/public/common_interface/themes/simple_organization/img/sample-thumbnail.jpg +0 -0
  224. data/lib/common_interface/public/common_interface/themes/simple_organization/original/archives.html +389 -0
  225. data/lib/common_interface/public/common_interface/themes/simple_organization/original/comments.html +486 -0
  226. data/lib/common_interface/public/common_interface/themes/simple_organization/original/empty-page.html +107 -0
  227. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/comment-arrow.gif +0 -0
  228. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/comment-gravatar.gif +0 -0
  229. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/comment-reply.gif +0 -0
  230. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/logo-small.gif +0 -0
  231. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/logo.gif +0 -0
  232. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/main-two-columns-left.gif +0 -0
  233. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/main-two-columns.gif +0 -0
  234. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/sample-event.jpg +0 -0
  235. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/sample-gravatar.gif +0 -0
  236. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/sample-image.jpg +0 -0
  237. data/lib/common_interface/public/common_interface/themes/simple_organization/original/img/sample-thumbnail.jpg +0 -0
  238. data/lib/common_interface/public/common_interface/themes/simple_organization/original/index.html +307 -0
  239. data/lib/common_interface/public/common_interface/themes/simple_organization/original/left-sidebar.html +307 -0
  240. data/lib/common_interface/public/common_interface/themes/simple_organization/original/no-subnavigation.html +290 -0
  241. data/lib/common_interface/public/common_interface/themes/simple_organization/original/single-column.html +209 -0
  242. data/lib/common_interface/public/common_interface/themes/simple_organization/original/style-demo.html +355 -0
  243. data/lib/common_interface/public/common_interface/themes/simple_organization/original/style.css +658 -0
  244. data/lib/common_interface/public/common_interface/themes/simple_organization/style.css +965 -0
  245. data/lib/common_interface/public/common_interface/themes/simple_organization/style.scss +2 -0
  246. data/lib/common_interface/public/common_interface/themes/simple_organization/tmp/comments.html +486 -0
  247. data/lib/common_interface/public/common_interface/themes/simple_organization/tmp/tmp.html +307 -0
  248. data/lib/common_interface/spec/controllers/theme_controller_spec.rb +50 -0
  249. data/lib/common_interface/spec/spec.opts +4 -0
  250. data/lib/common_interface/spec/spec_helper.rb +1 -0
  251. data/lib/common_interface/tmp/html.html +39 -0
  252. data/lib/common_interface/tmp/js.js +78 -0
  253. data/lib/mongo_mapper_ext/db_config.rb +76 -0
  254. data/lib/mongo_mapper_ext/hacks/fixes.rb +32 -0
  255. data/lib/mongo_mapper_ext/hacks/time_measuring.rb +44 -0
  256. data/lib/mongo_mapper_ext/micelaneous.rb +9 -0
  257. data/lib/mongo_mapper_ext/migrate.rake +33 -0
  258. data/lib/mongo_mapper_ext/migration.rb +108 -0
  259. data/lib/mongo_mapper_ext/mongo_mapper.rb +25 -0
  260. data/lib/mongo_mapper_ext/plugins/attributes_cache.rb +22 -0
  261. data/lib/mongo_mapper_ext/plugins/default_scope.rb +76 -0
  262. data/lib/mongo_mapper_ext/plugins/micelaneous.rb +81 -0
  263. data/lib/mongo_mapper_ext/spec_helper.rb +10 -0
  264. data/lib/mongo_mapper_ext/view_helpers.rb +10 -0
  265. data/lib/mongo_mapper_ext.rb +29 -0
  266. data/lib/rails_ext/README.markdown +13 -0
  267. data/lib/rails_ext/action_controller/global_path_prefix.rb +56 -0
  268. data/lib/rails_ext/action_controller/micelaneous.rb +118 -0
  269. data/lib/rails_ext/action_controller/persistent_params.rb +96 -0
  270. data/lib/rails_ext/action_controller/redirect_helper.rb +14 -0
  271. data/lib/rails_ext/action_controller/reload_page.rb +7 -0
  272. data/lib/rails_ext/action_controller.rb +19 -0
  273. data/lib/rails_ext/action_view/common_helper.rb +96 -0
  274. data/lib/rails_ext/action_view/ruby_template.rb +13 -0
  275. data/lib/rails_ext/action_view.rb +5 -0
  276. data/lib/rails_ext/active_record/merge_default_scope/hash_poser.rb +40 -0
  277. data/lib/rails_ext/active_record/merge_default_scope.rb +16 -0
  278. data/lib/rails_ext/active_record/micelaneous.rb +14 -0
  279. data/lib/rails_ext/active_record.rb +7 -0
  280. data/lib/rails_ext/active_support/micelaneous.rb +7 -0
  281. data/lib/rails_ext/active_support.rb +1 -0
  282. data/lib/rails_ext/asset_packager/action_view.rb +47 -0
  283. data/lib/rails_ext/asset_packager/asset_packager.rb +112 -0
  284. data/lib/rails_ext/asset_packager/jsmin.rb +205 -0
  285. data/lib/rails_ext/asset_packager/tasks.rb +27 -0
  286. data/lib/rails_ext/asset_packager.rb +4 -0
  287. data/lib/rails_ext/basic/handy_environment.rb +45 -0
  288. data/lib/rails_ext/basic/user_error.rb +12 -0
  289. data/lib/rails_ext/basic.rb +6 -0
  290. data/lib/rails_ext/hacks/ajax_flash.rb +9 -0
  291. data/lib/rails_ext/hacks/ajax_redirect_to.rb +19 -0
  292. data/lib/rails_ext/hacks/defer_static_javascripts.rb +18 -0
  293. data/lib/rails_ext/hacks/global_path_prefix.rb +33 -0
  294. data/lib/rails_ext/hacks/link_to.rb +105 -0
  295. data/lib/rails_ext/hacks/merge_default_scope.rb +20 -0
  296. data/lib/rails_ext/hacks/persistent_params.rb +16 -0
  297. data/lib/rails_ext/hacks/rjs_layout.rb +2 -0
  298. data/lib/rails_ext/micelaneous/addressable_uri.rb +45 -0
  299. data/lib/rails_ext/micelaneous/config_files.rb +18 -0
  300. data/lib/rails_ext/micelaneous/create_public_symlinks.rb +11 -0
  301. data/lib/rails_ext/micelaneous/defer_static_javascripts.rb +50 -0
  302. data/lib/rails_ext/micelaneous/email_config.rb +8 -0
  303. data/lib/rails_ext/micelaneous/i18n_helper.rb +143 -0
  304. data/lib/rails_ext/micelaneous/rails_require.rb +4 -0
  305. data/lib/rails_ext/micelaneous/safe_hash.rb +104 -0
  306. data/lib/rails_ext/micelaneous.rb +17 -0
  307. data/lib/rails_ext/public/rails_ext/rails_ext.css +2 -0
  308. data/lib/rails_ext/public/rails_ext/rails_ext.js +283 -0
  309. data/lib/rails_ext/spec/mongo_mapper_ext/micelaneous_plugin_spec.rb +56 -0
  310. data/lib/rails_ext/spec/mongo_mapper_ext/micelaneous_spec.rb +51 -0
  311. data/lib/rails_ext/spec/mongo_mapper_ext/mongo_mapper_migration_spec.rb +76 -0
  312. data/lib/rails_ext/spec/mongo_mapper_ext/scope_spec.rb +125 -0
  313. data/lib/rails_ext/spec/rails_ext/haml_builder_spec.rb +136 -0
  314. data/lib/rails_ext/spec/rails_ext/safe_hash_spec.rb +71 -0
  315. data/lib/rails_ext/spec/spec.opts +3 -0
  316. data/lib/sunspot/mongo_mapper/adapters.rb +79 -0
  317. data/lib/sunspot/mongo_mapper/searchable.rb +409 -0
  318. data/lib/sunspot/spec_helper.rb +11 -0
  319. data/readme.md +1 -0
  320. data/spec/mongo_mapper_ext/micelaneous_plugin_spec.rb +56 -0
  321. data/spec/mongo_mapper_ext/micelaneous_spec.rb +51 -0
  322. data/spec/mongo_mapper_ext/mongo_mapper_migration_spec.rb +76 -0
  323. data/spec/mongo_mapper_ext/scope_spec.rb +125 -0
  324. data/spec/rails_ext/haml_builder_spec.rb +136 -0
  325. data/spec/rails_ext/safe_hash_spec.rb +71 -0
  326. data/spec/spec.opts +4 -0
  327. metadata +405 -0
@@ -0,0 +1,108 @@
1
+ module MongoMapper::Migration
2
+ class MigrationDefinition
3
+ def upgrade &block
4
+ if block
5
+ @upgrade = block
6
+ else
7
+ @upgrade
8
+ end
9
+ end
10
+ alias_method :up, :upgrade
11
+
12
+ def downgrade &block
13
+ if block
14
+ @downgrade = block
15
+ else
16
+ @downgrade
17
+ end
18
+ end
19
+ alias_method :down, :downgrade
20
+ end
21
+
22
+ class Logger
23
+ attr_accessor :enabled
24
+
25
+ def initialize enabled = true
26
+ self.enabled = enabled
27
+ end
28
+
29
+ def info message
30
+ puts message if enabled
31
+ end
32
+ end
33
+
34
+ class << self
35
+ def logger= logger
36
+ @logger = logger ? logger : Logger.new(false)
37
+ end
38
+
39
+ def logger; @logger ||= Logger.new end
40
+
41
+ def define database_alias, version, &block
42
+ database_alias = database_alias.to_s
43
+
44
+ version.should! :be_a, Integer
45
+ definition = MigrationDefinition.new
46
+ block.call definition
47
+ definitions[database_alias][version] = definition
48
+ end
49
+
50
+ def update database_alias, version
51
+ database_alias = database_alias.to_s
52
+ db = MongoMapper.databases[database_alias]
53
+
54
+ if metadata(db).version == version
55
+ logger.info "Database '#{database_alias}' already is of #{version} version, no migration needed."
56
+ return false
57
+ else
58
+ logger.info "Migration for '#{database_alias}' Database:"
59
+ end
60
+
61
+ increase_db_version database_alias, db while metadata(db).version < version
62
+ decrease_db_version database_alias, db while metadata(db).version > version
63
+ true
64
+ end
65
+
66
+ def metadata db
67
+ col = db.collection 'db_metadata'
68
+ metadata = (col.find_one || {:version => 0}).to_openobject
69
+ end
70
+
71
+ def definitions
72
+ @definitions ||= Hash.new{|h, k| h[k] = []}
73
+ end
74
+
75
+ protected
76
+ def increase_db_version database_alias, db
77
+ m = metadata(db)
78
+ migration = definitions[database_alias][m.version + 1]
79
+ raise "No upgrade for version #{m.version + 1} of '#{database_alias}' Database!" unless migration and migration.up
80
+
81
+ migration.up.call db
82
+
83
+ m.version += 1
84
+ update_metadata db, m
85
+
86
+ logger.info "Database '#{database_alias}' upgraded to version #{m.version}."
87
+ end
88
+
89
+ def decrease_db_version database_alias, db
90
+ m = metadata(db)
91
+ migration = definitions[database_alias][m.version]
92
+ raise "No downgrade for version #{m.version} of '#{database_alias}' Database!" unless migration and migration.down
93
+
94
+ migration.down.call db
95
+
96
+ m.version -= 1
97
+ update_metadata db, m
98
+
99
+ logger.info "Database '#{database_alias}' downgraded to version #{m.version}."
100
+ end
101
+
102
+
103
+ def update_metadata db, metadata
104
+ col = db.collection 'db_metadata'
105
+ col.save metadata.to_hash
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,25 @@
1
+ MongoMapper.class_eval do
2
+ class << self
3
+
4
+ def logger
5
+ # return @logger ||= Logger.new(nil) if defined?(Spec)
6
+ unless @logger
7
+ @logger = if "irb" == $0
8
+ Logger.new(STDOUT)
9
+ else
10
+ if defined?(Rails)
11
+ Rails.test? ? Logger.new(nil) : Rails.logger
12
+ else
13
+ Logger.new(STDOUT)
14
+ end
15
+ end
16
+ end
17
+ @logger
18
+ end
19
+
20
+ def logger= logger
21
+ @logger = logger
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ module MongoMapper
2
+ module Plugins
3
+ module AttributesCache
4
+
5
+ module InstanceMethods
6
+ def cache
7
+ @cache ||= {}
8
+ end
9
+
10
+ def clear_cache
11
+ @cache = {}
12
+ end
13
+
14
+ def reload
15
+ @cache.clear if @cache
16
+ super
17
+ end
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,76 @@
1
+ module MongoMapper
2
+ module Plugins
3
+ module DefaultScope
4
+
5
+ module ClassMethods
6
+ def find_one options = {}
7
+ super default_scope_options.merge(options)
8
+ end
9
+
10
+ def find_many options = {}
11
+ super default_scope_options.merge(options)
12
+ end
13
+
14
+ def count options={}
15
+ super default_scope_options.merge(options)
16
+ end
17
+
18
+ def with_exclusive_scope options = {}, &block
19
+ Thread.current['mm_with_exclusive_scope'].should! :be_nil
20
+
21
+ before = Thread.current['mm_with_exclusive_scope']
22
+ begin
23
+ Thread.current['mm_with_exclusive_scope'] = options
24
+ block.call if block
25
+ ensure
26
+ Thread.current['mm_with_exclusive_scope'] = before
27
+ end
28
+ end
29
+
30
+ def with_scope options = {}, &block
31
+ Thread.current['mm_with_exclusive_scope'].should! :be_nil
32
+
33
+ before = Thread.current['mm_with_scope']
34
+ begin
35
+ options = before.merge options if before
36
+ Thread.current['mm_with_scope'] = options
37
+ block.call if block
38
+ ensure
39
+ Thread.current['mm_with_scope'] = before
40
+ end
41
+ end
42
+
43
+ protected
44
+ def default_scope options = nil, &block
45
+ options.should! :be_a, [NilClass, Hash]
46
+ self.write_inheritable_attribute(:default_scope, (options || block))
47
+ end
48
+
49
+ private
50
+ def default_scope_options
51
+ default_scope = self.read_inheritable_attribute(:default_scope)
52
+
53
+ exclusive_options = Thread.current['mm_with_exclusive_scope']
54
+ return exclusive_options if exclusive_options
55
+
56
+ options = if default_scope
57
+ if default_scope.respond_to? :call
58
+ default_scope.call self
59
+ else
60
+ default_scope
61
+ end
62
+ else
63
+ {}
64
+ end
65
+
66
+ if scope_options = Thread.current['mm_with_scope']
67
+ options = options.merge scope_options
68
+ end
69
+
70
+ options
71
+ end
72
+ end
73
+
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,81 @@
1
+ module MongoMapper
2
+ module Plugins
3
+ module Micelaneous
4
+
5
+ module InstanceMethods
6
+ def upsert *args
7
+ self.class.upsert id, *args
8
+ end
9
+ end
10
+
11
+ module ClassMethods
12
+ #
13
+ # Sequentiall :all for big collection
14
+ #
15
+ def all_sequentially &block
16
+ page, per_page = 1, 5
17
+ begin
18
+ results = paginate(:page => page, :per_page => per_page, :order => '_id asc')
19
+ results.each{|o| block.call o}
20
+ page += 1
21
+ end until results.blank? or results.size < per_page
22
+ end
23
+
24
+
25
+ #
26
+ # Connect to database_alias specified in config
27
+ #
28
+ def use_database database_alias
29
+ database_alias = database_alias.to_s
30
+ MongoMapper.db_config.should! :include, database_alias
31
+
32
+ self.connection MongoMapper.connections[database_alias]
33
+ set_database_name MongoMapper.db_config[database_alias]['name']
34
+ end
35
+
36
+
37
+ #
38
+ # shortcut for upsert
39
+ #
40
+ def upsert *args
41
+ collection.upsert *args
42
+ end
43
+
44
+
45
+ #
46
+ # CounterCache
47
+ # belongs_to :item, :counter_cashe => true
48
+ #
49
+ def belongs_to association_id, options={}, &extension
50
+ options.should_not! :include, :counter_cashe
51
+ if options.delete(:counter_cache) || options.delete('counter_cache')
52
+ association_id = association_id.to_s
53
+ association_key = "#{association_id}_id"
54
+ cache_attribute = "#{name.pluralize.underscore}_count"
55
+ cache_class = association_id.classify.constantize
56
+ cache_class.keys.should! :include, cache_attribute
57
+ increase_method_name = "increase_#{cache_class.name.underscore}_#{name.pluralize.underscore}_counter"
58
+ decrease_method_name = "decrease_#{cache_class.name.underscore}_#{name.pluralize.underscore}_counter"
59
+
60
+ define_method increase_method_name do
61
+ cache_class.upsert self.send(association_key), :$inc => {cache_attribute => 1}
62
+ end
63
+ protected increase_method_name
64
+
65
+ define_method decrease_method_name do
66
+ cache_class.upsert self.send(association_key), :$inc => {cache_attribute => -1}
67
+ end
68
+ protected decrease_method_name
69
+
70
+ after_create increase_method_name
71
+ after_destroy decrease_method_name
72
+ end
73
+
74
+ super association_id, options, &extension
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,10 @@
1
+ Spec::Runner.configure do |config|
2
+ config.before(:each) do
3
+ MongoMapper.db_config.each do |db_alias, opt|
4
+ db = MongoMapper.databases[db_alias]
5
+ db.collection_names.each do |name|
6
+ db.collection(name).drop
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ #
2
+ # HTML helpers
3
+ #
4
+ [MongoMapper::EmbeddedDocument::InstanceMethods, MongoMapper::Document::InstanceMethods].each do |aclass|
5
+ aclass.class_eval do
6
+ def dom_id
7
+ new_record? ? "new_#{self.class.name.underscore}" : to_param
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,29 @@
1
+ require 'mongo_mapper'
2
+
3
+
4
+ [
5
+ 'hacks/fixes',
6
+ 'hacks/time_measuring',
7
+ 'migration',
8
+ 'mongo_mapper',
9
+ 'view_helpers',
10
+ 'db_config',
11
+ 'micelaneous',
12
+
13
+ 'plugins/default_scope',
14
+ 'plugins/attributes_cache',
15
+ 'plugins/micelaneous',
16
+ ].each do |file|
17
+ require "#{File.dirname __FILE__}/mongo_mapper_ext/#{file}"
18
+ end
19
+
20
+ module CommonPluginsAddition
21
+ def self.included(model)
22
+ model.plugin MongoMapper::Plugins::DefaultScope
23
+ model.plugin MongoMapper::Plugins::AttributesCache
24
+ model.plugin MongoMapper::Plugins::Micelaneous
25
+
26
+ model.attr_protected :id, :_id, :_type, :created_at, :updated_at
27
+ end
28
+ end
29
+ MongoMapper::Document.append_inclusions(CommonPluginsAddition)
@@ -0,0 +1,13 @@
1
+ # Ruby on Rails extensions.
2
+
3
+ * Abstract Interface: Tool for rapid web interface creation, see [Common Interface][common_interface] - concrete realisation of Abstract Interface
4
+ * MongoMapperExt: MongoMapper extensions, Migration, Query Profiling in Log, Attributes Cache, Default Scope, BelongsTo Counter Cache
5
+ * Sunspot: Sunspot support for MongoMapper
6
+ * rails_ext - a lots of Rails hacks, mainly to add inheritance support (because there's no OOD and inheritance in Rails by default).
7
+
8
+ All these extensions should be different gems itself but right for me it's easier to deal with all of them in one place, later I'll split them.
9
+
10
+
11
+ Copyright (c) 2009 Alexey Petrushin ([http://bos-tec.com](http://bos-tec.com)), released under the MIT license.
12
+
13
+ [common_interface]: http://github.com/alexeypetrushin/common_interface
@@ -0,0 +1,56 @@
1
+ #
2
+ # Global path prefix (hack with relative_url_root)
3
+ #
4
+ GLOBAL_PATH_PREFIX_DELIMITER = '-'
5
+ ActionController::Base.send :class_eval do
6
+ def self.global_path_prefix
7
+ @global_path_prefix ||= []
8
+ end
9
+
10
+ def self.global_path_prefix= list
11
+ @global_path_prefix = list.collect{|v| v.to_s}
12
+ end
13
+
14
+ cattr_accessor :_relative_url_root
15
+ end
16
+ ActionController::Base._relative_url_root = ActionController::Base.relative_url_root || ""
17
+
18
+ #
19
+ # Generation
20
+ #
21
+
22
+ # routes
23
+ ActionController::Base.send :class_eval do
24
+ around_filter :hack_relative_url_root
25
+ protected
26
+
27
+ # preparing relative_url_root from params
28
+ def hack_relative_url_root
29
+ begin
30
+ update_relative_url_root!
31
+ yield
32
+ ensure
33
+ ActionController::Base.relative_url_root = ActionController::Base._relative_url_root
34
+ end
35
+ end
36
+
37
+ def update_relative_url_root!
38
+ prefix_params = []
39
+ ActionController::Base.global_path_prefix.each do |name|
40
+ unless (param = params[name]).blank?
41
+ prefix_params << [name, CGI.escape(param)]
42
+ end
43
+ end
44
+ prefix = prefix_params.collect{|name, param| "#{param}#{GLOBAL_PATH_PREFIX_DELIMITER}#{name}"}.join('/')
45
+ ActionController::Base.relative_url_root = ActionController::Base._relative_url_root + (prefix.blank? ? "" : "/" + prefix)
46
+ end
47
+ end
48
+
49
+ #
50
+ # Usability
51
+ # allows to install a global_path_prefix to the route set by calling: map.global_path_prefix 'locale'
52
+ ActionController::Routing::RouteSet::Mapper.class_eval do
53
+ def global_path_prefix *args
54
+ ActionController::Base.global_path_prefix = args
55
+ end
56
+ end
@@ -0,0 +1,118 @@
1
+ # Shortcut for :unprocessable_entity, head(:failed) instead of head(:unprocessable_entity)
2
+ ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE[:failed] = 422
3
+
4
+ #
5
+ # url_for, used to generate url_for for string path with options and with default_url_options
6
+ #
7
+ ActionController::Base.class_eval do
8
+ protected
9
+ #
10
+ # link_to
11
+ #
12
+ def link_to text, uri
13
+ %{<a href="#{uri}">#{text}</a>}
14
+ end
15
+
16
+ #
17
+ # Bunch of small actions
18
+ #
19
+ def render_action action_or_template
20
+ args = action_or_template.to_s.split('/')
21
+ args.size.should! :be_in, 1..2
22
+ if args.size == 1
23
+ action = args.first
24
+ @the_action = action.to_sym
25
+ render :action => 'actions'
26
+ else
27
+ path, action = args
28
+ @the_action = action.to_sym
29
+ render :template => "#{path}/actions"
30
+ end
31
+ end
32
+
33
+ def the_action; @the_action end
34
+ helper_method :the_action
35
+
36
+
37
+ #
38
+ # Url from String Path
39
+ #
40
+ def url_for_path path, options = {}
41
+ unless options.delete :no_prefix
42
+ url = ActionController::Base.relative_url_root + path
43
+ else
44
+ url = path.dup
45
+ end
46
+
47
+ options = default_url_options.merge options
48
+
49
+ # Delete 'nil' parameters
50
+ to_delete = []
51
+ options.each{|k, v| to_delete << k if v.nil?}
52
+ to_delete.each{|k| options.delete k}
53
+
54
+ host = options.delete(:host) || options.delete('host')
55
+ port = options.delete(:port) || options.delete('port')
56
+
57
+ delimiter = path.include?('?') ? '&' : '?'
58
+
59
+ url << "#{delimiter}#{options.to_query}" unless options.empty?
60
+ url._url_format = options[:format] if options[:format] # hack for links with ajax support
61
+ url
62
+
63
+ if host.blank?
64
+ url
65
+ else
66
+ %{http://#{host}#{":#{port}" unless port.blank?}#{url}}
67
+ end
68
+ end
69
+ helper_method :url_for_path
70
+
71
+
72
+ #
73
+ # User Error
74
+ #
75
+ def catch_user_error
76
+ begin
77
+ yield
78
+ rescue UserError => e
79
+ flash[:error] = e.message
80
+ flash[:sticky_error] = e.message
81
+ do_not_persist_params do
82
+ if request.xhr? or request.format == 'js'
83
+ render :inline => "", :layout => 'application'
84
+ else
85
+ redirect_to default_path
86
+ end
87
+ end
88
+ end
89
+ end
90
+ around_filter :catch_user_error
91
+
92
+ #
93
+ # enshure domain has www. except if there's custom subdomain
94
+ #
95
+ def ensure_no_www
96
+ uri = Addressable::URI.parse request.url
97
+ if uri.host =~ /^www\./
98
+ uri.host = uri.host.sub(/^www\./, '')
99
+ redirect_to uri.to_s
100
+ end
101
+ end
102
+
103
+ class << self
104
+
105
+ def prepare_model aclass, opt = {}
106
+ id = opt.delete(:id) || :id
107
+ variable = opt.delete(:variable) || aclass.model_name.underscore
108
+ finder = opt.delete(:finder) || :find!
109
+
110
+ method = "prepare_#{variable}"
111
+ define_method method do
112
+ model = aclass.send finder, params[id]
113
+ instance_variable_set "@#{variable}", model
114
+ end
115
+ before_filter method, opt
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,96 @@
1
+ ActionController::Base.send :class_eval do
2
+ protected
3
+
4
+ DO_NOT_PERSIST = ['_', '_method']
5
+
6
+ def default_url_options options = {}
7
+ persistent_params = {}
8
+
9
+ if options
10
+ options = options.stringify_keys if options
11
+ global_persistent_params = ActionController::Base.global_persistent_params
12
+
13
+ if Thread.current[:persist_params] or options.delete(:persist)
14
+ params.each do |key, value|
15
+ persist = (
16
+ (key =~ /^_/) and
17
+ !(options.include?(key) or DO_NOT_PERSIST.include?(key))
18
+ ) or global_persistent_params.include?(key)
19
+
20
+ persistent_params[key] = value if persist
21
+ end
22
+ end
23
+
24
+ # global_persistent_params.each do |key, value|
25
+ # persistent_params[key] = value unless options.include?(key)
26
+ # end
27
+ end
28
+
29
+ return persistent_params
30
+ end
31
+
32
+ def persist_params &block
33
+ before = Thread.current[:persist_params]
34
+ begin
35
+ Thread.current[:persist_params] = true
36
+ block.call
37
+ ensure
38
+ Thread.current[:persist_params] = before
39
+ end
40
+ end
41
+ helper_method :persist_params
42
+
43
+ def do_not_persist_params &block
44
+ before = Thread.current[:persist_params]
45
+ begin
46
+ Thread.current[:persist_params] = false
47
+ block.call
48
+ ensure
49
+ Thread.current[:persist_params] = before
50
+ end
51
+ end
52
+ helper_method :do_not_persist_params
53
+
54
+ # def prepare_global_persistent_params
55
+ # persistent_params = ActionController::Base.global_persistent_params
56
+ # prefix_params = ActionController::Base.global_path_prefix
57
+ # params = self.params.stringify_keys
58
+ # params.each do |key, value|
59
+ # if persistent_params.include?(key) and !prefix_params.include?(key)
60
+ # global_persistent_params[key] = value
61
+ # end
62
+ # end
63
+ # end
64
+ # def global_persistent_params
65
+ # @global_persistent_params ||= {}
66
+ # end
67
+ # before_filter :prepare_global_persistent_params
68
+
69
+ class << self
70
+ def global_persistent_params= params
71
+ @global_persistent_params = params.collect &:to_s
72
+ end
73
+
74
+ def global_persistent_params
75
+ @global_persistent_params ||= []
76
+ end
77
+
78
+ def persist_params *args
79
+ if args.empty?
80
+ around_filter :persist_params
81
+ elsif args.first.is_a? Hash
82
+ # args.first.should! :be_a, Hash
83
+ around_filter :persist_params, args.first
84
+ else
85
+ around_filter :persist_params, :only => args.first
86
+ end
87
+ end
88
+ end
89
+ end
90
+
91
+ # allows to install a global_persistent_params to the route set by calling: map.global_persistent_params 'locale'
92
+ ActionController::Routing::RouteSet::Mapper.class_eval do
93
+ def global_persistent_params *args
94
+ ActionController::Base.global_persistent_params = args
95
+ end
96
+ end
@@ -0,0 +1,14 @@
1
+ ActionController::Base.send :class_eval do
2
+ protected
3
+ def default_path options = {}
4
+ url_for_path SETTING.default_path!, options.merge(:no_prefix => true)
5
+ end
6
+
7
+ def return_to_path options = {}
8
+ do_not_persist_params do
9
+ url_for_path params[:_return_to] || session[:return_to] || SETTING.default_path!, options.merge(:no_prefix => true)
10
+ end
11
+ end
12
+
13
+ helper_method :default_path, :return_to_path
14
+ end
@@ -0,0 +1,7 @@
1
+ ActionController::Base.send :class_eval do
2
+ protected
3
+ def reload_page
4
+ preserve_flash_for_ajax_page_update
5
+ render :inline => "window.location.reload();", :layout => 'application'
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ require 'rails_ext/basic'
2
+
3
+ require 'rails_ext/action_controller/micelaneous'
4
+
5
+ require 'rails_ext/action_controller/global_path_prefix'
6
+ require 'rails_ext/hacks/global_path_prefix'
7
+
8
+ require 'rails_ext/hacks/link_to'
9
+
10
+ require 'rails_ext/hacks/ajax_flash'
11
+
12
+ require 'rails_ext/hacks/ajax_redirect_to'
13
+
14
+ require 'rails_ext/action_controller/persistent_params'
15
+ require 'rails_ext/hacks/persistent_params'
16
+
17
+ require 'rails_ext/action_controller/redirect_helper'
18
+
19
+ require 'rails_ext/action_controller/reload_page'