releaf 0.1.2 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. 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