releaf 0.1.2 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (322) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +19 -21
  3. data/lib/releaf.rb +1 -34
  4. data/lib/releaf/all.rb +3 -0
  5. data/lib/releaf/rspec.rb +4 -0
  6. data/lib/releaf/rspec/features_matchers.rb +76 -0
  7. data/lib/releaf/rspec/helpers.rb +227 -0
  8. data/lib/releaf/rspec/matchers.rb +16 -0
  9. data/lib/releaf/test.rb +5 -0
  10. data/spec/factories/author.rb +6 -0
  11. data/spec/factories/book.rb +5 -0
  12. data/spec/factories/chapter.rb +7 -0
  13. data/spec/factories/common.rb +5 -0
  14. data/spec/factories/home_page.rb +5 -0
  15. data/spec/factories/node.rb +43 -0
  16. data/spec/factories/node_route.rb +7 -0
  17. data/spec/factories/publisher.rb +5 -0
  18. data/spec/factories/role.rb +21 -0
  19. data/spec/factories/text_page.rb +5 -0
  20. data/spec/factories/user.rb +22 -0
  21. data/spec/rails_helper.rb +122 -0
  22. data/spec/spec_helper.rb +81 -24
  23. data/spec/support/controller_macros.rb +8 -0
  24. data/spec/support/excel_helpers.rb +63 -0
  25. data/spec/support/shared/service_includer.rb +9 -0
  26. data/spec/support/wait_steps.rb +23 -0
  27. metadata +141 -499
  28. data/README.md +0 -77
  29. data/Rakefile +0 -70
  30. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  31. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_flat_75_ffffff_40x100.png +0 -0
  32. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  33. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_65_ffffff_1x400.png +0 -0
  34. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_75_dadada_1x400.png +0 -0
  35. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  36. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  37. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  38. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_222222_256x240.png +0 -0
  39. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_2e83ff_256x240.png +0 -0
  40. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_454545_256x240.png +0 -0
  41. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_888888_256x240.png +0 -0
  42. data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_cd0a0a_256x240.png +0 -0
  43. data/app/assets/images/releaf/3rd_party/lightbox/close.png +0 -0
  44. data/app/assets/images/releaf/3rd_party/lightbox/loading.gif +0 -0
  45. data/app/assets/images/releaf/3rd_party/lightbox/next.png +0 -0
  46. data/app/assets/images/releaf/3rd_party/lightbox/prev.png +0 -0
  47. data/app/assets/images/releaf/add.png +0 -0
  48. data/app/assets/images/releaf/background.jpg +0 -0
  49. data/app/assets/images/releaf/button/button_bgr.gif +0 -0
  50. data/app/assets/images/releaf/button/button_hover_bgr.png +0 -0
  51. data/app/assets/images/releaf/controllers/content/close.gif +0 -0
  52. data/app/assets/images/releaf/controllers/content/close_active.gif +0 -0
  53. data/app/assets/images/releaf/controllers/content/close_hover.gif +0 -0
  54. data/app/assets/images/releaf/controllers/content/global_fields_bgr.png +0 -0
  55. data/app/assets/images/releaf/controllers/content/open.gif +0 -0
  56. data/app/assets/images/releaf/controllers/content/open_2.gif +0 -0
  57. data/app/assets/images/releaf/controllers/content/open_active.gif +0 -0
  58. data/app/assets/images/releaf/controllers/content/open_hover.gif +0 -0
  59. data/app/assets/images/releaf/controllers/sessions/background.jpg +0 -0
  60. data/app/assets/images/releaf/controllers/sessions/logo.jpg +0 -0
  61. data/app/assets/images/releaf/expand_tool/close.png +0 -0
  62. data/app/assets/images/releaf/expand_tool/close_hover.png +0 -0
  63. data/app/assets/images/releaf/expand_tool/close_hover_shim.png +0 -0
  64. data/app/assets/images/releaf/expand_tool/close_shim.png +0 -0
  65. data/app/assets/images/releaf/expand_tool/loader.gif +0 -0
  66. data/app/assets/images/releaf/expand_tool/open.png +0 -0
  67. data/app/assets/images/releaf/expand_tool/open_hover.png +0 -0
  68. data/app/assets/images/releaf/expand_tool/open_hover_shim.png +0 -0
  69. data/app/assets/images/releaf/expand_tool/open_shim.png +0 -0
  70. data/app/assets/images/releaf/favicon.ico +0 -0
  71. data/app/assets/images/releaf/globalFieldContainerBgr.png +0 -0
  72. data/app/assets/images/releaf/icons/129.png +0 -0
  73. data/app/assets/images/releaf/icons/130.png +0 -0
  74. data/app/assets/images/releaf/icons/accept.png +0 -0
  75. data/app/assets/images/releaf/icons/add.png +0 -0
  76. data/app/assets/images/releaf/icons/arrow_down.png +0 -0
  77. data/app/assets/images/releaf/icons/arrow_left.png +0 -0
  78. data/app/assets/images/releaf/icons/arrow_refresh.png +0 -0
  79. data/app/assets/images/releaf/icons/arrow_up.png +0 -0
  80. data/app/assets/images/releaf/icons/bin_empty.png +0 -0
  81. data/app/assets/images/releaf/icons/bullet_black.png +0 -0
  82. data/app/assets/images/releaf/icons/bullet_connect.png +0 -0
  83. data/app/assets/images/releaf/icons/bullet_start.png +0 -0
  84. data/app/assets/images/releaf/icons/bullet_tick.png +0 -0
  85. data/app/assets/images/releaf/icons/chrome.png +0 -0
  86. data/app/assets/images/releaf/icons/control_play.png +0 -0
  87. data/app/assets/images/releaf/icons/date.png +0 -0
  88. data/app/assets/images/releaf/icons/delete.png +0 -0
  89. data/app/assets/images/releaf/icons/disk.png +0 -0
  90. data/app/assets/images/releaf/icons/drag-handle.png +0 -0
  91. data/app/assets/images/releaf/icons/error.png +0 -0
  92. data/app/assets/images/releaf/icons/eye.png +0 -0
  93. data/app/assets/images/releaf/icons/firefox.png +0 -0
  94. data/app/assets/images/releaf/icons/google-not-available.gif +0 -0
  95. data/app/assets/images/releaf/icons/google.gif +0 -0
  96. data/app/assets/images/releaf/icons/keyboard.png +0 -0
  97. data/app/assets/images/releaf/icons/left_16.png +0 -0
  98. data/app/assets/images/releaf/icons/link.png +0 -0
  99. data/app/assets/images/releaf/icons/magnifier.png +0 -0
  100. data/app/assets/images/releaf/icons/notAllowed.png +0 -0
  101. data/app/assets/images/releaf/icons/page_white_add.png +0 -0
  102. data/app/assets/images/releaf/icons/page_white_edit.png +0 -0
  103. data/app/assets/images/releaf/icons/page_white_put.png +0 -0
  104. data/app/assets/images/releaf/icons/page_white_text.png +0 -0
  105. data/app/assets/images/releaf/icons/pencil.png +0 -0
  106. data/app/assets/images/releaf/icons/picture.png +0 -0
  107. data/app/assets/images/releaf/icons/right_16.png +0 -0
  108. data/app/assets/images/releaf/icons/tick.png +0 -0
  109. data/app/assets/images/releaf/icons/warning.png +0 -0
  110. data/app/assets/images/releaf/icons/world_go.png +0 -0
  111. data/app/assets/images/releaf/icons/world_link.png +0 -0
  112. data/app/assets/images/releaf/input/autocompleteExpandIcon.png +0 -0
  113. data/app/assets/images/releaf/input/input_bgr.gif +0 -0
  114. data/app/assets/images/releaf/language_root.png +0 -0
  115. data/app/assets/images/releaf/loader.gif +0 -0
  116. data/app/assets/images/releaf/logout.png +0 -0
  117. data/app/assets/images/releaf/main_menu/active_bgr.png +0 -0
  118. data/app/assets/images/releaf/main_menu/bgr.png +0 -0
  119. data/app/assets/images/releaf/main_menu/hover_bgr.png +0 -0
  120. data/app/assets/images/releaf/module.png +0 -0
  121. data/app/assets/images/releaf/panel_layout/active_bgr.png +0 -0
  122. data/app/assets/images/releaf/panel_layout/secondary_panel_horizontal_bgr.png +0 -0
  123. data/app/assets/images/releaf/panel_layout/secondary_panel_vertical_bgr.png +0 -0
  124. data/app/assets/images/releaf/releaf_table/selected_bgr.png +0 -0
  125. data/app/assets/images/releaf/releaf_table/th_bgr.gif +0 -0
  126. data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/README.md +0 -73
  127. data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/jquery.cookie.js +0 -47
  128. data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/server.js +0 -24
  129. data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/test.html +0 -19
  130. data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/test.js +0 -80
  131. data/app/assets/javascripts/releaf/3rd_party/jquery-ui-timepicker-addon.js +0 -1882
  132. data/app/assets/javascripts/releaf/3rd_party/lightbox.js.erb +0 -379
  133. data/app/assets/javascripts/releaf/application.js +0 -14
  134. data/app/assets/javascripts/releaf/controllers/base.js +0 -130
  135. data/app/assets/javascripts/releaf/controllers/releaf/content.js +0 -90
  136. data/app/assets/javascripts/releaf/controllers/releaf/translations.js +0 -31
  137. data/app/assets/javascripts/releaf/include/continuous_scroll.js +0 -321
  138. data/app/assets/javascripts/releaf/include/field.type_autocomplete.js +0 -58
  139. data/app/assets/javascripts/releaf/include/field.type_date_or_datetime_or_time.js +0 -43
  140. data/app/assets/javascripts/releaf/include/field.type_richtext.js +0 -90
  141. data/app/assets/javascripts/releaf/include/localization.js +0 -12
  142. data/app/assets/javascripts/releaf/include/nested_fields.js +0 -64
  143. data/app/assets/javascripts/releaf/include/sortable.js +0 -29
  144. data/app/assets/javascripts/releaf/lib/request_url.js +0 -183
  145. data/app/assets/stylesheets/releaf/3rd_party/jquery-ui-1.9.2.custom.css.erb +0 -464
  146. data/app/assets/stylesheets/releaf/3rd_party/jquery-ui-timepicker-addon.css +0 -10
  147. data/app/assets/stylesheets/releaf/3rd_party/lightbox.css.erb +0 -157
  148. data/app/assets/stylesheets/releaf/application.css.erb +0 -122
  149. data/app/assets/stylesheets/releaf/controllers/base.css.erb +0 -205
  150. data/app/assets/stylesheets/releaf/controllers/releaf/content.css.erb +0 -422
  151. data/app/assets/stylesheets/releaf/controllers/releaf/sessions.css.scss.erb +0 -116
  152. data/app/assets/stylesheets/releaf/controllers/releaf/translations.css.erb +0 -205
  153. data/app/assets/stylesheets/releaf/include/button.css.erb +0 -176
  154. data/app/assets/stylesheets/releaf/include/field.css.erb +0 -281
  155. data/app/assets/stylesheets/releaf/include/input.css.erb +0 -40
  156. data/app/assets/stylesheets/releaf/include/main_menu.css.erb +0 -66
  157. data/app/assets/stylesheets/releaf/include/pagination.css.erb +0 -29
  158. data/app/assets/stylesheets/releaf/include/panel_layout.css.erb +0 -251
  159. data/app/assets/stylesheets/releaf/include/releaf_table.css.erb +0 -112
  160. data/app/assets/stylesheets/releaf/include/sortable.css.erb +0 -12
  161. data/app/controllers/releaf/admins_controller.rb +0 -55
  162. data/app/controllers/releaf/application_controller.rb +0 -11
  163. data/app/controllers/releaf/base_application_controller.rb +0 -18
  164. data/app/controllers/releaf/base_controller.rb +0 -571
  165. data/app/controllers/releaf/content_controller.rb +0 -183
  166. data/app/controllers/releaf/roles_controller.rb +0 -38
  167. data/app/controllers/releaf/sessions_controller.rb +0 -27
  168. data/app/controllers/releaf/tinymce_assets_controller.rb +0 -26
  169. data/app/controllers/releaf/translations_controller.rb +0 -117
  170. data/app/helpers/releaf/admin_helper.rb +0 -59
  171. data/app/helpers/releaf/application_helper.rb +0 -4
  172. data/app/helpers/releaf/pagination_renderer.rb +0 -44
  173. data/app/helpers/releaf/releaf_devise_helper.rb +0 -8
  174. data/app/models/releaf/admin.rb +0 -60
  175. data/app/models/releaf/blank_node_base.rb +0 -29
  176. data/app/models/releaf/node.rb +0 -222
  177. data/app/models/releaf/node_base.rb +0 -31
  178. data/app/models/releaf/role.rb +0 -126
  179. data/app/models/releaf/tinymce_asset.rb +0 -6
  180. data/app/views/layouts/releaf/admin.html.haml +0 -57
  181. data/app/views/layouts/releaf/devise.html.haml +0 -32
  182. data/app/views/releaf/aliases/_edit.body.html.haml +0 -50
  183. data/app/views/releaf/aliases/_edit.header.html.haml +0 -19
  184. data/app/views/releaf/aliases/_index.row.html.haml +0 -5
  185. data/app/views/releaf/aliases/_secondary_panel.html.haml +0 -13
  186. data/app/views/releaf/base/_edit.body.html.haml +0 -11
  187. data/app/views/releaf/base/_edit.field.html.haml +0 -23
  188. data/app/views/releaf/base/_edit.field_type_autocomplete.html.haml +0 -15
  189. data/app/views/releaf/base/_edit.field_type_boolean.html.haml +0 -5
  190. data/app/views/releaf/base/_edit.field_type_date.html.haml +0 -8
  191. data/app/views/releaf/base/_edit.field_type_datetime.html.haml +0 -8
  192. data/app/views/releaf/base/_edit.field_type_delete_nested.html.haml +0 -3
  193. data/app/views/releaf/base/_edit.field_type_file.html.haml +0 -10
  194. data/app/views/releaf/base/_edit.field_type_image.html.haml +0 -12
  195. data/app/views/releaf/base/_edit.field_type_item.html.haml +0 -31
  196. data/app/views/releaf/base/_edit.field_type_link.html.haml +0 -4
  197. data/app/views/releaf/base/_edit.field_type_link_i18n.html.haml +0 -26
  198. data/app/views/releaf/base/_edit.field_type_password.html.haml +0 -4
  199. data/app/views/releaf/base/_edit.field_type_richtext.html.haml +0 -4
  200. data/app/views/releaf/base/_edit.field_type_richtext_i18n.html.haml +0 -27
  201. data/app/views/releaf/base/_edit.field_type_text.html.haml +0 -4
  202. data/app/views/releaf/base/_edit.field_type_text_i18n.html.haml +0 -27
  203. data/app/views/releaf/base/_edit.field_type_textarea.html.haml +0 -4
  204. data/app/views/releaf/base/_edit.field_type_textarea_i18n.html.haml +0 -27
  205. data/app/views/releaf/base/_edit.field_type_time.html.haml +0 -8
  206. data/app/views/releaf/base/_edit.fields.association.html.haml +0 -48
  207. data/app/views/releaf/base/_edit.fields.has_many_template.html.haml +0 -15
  208. data/app/views/releaf/base/_edit.fields.html.haml +0 -20
  209. data/app/views/releaf/base/_edit.footer.html.haml +0 -14
  210. data/app/views/releaf/base/_edit.form.html.haml +0 -4
  211. data/app/views/releaf/base/_edit.header.html.haml +0 -3
  212. data/app/views/releaf/base/_index.body.html.haml +0 -6
  213. data/app/views/releaf/base/_index.cell.html.haml +0 -20
  214. data/app/views/releaf/base/_index.footer.html.haml +0 -28
  215. data/app/views/releaf/base/_index.header.html.haml +0 -4
  216. data/app/views/releaf/base/_index.row.html.haml +0 -6
  217. data/app/views/releaf/base/_index.search.html.haml +0 -5
  218. data/app/views/releaf/base/_index.table.html.haml +0 -24
  219. data/app/views/releaf/base/_secondary_panel.html.haml +0 -10
  220. data/app/views/releaf/base/_show.body.html.haml +0 -3
  221. data/app/views/releaf/base/_show.field.html.haml +0 -20
  222. data/app/views/releaf/base/_show.field_type_date.html.haml +0 -9
  223. data/app/views/releaf/base/_show.field_type_date_time.html.haml +0 -9
  224. data/app/views/releaf/base/_show.field_type_email.html.haml +0 -6
  225. data/app/views/releaf/base/_show.field_type_file.html.haml +0 -7
  226. data/app/views/releaf/base/_show.field_type_image.html.haml +0 -10
  227. data/app/views/releaf/base/_show.field_type_item.html.haml +0 -11
  228. data/app/views/releaf/base/_show.field_type_link.html.haml +0 -14
  229. data/app/views/releaf/base/_show.field_type_password.html.haml +0 -6
  230. data/app/views/releaf/base/_show.field_type_richtext.html.haml +0 -6
  231. data/app/views/releaf/base/_show.field_type_text.html.haml +0 -6
  232. data/app/views/releaf/base/_show.field_type_textarea.html.haml +0 -6
  233. data/app/views/releaf/base/_show.field_type_time.html.haml +0 -9
  234. data/app/views/releaf/base/_show.field_type_url.html.haml +0 -7
  235. data/app/views/releaf/base/_show.fields.association.html.haml +0 -36
  236. data/app/views/releaf/base/_show.fields.has_many_template.html.haml +0 -12
  237. data/app/views/releaf/base/_show.fields.html.haml +0 -17
  238. data/app/views/releaf/base/_show.footer.html.haml +0 -18
  239. data/app/views/releaf/base/_show.header.html.haml +0 -3
  240. data/app/views/releaf/base/confirm_destroy.html.haml +0 -17
  241. data/app/views/releaf/base/edit.html.haml +0 -1
  242. data/app/views/releaf/base/index.html.haml +0 -3
  243. data/app/views/releaf/base/new.html.haml +0 -1
  244. data/app/views/releaf/base/show.html.haml +0 -3
  245. data/app/views/releaf/content/_edit.body.html.haml +0 -46
  246. data/app/views/releaf/content/_edit.content_fields.html.haml +0 -11
  247. data/app/views/releaf/content/_edit.fields.html.haml +0 -17
  248. data/app/views/releaf/content/_edit.slug.html.haml +0 -12
  249. data/app/views/releaf/content/_get_content_form.html.haml +0 -7
  250. data/app/views/releaf/content/_secondary_panel.html.haml +0 -3
  251. data/app/views/releaf/content/_tree_level.html.haml +0 -16
  252. data/app/views/releaf/content/ajax.new.html.haml +0 -3
  253. data/app/views/releaf/content/index.html.haml +0 -0
  254. data/app/views/releaf/roles/_edit.field.permissions.html.haml +0 -5
  255. data/app/views/releaf/roles/_show.field.default.html.haml +0 -6
  256. data/app/views/releaf/roles/_show.field.permissions.html.haml +0 -11
  257. data/app/views/releaf/sessions/new.html.haml +0 -17
  258. data/app/views/releaf/translations/_edit.body.html.haml +0 -50
  259. data/app/views/releaf/translations/_edit.header.html.haml +0 -19
  260. data/app/views/releaf/translations/_index.row.html.haml +0 -5
  261. data/app/views/releaf/translations/_secondary_panel.html.haml +0 -13
  262. data/bin/releaf +0 -25
  263. data/lib/generators/releaf/install_generator.rb +0 -87
  264. data/lib/generators/releaf/templates/config/common_fields.yml.example +0 -17
  265. data/lib/generators/releaf/templates/controllers/home_controller.rb +0 -4
  266. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  267. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_flat_75_ffffff_40x100.png +0 -0
  268. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  269. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_65_ffffff_1x400.png +0 -0
  270. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_75_dadada_1x400.png +0 -0
  271. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  272. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  273. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  274. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_222222_256x240.png +0 -0
  275. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_2e83ff_256x240.png +0 -0
  276. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_454545_256x240.png +0 -0
  277. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_888888_256x240.png +0 -0
  278. data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_cd0a0a_256x240.png +0 -0
  279. data/lib/generators/releaf/templates/images/3rd_party/lightbox/close.png +0 -0
  280. data/lib/generators/releaf/templates/images/3rd_party/lightbox/loading.gif +0 -0
  281. data/lib/generators/releaf/templates/images/3rd_party/lightbox/next.png +0 -0
  282. data/lib/generators/releaf/templates/images/3rd_party/lightbox/prev.png +0 -0
  283. data/lib/generators/releaf/templates/initializers/releaf.rb +0 -20
  284. data/lib/generators/releaf/templates/initializers/releaf_i18n.rb +0 -25
  285. data/lib/generators/releaf/templates/initializers/releaf_store_current_template.rb +0 -25
  286. data/lib/generators/releaf/templates/javascripts/3rd_party/jquery.jcarousel.js +0 -1058
  287. data/lib/generators/releaf/templates/javascripts/3rd_party/jquery_ui.js +0 -14850
  288. data/lib/generators/releaf/templates/javascripts/3rd_party/lightbox.js.erb +0 -379
  289. data/lib/generators/releaf/templates/javascripts/application.js +0 -15
  290. data/lib/generators/releaf/templates/javascripts/lib/init_jcarousel.js +0 -40
  291. data/lib/generators/releaf/templates/javascripts/lib/js_check.js +0 -8
  292. data/lib/generators/releaf/templates/javascripts/lib/request_url.js +0 -169
  293. data/lib/generators/releaf/templates/javascripts/lib/sortable.js +0 -29
  294. data/lib/generators/releaf/templates/migrations/create_releaf_admins.rb +0 -53
  295. data/lib/generators/releaf/templates/migrations/create_releaf_nodes.rb +0 -25
  296. data/lib/generators/releaf/templates/migrations/create_releaf_roles.rb +0 -12
  297. data/lib/generators/releaf/templates/migrations/create_releaf_tinymce_assets.rb +0 -11
  298. data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +0 -31
  299. data/lib/generators/releaf/templates/models/admin_ability.rb +0 -51
  300. data/lib/generators/releaf/templates/seeds.rb +0 -64
  301. data/lib/generators/releaf/templates/stylesheets/3rd_party/jquery_ui/smoothness.css.erb +0 -1174
  302. data/lib/generators/releaf/templates/stylesheets/3rd_party/lightbox.css.erb +0 -157
  303. data/lib/generators/releaf/templates/stylesheets/3rd_party/reset.css +0 -48
  304. data/lib/generators/releaf/templates/stylesheets/application.scss +0 -15
  305. data/lib/generators/releaf/templates/stylesheets/style.scss +0 -45
  306. data/lib/generators/releaf/templates/views/home/index.html.haml +0 -1
  307. data/lib/generators/releaf/templates/views/layouts/application.html.haml +0 -26
  308. data/lib/i18n/backend/releaf.rb +0 -97
  309. data/lib/i18n/backend/releaf/translation.rb +0 -61
  310. data/lib/i18n/backend/releaf/translation_data.rb +0 -39
  311. data/lib/i18n/backend/releaf/translation_group.rb +0 -34
  312. data/lib/i18n/releaf.rb +0 -1
  313. data/lib/releaf/boolean_at.rb +0 -77
  314. data/lib/releaf/engine.rb +0 -4
  315. data/lib/releaf/globalize3/fallbacks.rb +0 -19
  316. data/lib/releaf/resources.rb +0 -101
  317. data/lib/releaf/slug.rb +0 -118
  318. data/lib/releaf/version.rb +0 -3
  319. data/lib/tasks/releaf_tasks.rake +0 -4
  320. data/spec/factories/factories.rb +0 -24
  321. data/spec/features/admin_spec.rb +0 -41
  322. data/templates/releaf/installer.rb +0 -207
@@ -1,39 +0,0 @@
1
- require 'active_record'
2
-
3
- module I18n
4
- module Backend
5
- class Releaf
6
- class TranslationData < ::ActiveRecord::Base
7
-
8
- self.table_name = "releaf_translation_data"
9
-
10
- validates_presence_of :translation_id, :lang
11
- validates_uniqueness_of :translation_id, :scope => :lang
12
-
13
- belongs_to :translation
14
-
15
- attr_accessible \
16
- :lang,
17
- :localization,
18
- :translation_id
19
-
20
- scope :available_locales, where('lang IS NOT NULL').group(:lang).pluck(:lang)
21
-
22
- after_commit :reload_cache
23
-
24
- def text
25
- self[:localization].blank? == false ? self[:localization] : self.translation.try(:key).try(:humanize)
26
- end
27
-
28
- private
29
-
30
- def reload_cache
31
- Settings.i18n_updated_at = Time.now
32
- I18n.backend.reload_cache
33
- end
34
-
35
- end
36
- end
37
- end
38
- end
39
-
@@ -1,34 +0,0 @@
1
- require 'active_record'
2
-
3
- module I18n
4
- module Backend
5
- class Releaf
6
- class TranslationGroup < ::ActiveRecord::Base
7
-
8
- self.table_name = "releaf_translation_groups"
9
-
10
- validates_presence_of :scope
11
-
12
- has_many :translations, :dependent => :destroy, :foreign_key => :group_id, :order => 'releaf_translations.key'
13
-
14
- attr_accessible \
15
- :scope
16
-
17
- after_commit :reload_cache
18
-
19
- def to_s
20
- scope
21
- end
22
-
23
- private
24
-
25
- def reload_cache
26
- Settings.i18n_updated_at = Time.now
27
- I18n.backend.reload_cache
28
- end
29
-
30
- end
31
- end
32
- end
33
- end
34
-
@@ -1 +0,0 @@
1
- require 'i18n'
@@ -1,77 +0,0 @@
1
- module Releaf
2
- # Adds boolean_at class method, that can be used to create boolean setter and
3
- # getter for DateTime, Date and Time fields. It will also create scopes for
4
- # when given attribute is set and when it is not set.
5
- module BooleanAt
6
- module ClassMethods
7
-
8
- # Create boolean setter and getter for given DateTime, Date and Time
9
- # attributes.
10
- #
11
- # Setter will accept "0", 0, false as false, everything else will
12
- # evaluate to true. Setter accepts TrueClass, FalseClass, String, Fixnum.
13
- # If you pass nil, it not change current value.
14
- #
15
- # Getter returns true or false
16
- #
17
- # Unless you add <tt>:without_scopes => true</tt> as last argument, two scopes
18
- # will be created. One to list all resources with given attribute set and
19
- # one that does the opposite.
20
- #
21
- # For example, if you use
22
- #
23
- # @example
24
- # boolean_at :published_at
25
- #
26
- # it will create +published+, +published?+, +published=+ methods and
27
- # +published+ and +unpublished+ scopes.
28
- #
29
- # @param args list of DateTime, Date and Time attributes that ends with
30
- # _at or _on for which you'd like to create boolean setter and getter
31
- # and scopes
32
- def boolean_at *args
33
- options = {}
34
- options = args.pop if args.last.is_a? Hash
35
-
36
- my_table_name = self.table_name
37
-
38
- args.each do |name|
39
- # raise ArgumentError, "column must be of type DateTime, Date or Time" unless [:datetime, :date, :time].include?(self.columns_hash[name.to_s].try(:type).try(:to_sym))
40
- raise ArgumentError, "column name must end with _at or _on" unless name =~ /_(at|on)$/
41
-
42
- fun_name = name.to_s.sub(/_(at|on)$/, '')
43
-
44
- # create getter
45
- define_method fun_name do
46
- self.send(:"#{name}?")
47
- end
48
- alias_method :"#{fun_name}?", :"#{fun_name}"
49
-
50
- # create setter
51
- define_method :"#{fun_name}=" do |b|
52
- return if b.nil?
53
- raise ArgumentError unless b.is_a?(FalseClass) or b.is_a?(TrueClass) or b.is_a?(String) or b.is_a?(Fixnum)
54
- if b == false or b == "0" or b == 0
55
- self.send(:"#{name}=", nil)
56
- else
57
- self.send(:"#{name}=", Time.now)
58
- end
59
- end
60
-
61
- unless options[:without_scopes]
62
- # create scopes
63
- self.class_eval do
64
- scope "#{fun_name}", where("#{my_table_name}.#{name} IS NOT NULL")
65
- scope "un#{fun_name}", where("#{my_table_name}.#{name} IS NULL")
66
- end
67
- end
68
- end
69
-
70
- end
71
- end
72
-
73
- def self.included base
74
- base.extend ClassMethods
75
- end
76
- end
77
- end
@@ -1,4 +0,0 @@
1
- module Releaf
2
- class Engine < ::Rails::Engine
3
- end
4
- end
@@ -1,19 +0,0 @@
1
- module Releaf
2
- module Globalize3
3
- module Fallbacks
4
- def self.set
5
- i18n_fallbacks = {}
6
-
7
- I18n.default_locale ||= 'en'
8
- I18n.locale ||= 'en'
9
-
10
- valid_locales = Settings.i18n_locales || []
11
-
12
- (valid_locales + [I18n.default_locale, I18n.locale]).uniq.each do |locale|
13
- i18n_fallbacks[locale] = valid_locales - [locale]
14
- end
15
- Globalize.fallbacks = i18n_fallbacks
16
- end
17
- end
18
- end
19
- end
@@ -1,101 +0,0 @@
1
- require 'action_dispatch/routing/mapper'
2
-
3
- module ActionDispatch::Routing
4
- class Mapper
5
-
6
- def releaf_resources(*args, &block)
7
- resources *args do
8
- yield if block_given?
9
-
10
- add_urls = true
11
- add_confirm_destroy = true
12
-
13
- if args.last.is_a? Hash
14
- options = args.last
15
- if options.has_key? :only
16
- add_urls = false unless options[:only].include? :urls
17
- add_confirm_destroy = false unless options[:only].include? :destroy
18
- end
19
-
20
- if options.has_key? :except
21
- add_urls = false if options[:except].include? :urls
22
- add_confirm_destroy = false if options[:except].include? :destroy
23
- end
24
- end
25
-
26
- match :urls, :on => :collection if add_urls
27
- get :confirm_destroy, :on => :member if add_confirm_destroy
28
- end
29
- end
30
-
31
- def slugged_resources(*args, &block)
32
- add_routes = {
33
- :new => true,
34
- :create => true,
35
- :edit => true,
36
- :update => true,
37
- :show => true,
38
- :index => true,
39
- :destroy => true
40
- }
41
-
42
- new_resources = args
43
-
44
- if args.last.is_a? Hash
45
-
46
- options = new_resources.pop
47
-
48
- if options.has_key? :only
49
- add_routes.each_key do |key|
50
- add_routes[key] = false unless options[:only].include? key
51
- end
52
- end
53
-
54
- if options.has_key? :except
55
- add_routes.each_key do |key|
56
- add_routes[key] = false if options[:only].include? key
57
- end
58
- end
59
-
60
- end
61
-
62
- new_resources.each do |resource_name|
63
- res_name = resource_name.to_s
64
- get res_name, :to => "#{res_name}#index", :as => res_name if add_routes[:index]
65
- post res_name, :to => "#{res_name}#create" if add_routes[:create]
66
- get "#{res_name}/new", :to => "#{res_name}#new", :as => "new_#{res_name.singularize}" if add_routes[:new]
67
- yield if block_given?
68
- get "#{res_name}/*slug/edit", :to => "#{res_name}#edit", :as => "edit_#{res_name.singularize}" if add_routes[:edit]
69
- get "#{res_name}/*slug", :to => "#{res_name}#show", :as => "show_#{res_name.singularize}" if add_routes[:show]
70
- put "#{res_name}/*slug", :to => "#{res_name}#update" if add_routes[:update]
71
- post "#{res_name}/*slug", :to => "#{res_name}#create" if add_routes[:create]
72
- delete "#{res_name}/*slug", :to => "#{res_name}#destroy" if add_routes[:destroy]
73
- end
74
-
75
- end
76
-
77
- def mount_releaf_at mount_location
78
-
79
- post '/tinymce_assets' => 'releaf/tinymce_assets#create'
80
-
81
- devise_for Releaf.devise_for, :path => mount_location, :controllers => { :sessions => "releaf/sessions" }
82
-
83
- scope mount_location do
84
- namespace :releaf, :path => nil do
85
-
86
- releaf_resources :admins, :roles
87
-
88
- releaf_resources :nodes, :controller => "content", :path => "content", :except => [:show], :path_names => { :edit => '' } do
89
- get :generate_url, :on => :collection
90
- end
91
-
92
- releaf_resources :translation_groups, :controller => "translations", :path => "translations", :except => [:show], :path_names => { :edit => '' }
93
-
94
- root :to => "content#index"
95
- end
96
- end
97
- end
98
-
99
-
100
- end # class Mapper
101
- end # module ActionDispatch::Routing
@@ -1,118 +0,0 @@
1
- module Releaf
2
- # Provides common methods for finding object by slug. Also overrides to_html
3
- # method.
4
- #
5
- # Simply add this line to your models
6
- #
7
- # include Releaf::Slug
8
- #
9
- # or
10
- #
11
- # ActiveRecord::Base.send(:include, Releaf::Slug)
12
- #
13
- # to some initializer (<tt>config/initializers/releaf.rb</tt> for example).
14
- # Then use find_object or find_object! instead of find
15
- module Slug
16
- module ClassMethods
17
-
18
- # same as find_object, except that it will raise
19
- # ActiveRecord::RecordNotFound error if no resource was found.
20
- def find_object! id_or_slug, scope_name=nil, scope_args=nil
21
- obj = find_object(id_or_slug, scope_name, scope_args)
22
- raise ActiveRecord::RecordNotFound unless obj
23
- return obj
24
- end
25
-
26
- # Find object by slug or id.
27
- #
28
- # If id_or_slug looks like id, then tries to find by id first
29
- # Otherwise it will search by slug field.
30
- #
31
- # If instance responds to children method, then it's possible to search
32
- # for hierarchic resources
33
- #
34
- # @param id_or_slug either id of object to find (can be String or Fixnum)
35
- # or slug (string) slug, may contain slash ('/')
36
- #
37
- # @param scope_name optional scope_name to be used for searching. This is
38
- # especially useful when you are searching hierarchic resources. For
39
- # example you want to find 2nd level active resource.
40
- #
41
- # @param scope_args any arguments that are required for scope
42
- #
43
- # @return resource
44
- def find_object id_or_slug, scope_name=nil, scope_args=nil
45
- raise ArgumentError, "id_or_slug must be String or Fixnum" unless id_or_slug.is_a?(String) or id_or_slug.is_a?(Fixnum)
46
-
47
- unless column_names.include?('slug')
48
- return scoped_for_find_by_slug(self, scope_name, scope_args).find(id_or_slug)
49
- end
50
-
51
- # if it looks like id, search by id first
52
- if id_or_slug.to_s =~ /\A\d+\z/
53
- obj = scoped_for_find_by_slug(self, scope_name, scope_args).find_by_id(id_or_slug)
54
- return obj if obj
55
- end
56
-
57
- unless column_names.include?('ancestry') || self.new.respond_to?(:children)
58
- return scoped_for_find_by_slug(self, scope_name, scope_args).find_by_slug(id_or_slug)
59
- else
60
- slugs = id_or_slug.split('/')
61
-
62
- obj = scoped_for_find_by_slug(self, scope_name, scope_args).find_by_slug( slugs.shift )
63
- return nil unless obj
64
- slugs.each do |slug_part|
65
- obj = scoped_for_find_by_slug(obj.children, scope_name, scope_args).find_by_slug( slug_part )
66
- return nil unless obj
67
- end
68
- return obj
69
- end
70
- end
71
-
72
- private
73
-
74
- def scoped_for_find_by_slug obj, scope_name=nil, scope_args=nil
75
- unless scope_name.blank?
76
- if scope_args.nil?
77
- obj.send(scope_name.to_sym)
78
- else
79
- obj.send(scope_name.to_sym, *scope_args)
80
- end
81
- else
82
- obj
83
- end
84
- end
85
-
86
- end
87
-
88
-
89
- module InstanceMethods
90
- # Ovverrides to_param method to prefer slug field over id (when
91
- # possible). It will also generate hearachical uri part if instance
92
- # supports parrent method, or has ancestry column (ancestry gem
93
- # {http://rubygems.org/gems/ancestry})
94
- #
95
- # @return String or Fixnum
96
- def to_param
97
- return id unless self.class.column_names.include?('slug')
98
- return id if self.slug.blank?
99
- col_names = self.class.column_names
100
-
101
- if col_names.include?('ancestry')
102
- return path.pluck(:slug).join('/')
103
- elsif self.respond_to?(:parent) && parent
104
- return parent.to_param + '/' + slug
105
- else
106
- return slug
107
- end
108
- end
109
- end
110
-
111
-
112
- def self.included base
113
- base.extend ClassMethods
114
- include InstanceMethods
115
- end
116
-
117
- end
118
- end
@@ -1,3 +0,0 @@
1
- module Releaf
2
- VERSION = "0.1.2"
3
- end
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :releaf do
3
- # # Task goes here
4
- # end
@@ -1,24 +0,0 @@
1
- FactoryGirl.define do
2
- sequence(:email) {|n| "person-#{n}@example.com" }
3
-
4
- factory :admin, :class => :'Releaf::Admin' do
5
- email
6
- name 'admin'
7
- surname 'admin'
8
- password 'password'
9
- password_confirmation 'password'
10
- end
11
-
12
- factory :role, :class => :'Releaf::Role' do
13
- sequence(:name) {|n| "role #{n}"}
14
-
15
- trait :admin do
16
- admin_permission true
17
- end
18
-
19
- trait :default do
20
- default true
21
- end
22
- end
23
-
24
- end
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
- describe "home page" do
3
- before do
4
- module Leaf
5
- end
6
- @role = create(:role, :admin)
7
- @admin = build(:admin)
8
- @admin.role_id = @role.id
9
- @admin.save
10
-
11
- end
12
-
13
- describe "login as admin procedure" do
14
- before do
15
- visit "/admin"
16
- within("form.login_form") do
17
- fill_in 'Email', :with => @admin.email
18
- fill_in 'Password', :with => @admin.password
19
- end
20
- click_button 'Sign in'
21
- end
22
-
23
- it "admin page content" do
24
- page.should have_content 'Logout'
25
- page.should have_content 'Releaf/content'
26
- page.should have_content '*permissions'
27
- page.should have_content 'Releaf/translations'
28
- end
29
-
30
- it "logout sequence" do
31
- click_link 'Logout'
32
-
33
- page.should have_content 'Welcome to re:Leaf'
34
-
35
- visit "/admin"
36
- page.should have_content 'Sign in'
37
- end
38
-
39
-
40
- end
41
- end