releaf-core 0.2.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 (288) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +24 -0
  3. data/app/assets/fonts/releaf/RobotoRegular_normal_400.ttf +0 -0
  4. data/app/assets/fonts/releaf/RobotoRegular_normal_400.woff +0 -0
  5. data/app/assets/fonts/releaf/RobotoRegular_normal_400.woff2 +0 -0
  6. data/app/assets/images/releaf/icons/apple-touch-icon-114x114-precomposed.png +0 -0
  7. data/app/assets/images/releaf/icons/apple-touch-icon-152x152-precomposed.png +0 -0
  8. data/app/assets/images/releaf/icons/apple-touch-icon-72x72-precomposed.png +0 -0
  9. data/app/assets/images/releaf/icons/favicon.ico +0 -0
  10. data/app/assets/images/releaf/icons/favicon.png +0 -0
  11. data/app/assets/images/releaf/icons/msapplication-tile-144x144.png +0 -0
  12. data/app/assets/images/releaf/logo-login.png +0 -0
  13. data/app/assets/images/releaf/logo.png +0 -0
  14. data/app/assets/javascripts/ckeditor/plugins/mediaembed/icons/hidpi/mediaembed.png +0 -0
  15. data/app/assets/javascripts/ckeditor/plugins/mediaembed/icons/mediaembed.png +0 -0
  16. data/app/assets/javascripts/ckeditor/plugins/mediaembed/lang/en.js +12 -0
  17. data/app/assets/javascripts/ckeditor/plugins/mediaembed/lang/es.js +12 -0
  18. data/app/assets/javascripts/ckeditor/plugins/mediaembed/plugin.js +63 -0
  19. data/app/assets/javascripts/releaf/3rd_party/jquery-ui-timepicker-addon.js +1882 -0
  20. data/app/assets/javascripts/releaf/3rd_party/jquery.magnific-popup.min.js +4 -0
  21. data/app/assets/javascripts/releaf/application.js +13 -0
  22. data/app/assets/javascripts/releaf/include/ajax.js +66 -0
  23. data/app/assets/javascripts/releaf/include/ajaxbox.js +179 -0
  24. data/app/assets/javascripts/releaf/include/dialogs.js +13 -0
  25. data/app/assets/javascripts/releaf/include/field.type_associated_set.js +32 -0
  26. data/app/assets/javascripts/releaf/include/field.type_date_or_datetime_or_time.js +73 -0
  27. data/app/assets/javascripts/releaf/include/field.type_richtext.js +188 -0
  28. data/app/assets/javascripts/releaf/include/loader.js +45 -0
  29. data/app/assets/javascripts/releaf/include/localization.js +213 -0
  30. data/app/assets/javascripts/releaf/include/nested_fields.js +295 -0
  31. data/app/assets/javascripts/releaf/include/notifications.js +267 -0
  32. data/app/assets/javascripts/releaf/include/pagination.js +19 -0
  33. data/app/assets/javascripts/releaf/include/profile_settings.js +28 -0
  34. data/app/assets/javascripts/releaf/include/remote_validator.js +437 -0
  35. data/app/assets/javascripts/releaf/include/search.js +140 -0
  36. data/app/assets/javascripts/releaf/include/sidebar.js +149 -0
  37. data/app/assets/javascripts/releaf/include/sortable.js +69 -0
  38. data/app/assets/javascripts/releaf/include/toolbox.js +221 -0
  39. data/app/assets/javascripts/releaf/include/url_builder.js +193 -0
  40. data/app/assets/stylesheets/releaf/application.scss +9 -0
  41. data/app/assets/stylesheets/releaf/environment/extras.scss +11 -0
  42. data/app/assets/stylesheets/releaf/environment/functions/units.scss +12 -0
  43. data/app/assets/stylesheets/releaf/environment/functions.scss +1 -0
  44. data/app/assets/stylesheets/releaf/environment/mixins/blocks.scss +133 -0
  45. data/app/assets/stylesheets/releaf/environment/mixins/elements.scss +64 -0
  46. data/app/assets/stylesheets/releaf/environment/mixins/text.scss +61 -0
  47. data/app/assets/stylesheets/releaf/environment/mixins.scss +3 -0
  48. data/app/assets/stylesheets/releaf/environment/variables/colors.scss +93 -0
  49. data/app/assets/stylesheets/releaf/environment/variables/dimensions.scss +0 -0
  50. data/app/assets/stylesheets/releaf/environment/variables/magnific-popup.scss +6 -0
  51. data/app/assets/stylesheets/releaf/environment/variables.scss +5 -0
  52. data/app/assets/stylesheets/releaf/environment.scss +4 -0
  53. data/app/assets/stylesheets/releaf/layout/base.scss +32 -0
  54. data/app/assets/stylesheets/releaf/layout/breadcrumbs.scss +47 -0
  55. data/app/assets/stylesheets/releaf/layout/buttons.scss +107 -0
  56. data/app/assets/stylesheets/releaf/layout/deprecated.scss +29 -0
  57. data/app/assets/stylesheets/releaf/layout/dialogs.scss +138 -0
  58. data/app/assets/stylesheets/releaf/layout/errors.scss +28 -0
  59. data/app/assets/stylesheets/releaf/layout/extras.scss +10 -0
  60. data/app/assets/stylesheets/releaf/layout/fields.scss +305 -0
  61. data/app/assets/stylesheets/releaf/layout/fonts.scss +16 -0
  62. data/app/assets/stylesheets/releaf/layout/footer.scss +80 -0
  63. data/app/assets/stylesheets/releaf/layout/forms.scss +23 -0
  64. data/app/assets/stylesheets/releaf/layout/header.scss +55 -0
  65. data/app/assets/stylesheets/releaf/layout/icons.scss +4 -0
  66. data/app/assets/stylesheets/releaf/layout/images.scss +4 -0
  67. data/app/assets/stylesheets/releaf/layout/links.scss +7 -0
  68. data/app/assets/stylesheets/releaf/layout/localization.scss +79 -0
  69. data/app/assets/stylesheets/releaf/layout/main.scss +43 -0
  70. data/app/assets/stylesheets/releaf/layout/notifications.scss +67 -0
  71. data/app/assets/stylesheets/releaf/layout/pagination.scss +18 -0
  72. data/app/assets/stylesheets/releaf/layout/search.scss +70 -0
  73. data/app/assets/stylesheets/releaf/layout/sections.scss +138 -0
  74. data/app/assets/stylesheets/releaf/layout/sidebar.scss +306 -0
  75. data/app/assets/stylesheets/releaf/layout/tables.scss +99 -0
  76. data/app/assets/stylesheets/releaf/layout/text.scss +31 -0
  77. data/app/assets/stylesheets/releaf/layout/toolboxes.scss +69 -0
  78. data/app/assets/stylesheets/releaf/layout.scss +35 -0
  79. data/app/assets/stylesheets/releaf/vendor/magnific-popup/main.scss +596 -0
  80. data/app/assets/stylesheets/releaf/vendor/magnific-popup/settings.scss +45 -0
  81. data/app/builders/releaf/builders/association_reflector.rb +58 -0
  82. data/app/builders/releaf/builders/base.rb +80 -0
  83. data/app/builders/releaf/builders/collection.rb +8 -0
  84. data/app/builders/releaf/builders/confirm_destroy_dialog_builder.rb +25 -0
  85. data/app/builders/releaf/builders/confirm_dialog_builder.rb +54 -0
  86. data/app/builders/releaf/builders/edit_builder.rb +66 -0
  87. data/app/builders/releaf/builders/form_builder.rb +594 -0
  88. data/app/builders/releaf/builders/index_builder.rb +118 -0
  89. data/app/builders/releaf/builders/orderer.rb +5 -0
  90. data/app/builders/releaf/builders/page/header_builder.rb +70 -0
  91. data/app/builders/releaf/builders/page/layout_builder.rb +155 -0
  92. data/app/builders/releaf/builders/page/menu_builder.rb +140 -0
  93. data/app/builders/releaf/builders/pagination_builder.rb +107 -0
  94. data/app/builders/releaf/builders/refused_destroy_dialog_builder.rb +68 -0
  95. data/app/builders/releaf/builders/resource.rb +9 -0
  96. data/app/builders/releaf/builders/resource_dialog.rb +8 -0
  97. data/app/builders/releaf/builders/resource_view.rb +54 -0
  98. data/app/builders/releaf/builders/show_builder.rb +3 -0
  99. data/app/builders/releaf/builders/table_builder.rb +280 -0
  100. data/app/builders/releaf/builders/tags/releaf_associated_set_field.rb +40 -0
  101. data/app/builders/releaf/builders/template.rb +8 -0
  102. data/app/builders/releaf/builders/toolbox.rb +23 -0
  103. data/app/builders/releaf/builders/toolbox_builder.rb +27 -0
  104. data/app/builders/releaf/builders/view.rb +132 -0
  105. data/app/builders/releaf/builders.rb +38 -0
  106. data/app/builders/releaf/core/settings/form_builder.rb +21 -0
  107. data/app/builders/releaf/core/settings/table_builder.rb +11 -0
  108. data/app/controllers/concerns/releaf/breadcrumbs.rb +42 -0
  109. data/app/controllers/concerns/releaf/richtext_attachments.rb +20 -0
  110. data/app/controllers/releaf/base_controller.rb +458 -0
  111. data/app/controllers/releaf/core/errors_controller.rb +5 -0
  112. data/app/controllers/releaf/core/settings_controller.rb +50 -0
  113. data/app/helpers/releaf/application_helper.rb +53 -0
  114. data/app/helpers/releaf/button_helper.rb +50 -0
  115. data/app/helpers/releaf/javascript_helper.rb +75 -0
  116. data/app/lib/releaf/core/assets_resolver.rb +58 -0
  117. data/app/lib/releaf/core/default_searchable_fields.rb +43 -0
  118. data/app/lib/releaf/core/error_formatter.rb +103 -0
  119. data/app/lib/releaf/core/item_orderer.rb +102 -0
  120. data/app/lib/releaf/core/resource_base.rb +66 -0
  121. data/app/lib/releaf/core/resource_fields.rb +6 -0
  122. data/app/lib/releaf/core/resource_params.rb +47 -0
  123. data/app/lib/releaf/core/resource_table_fields.rb +10 -0
  124. data/app/lib/releaf/core/resource_utilities.rb +36 -0
  125. data/app/lib/releaf/core/responders/access_denied_responder.rb +9 -0
  126. data/app/lib/releaf/core/responders/after_save_responder.rb +28 -0
  127. data/app/lib/releaf/core/responders/confirm_destroy_responder.rb +13 -0
  128. data/app/lib/releaf/core/responders/destroy_responder.rb +10 -0
  129. data/app/lib/releaf/core/responders/error_responder.rb +9 -0
  130. data/app/lib/releaf/core/responders/feature_disabled_responder.rb +9 -0
  131. data/app/lib/releaf/core/responders/page_not_found_responder.rb +9 -0
  132. data/app/lib/releaf/core/responders.rb +31 -0
  133. data/app/lib/releaf/core/search.rb +147 -0
  134. data/app/lib/releaf/core/template_field_type_mapper.rb +127 -0
  135. data/app/models/releaf/richtext_attachment.rb +6 -0
  136. data/app/models/releaf/settings.rb +27 -0
  137. data/app/views/layouts/releaf/admin.html.erb +1 -0
  138. data/app/views/releaf/base/confirm_destroy.ruby +1 -0
  139. data/app/views/releaf/base/create_releaf_richtext_attachment.haml +1 -0
  140. data/app/views/releaf/base/edit.ruby +1 -0
  141. data/app/views/releaf/base/index.ruby +1 -0
  142. data/app/views/releaf/base/new.ruby +1 -0
  143. data/app/views/releaf/base/refused_destroy.ruby +1 -0
  144. data/app/views/releaf/base/show.ruby +1 -0
  145. data/app/views/releaf/base/toolbox.ruby +1 -0
  146. data/app/views/releaf/error_pages/_error.html.haml +10 -0
  147. data/app/views/releaf/error_pages/access_denied.html.haml +1 -0
  148. data/app/views/releaf/error_pages/feature_disabled.html.haml +1 -0
  149. data/app/views/releaf/error_pages/page_not_found.html.haml +2 -0
  150. data/lib/generators/dummy/install_generator.rb +18 -0
  151. data/lib/generators/dummy/templates/builders/admin/books/form_builder.rb +13 -0
  152. data/lib/generators/dummy/templates/builders/admin/books/index_builder.rb +30 -0
  153. data/lib/generators/dummy/templates/builders/admin/books/table_builder.rb +7 -0
  154. data/lib/generators/dummy/templates/builders/admin/nodes/form_builder.rb +7 -0
  155. data/lib/generators/dummy/templates/config/routes.rb +19 -0
  156. data/lib/generators/dummy/templates/controllers/admin/authors_controller.rb +12 -0
  157. data/lib/generators/dummy/templates/controllers/admin/books_controller.rb +17 -0
  158. data/lib/generators/dummy/templates/controllers/admin/chapters_controller.rb +3 -0
  159. data/lib/generators/dummy/templates/controllers/admin/publishers_controller.rb +3 -0
  160. data/lib/generators/dummy/templates/controllers/application_controller.rb +39 -0
  161. data/lib/generators/dummy/templates/controllers/concerns/.keep +0 -0
  162. data/lib/generators/dummy/templates/controllers/concerns/node_controller.rb +37 -0
  163. data/lib/generators/dummy/templates/controllers/contacts_controller.rb +3 -0
  164. data/lib/generators/dummy/templates/controllers/home_pages_controller.rb +3 -0
  165. data/lib/generators/dummy/templates/controllers/text_pages_controller.rb +3 -0
  166. data/lib/generators/dummy/templates/initializers/releaf.rb +35 -0
  167. data/lib/generators/dummy/templates/migrations/create_authors.rb +14 -0
  168. data/lib/generators/dummy/templates/migrations/create_banners.rb +11 -0
  169. data/lib/generators/dummy/templates/migrations/create_book_sequels.rb +14 -0
  170. data/lib/generators/dummy/templates/migrations/create_books.rb +27 -0
  171. data/lib/generators/dummy/templates/migrations/create_bundles.rb +7 -0
  172. data/lib/generators/dummy/templates/migrations/create_chapters.rb +13 -0
  173. data/lib/generators/dummy/templates/migrations/create_home_pages.rb +9 -0
  174. data/lib/generators/dummy/templates/migrations/create_node_extra_fields.rb +5 -0
  175. data/lib/generators/dummy/templates/migrations/create_publishers.rb +8 -0
  176. data/lib/generators/dummy/templates/migrations/create_text_pages.rb +9 -0
  177. data/lib/generators/dummy/templates/models/author.rb +10 -0
  178. data/lib/generators/dummy/templates/models/banner.rb +5 -0
  179. data/lib/generators/dummy/templates/models/book.rb +19 -0
  180. data/lib/generators/dummy/templates/models/book_sequel.rb +4 -0
  181. data/lib/generators/dummy/templates/models/bundle.rb +17 -0
  182. data/lib/generators/dummy/templates/models/chapter.rb +7 -0
  183. data/lib/generators/dummy/templates/models/home_page.rb +5 -0
  184. data/lib/generators/dummy/templates/models/node.rb +10 -0
  185. data/lib/generators/dummy/templates/models/publisher.rb +9 -0
  186. data/lib/generators/dummy/templates/models/text_page.rb +5 -0
  187. data/lib/generators/dummy/templates/views/contacts/show.html.haml +1 -0
  188. data/lib/generators/dummy/templates/views/home_pages/show.haml +1 -0
  189. data/lib/generators/dummy/templates/views/layouts/application.html.haml +22 -0
  190. data/lib/generators/dummy/templates/views/text_pages/show.haml +1 -0
  191. data/lib/generators/releaf/install_generator.rb +93 -0
  192. data/lib/generators/releaf/templates/initializers/haml.rb +1 -0
  193. data/lib/generators/releaf/templates/initializers/releaf.rb +30 -0
  194. data/lib/generators/releaf/templates/migrations/create_releaf_nodes.rb +28 -0
  195. data/lib/generators/releaf/templates/migrations/create_releaf_permissions.rb +12 -0
  196. data/lib/generators/releaf/templates/migrations/create_releaf_richtext_attachments.rb +12 -0
  197. data/lib/generators/releaf/templates/migrations/create_releaf_roles.rb +9 -0
  198. data/lib/generators/releaf/templates/migrations/create_releaf_settings.rb +17 -0
  199. data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +21 -0
  200. data/lib/generators/releaf/templates/migrations/create_releaf_users.rb +52 -0
  201. data/lib/generators/releaf/templates/models/node.rb +3 -0
  202. data/lib/generators/releaf/templates/seeds/seeds.rb +54 -0
  203. data/lib/releaf/core/application.rb +17 -0
  204. data/lib/releaf/core/builders_autoload.rb +27 -0
  205. data/lib/releaf/core/component.rb +9 -0
  206. data/lib/releaf/core/configuration.rb +101 -0
  207. data/lib/releaf/core/engine.rb +35 -0
  208. data/lib/releaf/core/exceptions.rb +38 -0
  209. data/lib/releaf/core/route_mapper.rb +59 -0
  210. data/lib/releaf/core/settings_ui_component.rb +7 -0
  211. data/lib/releaf/core/validation_error_codes.rb +36 -0
  212. data/lib/releaf/version.rb +3 -0
  213. data/lib/releaf-core.rb +14 -0
  214. data/lib/tasks/releaf_tasks.rake +4 -0
  215. data/releaf-core.gemspec +35 -0
  216. data/spec/builders/builders/association_reflector_spec.rb +138 -0
  217. data/spec/builders/builders/base_spec.rb +276 -0
  218. data/spec/builders/builders/collection_spec.rb +18 -0
  219. data/spec/builders/builders/confirm_destroy_dialog_builder_spec.rb +71 -0
  220. data/spec/builders/builders/confirm_dialog_builder_spec.rb +105 -0
  221. data/spec/builders/builders/edit_builder_spec.rb +215 -0
  222. data/spec/builders/builders/form_builder_spec.rb +562 -0
  223. data/spec/builders/builders/index_builder_spec.rb +345 -0
  224. data/spec/builders/builders/orderer_spec.rb +22 -0
  225. data/spec/builders/builders/page/header_builder_spec.rb +143 -0
  226. data/spec/builders/builders/page/layout_builder_spec.rb +73 -0
  227. data/spec/builders/builders/page/menu_builder_spec.rb +160 -0
  228. data/spec/builders/builders/pagination_builder_spec.rb +330 -0
  229. data/spec/builders/builders/resource_dialog_spec.rb +21 -0
  230. data/spec/builders/builders/resource_view_spec.rb +158 -0
  231. data/spec/builders/builders/show_builder_spec.rb +7 -0
  232. data/spec/builders/builders/table_builder_spec.rb +638 -0
  233. data/spec/builders/builders/template_spec.rb +12 -0
  234. data/spec/builders/builders/toolbox_builder_spec.rb +67 -0
  235. data/spec/builders/builders/toolbox_spec.rb +48 -0
  236. data/spec/builders/builders/view_spec.rb +281 -0
  237. data/spec/builders/builders_spec.rb +134 -0
  238. data/spec/builders/core/settings/form_builder_spec.rb +69 -0
  239. data/spec/builders/core/settings/table_builder_spec.rb +21 -0
  240. data/spec/controllers/concerns/releaf/richtext_attachments_spec.rb +51 -0
  241. data/spec/controllers/releaf/base_controller_spec.rb +447 -0
  242. data/spec/controllers/releaf/core/settings_controller_spec.rb +31 -0
  243. data/spec/features/ajaxbox_spec.rb +111 -0
  244. data/spec/features/authorization_spec.rb +50 -0
  245. data/spec/features/dragonfly_integration_spec.rb +24 -0
  246. data/spec/features/edit_actions_spec.rb +142 -0
  247. data/spec/features/errors_spec.rb +29 -0
  248. data/spec/features/index_actions_spec.rb +85 -0
  249. data/spec/features/index_table_spec.rb +32 -0
  250. data/spec/features/menu_spec.rb +71 -0
  251. data/spec/features/richtext_attachments_spec.rb +64 -0
  252. data/spec/features/richtext_embed_spec.rb +29 -0
  253. data/spec/features/richtext_spec.rb +19 -0
  254. data/spec/features/search_spec.rb +825 -0
  255. data/spec/features/settings_spec.rb +38 -0
  256. data/spec/features/title_spec.rb +13 -0
  257. data/spec/fixtures/common_fields.yml +17 -0
  258. data/spec/fixtures/cs.png +0 -0
  259. data/spec/fixtures/time.formats.xlsx +0 -0
  260. data/spec/fixtures/unicorn.jpg +0 -0
  261. data/spec/helpers/application_helper_spec.rb +75 -0
  262. data/spec/helpers/button_helper_spec.rb +146 -0
  263. data/spec/lib/releaf/core/application_spec.rb +42 -0
  264. data/spec/lib/releaf/core/assets_resolver_spec.rb +113 -0
  265. data/spec/lib/releaf/core/configuration_spec.rb +230 -0
  266. data/spec/lib/releaf/core/default_searchable_fields_spec.rb +161 -0
  267. data/spec/lib/releaf/core/error_formatter_spec.rb +242 -0
  268. data/spec/lib/releaf/core/item_orderer_spec.rb +142 -0
  269. data/spec/lib/releaf/core/resource_base_spec.rb +174 -0
  270. data/spec/lib/releaf/core/resource_fields_spec.rb +12 -0
  271. data/spec/lib/releaf/core/resource_params_spec.rb +117 -0
  272. data/spec/lib/releaf/core/resource_table_fields_spec.rb +18 -0
  273. data/spec/lib/releaf/core/resource_utilities_spec.rb +87 -0
  274. data/spec/lib/releaf/core/responders/access_denied_responder_spec.rb +12 -0
  275. data/spec/lib/releaf/core/responders/after_save_responder_spec.rb +102 -0
  276. data/spec/lib/releaf/core/responders/confirm_destroy_responder_spec.rb +26 -0
  277. data/spec/lib/releaf/core/responders/destroy_responder_spec.rb +30 -0
  278. data/spec/lib/releaf/core/responders/error_responder_spec.rb +26 -0
  279. data/spec/lib/releaf/core/responders/feature_disabled_responder_spec.rb +12 -0
  280. data/spec/lib/releaf/core/responders/page_not_found_responder_spec.rb +12 -0
  281. data/spec/lib/releaf/core/responders_spec.rb +60 -0
  282. data/spec/lib/releaf/core/template_field_type_mapper_spec.rb +311 -0
  283. data/spec/lib/validation_error_codes_spec.rb +56 -0
  284. data/spec/misc/factories_spec.rb +43 -0
  285. data/spec/models/settings_spec.rb +58 -0
  286. data/spec/routing/route_mapper_spec.rb +185 -0
  287. data/spec/rspec_helpers/test_helpers_spec.rb +20 -0
  288. metadata +657 -0
@@ -0,0 +1,28 @@
1
+ class CreateReleafNodes < ActiveRecord::Migration
2
+ def change
3
+ create_table "nodes", :force => true do |t|
4
+ t.string "name"
5
+ t.string "slug"
6
+ t.integer "parent_id"
7
+ t.integer "lft"
8
+ t.integer "rgt"
9
+ t.integer "depth"
10
+ t.string "locale", :limit => 6
11
+ t.string "content_type"
12
+ t.integer "content_id"
13
+ t.datetime "created_at", :null => false
14
+ t.datetime "updated_at", :null => false
15
+ t.integer "item_position"
16
+ t.boolean 'active', :null => false, :default => true
17
+ end
18
+ add_index :nodes, :parent_id
19
+ add_index :nodes, [:content_type, :content_id]
20
+ add_index :nodes, :lft
21
+ add_index :nodes, :rgt
22
+ add_index :nodes, :depth
23
+ add_index :nodes, :slug
24
+ add_index :nodes, :name
25
+ add_index :nodes, :active
26
+ add_index :nodes, :locale
27
+ end
28
+ end
@@ -0,0 +1,12 @@
1
+ class CreateReleafPermissions < ActiveRecord::Migration
2
+ def change
3
+ create_table :releaf_permissions do |t|
4
+ t.integer :owner_id
5
+ t.string :owner_type
6
+ t.string :permission
7
+ t.timestamps(null: false)
8
+ end
9
+ add_index :releaf_permissions, [:owner_id, :owner_type]
10
+ add_index :releaf_permissions, :permission
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class CreateReleafRichtextAttachments < ActiveRecord::Migration
2
+ def change
3
+ create_table :releaf_richtext_attachments do |t|
4
+ t.string :file_uid
5
+ t.string :file_name
6
+ t.string :file_type
7
+ t.string :title
8
+
9
+ t.timestamps(null: false)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ class CreateReleafRoles < ActiveRecord::Migration
2
+ def change
3
+ create_table :releaf_roles do |t|
4
+ t.string :name, :null => false
5
+ t.string :default_controller
6
+ t.timestamps(null: false)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ class CreateReleafSettings < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :settings do |t|
4
+ t.string :var, :null => false
5
+ t.text :value, :null => true
6
+ t.integer :thing_id, :null => true
7
+ t.string :thing_type, :limit => 30, :null => true
8
+ t.timestamps(null: false)
9
+ end
10
+
11
+ add_index :settings, [ :thing_type, :thing_id, :var ], :unique => true
12
+ end
13
+
14
+ def self.down
15
+ drop_table :settings
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ class CreateReleafTranslations < ActiveRecord::Migration
2
+ def change
3
+ create_table :releaf_translations do |t|
4
+ t.string :key, :null => false
5
+
6
+ t.timestamps(null: false)
7
+ end
8
+ add_index :releaf_translations, :key, :unique => true
9
+
10
+ create_table :releaf_translation_data do |t|
11
+ t.integer :translation_id, :null => false
12
+ t.string :lang, :null => false, :limit => 5
13
+ t.text :localization
14
+
15
+ t.timestamps(null: false)
16
+ end
17
+ add_index :releaf_translation_data, :lang
18
+ add_index :releaf_translation_data, :translation_id
19
+ add_index :releaf_translation_data, [:lang, :translation_id], :unique => true
20
+ end
21
+ end
@@ -0,0 +1,52 @@
1
+ class CreateReleafUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table :releaf_users do |t|
4
+ t.string :name, :null => false
5
+ t.string :surname, :null => false
6
+ t.string :locale
7
+ t.integer :role_id
8
+
9
+
10
+ ## Database authenticatable
11
+ t.string :email, :null => false, :default => ""
12
+ t.string :encrypted_password, :null => false, :default => ""
13
+
14
+ ## Recoverable
15
+ t.string :reset_password_token
16
+ t.datetime :reset_password_sent_at
17
+
18
+ ## Rememberable
19
+ t.datetime :remember_created_at
20
+
21
+ ## Trackable
22
+ t.integer :sign_in_count, :default => 0
23
+ t.datetime :current_sign_in_at
24
+ t.datetime :last_sign_in_at
25
+ t.string :current_sign_in_ip
26
+ t.string :last_sign_in_ip
27
+
28
+ ## Confirmable
29
+ # t.string :confirmation_token
30
+ # t.datetime :confirmed_at
31
+ # t.datetime :confirmation_sent_at
32
+ # t.string :unconfirmed_email # Only if using reconfirmable
33
+
34
+ ## Lockable
35
+ # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
36
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
37
+ # t.datetime :locked_at
38
+
39
+ ## Token authenticatable
40
+ # t.string :authentication_token
41
+
42
+ t.timestamps(null: false)
43
+ end
44
+
45
+ add_index :releaf_users, :role_id
46
+ add_index :releaf_users, :email, :unique => true
47
+ add_index :releaf_users, :reset_password_token, :unique => true
48
+ # add_index :releaf_users, :confirmation_token, :unique => true
49
+ # add_index :releaf_users, :unlock_token, :unique => true
50
+ # add_index :releaf_users, :authentication_token, :unique => true
51
+ end
52
+ end
@@ -0,0 +1,3 @@
1
+ class Node < ActiveRecord::Base
2
+ include Releaf::Content::Node
3
+ end
@@ -0,0 +1,54 @@
1
+ [
2
+ Releaf::Permissions::User,
3
+ Releaf::Permissions::Role,
4
+ Releaf::Permissions::Permission
5
+ ].each do |descendant|
6
+ descendant.unscoped.delete_all
7
+ end
8
+
9
+ # Role {{{
10
+
11
+ puts "Creating roles"
12
+ super_admin = Releaf::Permissions::Role.new(name: "super admin", default_controller: "releaf/permissions/users")
13
+ Releaf.application.config.available_controllers.each do|controller|
14
+ super_admin.permissions.build(permission: "controller.#{controller}")
15
+ end
16
+ super_admin.save!
17
+
18
+ content_manager = Releaf::Permissions::Role.new(name: "content mager", default_controller: "releaf/content/nodes")
19
+ content_manager.permissions.build(permission: "controller.releaf/content/nodes")
20
+ content_manager.save!
21
+
22
+ # }}}
23
+ # User {{{
24
+
25
+ puts "Creating users"
26
+ users = {
27
+ user: {
28
+ name: 'Admin',
29
+ surname: 'User',
30
+ password: 'password',
31
+ password_confirmation: 'password',
32
+ locale: "en",
33
+ email: 'admin@example.com',
34
+ role: super_admin,
35
+ },
36
+ simple_user: {
37
+ name: 'Simple',
38
+ surname: 'User',
39
+ password: 'password',
40
+ password_confirmation: 'password',
41
+ locale: "en",
42
+ email: 'user@example.com',
43
+ role: content_manager,
44
+ }
45
+ }
46
+
47
+ users.each_value do |attributes|
48
+ Releaf::Permissions::User.create!(attributes)
49
+ end
50
+
51
+ # }}}
52
+
53
+ # vim: set fdm=marker:
54
+
@@ -0,0 +1,17 @@
1
+ module Releaf::Core
2
+ class Application
3
+ attr_accessor :config
4
+
5
+ def configure(&block)
6
+ self.config = Releaf::Core::Configuration.new
7
+ instance_eval(&block)
8
+ config.configure
9
+ end
10
+
11
+ def render_layout(template, &block)
12
+ builder_class = config.layout_builder_class_name.constantize
13
+ builder_class.new(template).output{ yield }.html_safe
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,27 @@
1
+ root_path = File.expand_path('../..', File.dirname(__dir__))
2
+ files = %w(
3
+ builders/tags/releaf_associated_set_field
4
+ builders
5
+ builders/base
6
+ builders/orderer
7
+ builders/template
8
+ builders/toolbox
9
+ builders/view
10
+ builders/collection
11
+ builders/resource
12
+ builders/resource_dialog
13
+ builders/resource_view
14
+ builders/confirm_dialog_builder
15
+ builders/confirm_destroy_dialog_builder
16
+ builders/edit_builder
17
+ builders/form_builder
18
+ builders/index_builder
19
+ builders/refused_destroy_dialog_builder
20
+ builders/table_builder
21
+ builders/toolbox_builder
22
+ core/settings/form_builder
23
+ core/settings/table_builder
24
+ )
25
+ files.each do|file|
26
+ require "#{root_path}/app/builders/releaf/#{file}"
27
+ end
@@ -0,0 +1,9 @@
1
+ module Releaf::Core::Component
2
+ def resource_route(router, namespace, resource)
3
+ router.namespace :releaf, path: nil do
4
+ router.namespace namespace, path: nil do
5
+ router.releaf_resources(resource)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,101 @@
1
+ module Releaf::Core
2
+ class Configuration
3
+ attr_accessor :available_locales, :available_admin_locales, :all_locales
4
+ attr_accessor :access_control_module_name, :assets_resolver_class_name, :layout_builder_class_name
5
+ attr_accessor :menu, :devise_for, :mount_location, :components,
6
+ :available_controllers, :additional_controllers, :controllers
7
+
8
+ def configure
9
+ initialize_defaults
10
+ initialize_locales
11
+ initialize_controllers
12
+ initialize_components
13
+ end
14
+
15
+ def assets_resolver
16
+ assets_resolver_class_name.constantize
17
+ end
18
+
19
+ def access_control_module
20
+ access_control_module_name.constantize
21
+ end
22
+
23
+ def initialize_defaults
24
+ default_values.each_pair do|key, value|
25
+ send("#{key}=", value) if send(key).nil?
26
+ end
27
+ end
28
+
29
+ def initialize_locales
30
+ ::I18n.available_locales = available_locales
31
+ self.available_admin_locales = available_locales if available_admin_locales.nil?
32
+ self.all_locales = (available_locales + available_admin_locales).map(&:to_s).uniq
33
+ end
34
+
35
+ def initialize_components
36
+ self.components = flatten_components(components)
37
+ components.each do|component_class|
38
+ component_class.initialize_component if component_class.respond_to? :initialize_component
39
+ end
40
+ end
41
+
42
+ def flatten_components(raw_components)
43
+ raw_components.each.inject([]) do |list, component_class|
44
+ list += flatten_components(component_class.components) if component_class.respond_to? :components
45
+ list << component_class # add component itself latter as there can be dependancy to be loadable first
46
+ end
47
+ end
48
+
49
+ def initialize_controllers
50
+ self.menu = normalize_controllers(menu)
51
+ self.additional_controllers = normalize_controllers(additional_controllers)
52
+ self.controllers = extract_controllers(menu + additional_controllers)
53
+ self.available_controllers = controllers.keys
54
+ end
55
+
56
+ def extract_controllers(list)
57
+ list.each.inject({}) do |controller_list, item|
58
+ controller_list[item[:controller]] = item if item.has_key? :controller
59
+ controller_list.merge!(extract_controllers(item[:items])) if item.has_key? :items
60
+ controller_list
61
+ end
62
+ end
63
+
64
+ def normalize_controllers(list)
65
+ list.map{|item| normalize_controller_item(item)}
66
+ end
67
+
68
+ def normalize_controller_item(item_data)
69
+ if item_data.is_a? String
70
+ item = {controller: item_data}
71
+ elsif item_data.is_a? Hash
72
+ item = item_data
73
+ end
74
+
75
+ item[:name] = item[:controller] unless item.has_key? :name
76
+
77
+ if item.has_key? :helper
78
+ item[:url_helper] = item[:helper].to_sym
79
+ elsif item.has_key? :controller
80
+ item[:url_helper] = item[:controller].gsub('/', '_').to_sym
81
+ end
82
+
83
+ item[:items] = normalize_controllers(item[:items]) if item.has_key?(:items)
84
+
85
+ item
86
+ end
87
+
88
+ def default_values
89
+ {
90
+ menu: [],
91
+ devise_for: 'releaf/permissions/user',
92
+ additional_controllers: [],
93
+ controllers: {},
94
+ components: [],
95
+ assets_resolver_class_name: 'Releaf::Core::AssetsResolver',
96
+ layout_builder_class_name: 'Releaf::Builders::Page::LayoutBuilder',
97
+ access_control_module_name: 'Releaf::Permissions'
98
+ }
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,35 @@
1
+ require 'jquery-cookie-rails'
2
+ require 'rails-settings-cached'
3
+ require 'ckeditor_rails'
4
+ require 'will_paginate'
5
+ require 'font-awesome-rails'
6
+ require 'haml'
7
+ require 'haml-rails'
8
+ require 'jquery-rails'
9
+ require 'jquery-ui-rails'
10
+ require 'acts_as_list'
11
+ require 'dragonfly'
12
+ require 'globalize'
13
+ require 'globalize-accessors'
14
+
15
+ module Releaf::Core
16
+ require 'releaf/core/component'
17
+ require 'releaf/core/settings_ui_component'
18
+ require 'releaf/core/route_mapper'
19
+ require 'releaf/core/builders_autoload'
20
+
21
+ def self.components
22
+ [Releaf::Core::SettingsUIComponent]
23
+ end
24
+
25
+ class Engine < ::Rails::Engine
26
+ initializer 'precompile', group: :all do |app|
27
+ app.config.assets.precompile += %w(ckeditor/*)
28
+ app.config.assets.precompile += %w(releaf/application.css releaf/controllers/*.css releaf/*.js releaf/*.png releaf/*.gif releaf/*.ico)
29
+ end
30
+ end
31
+
32
+ ActiveSupport.on_load :action_controller do
33
+ ActionDispatch::Routing::Mapper.send(:include, Releaf::Core::RouteMapper)
34
+ end
35
+ end
@@ -0,0 +1,38 @@
1
+ module Releaf::Core
2
+ # A general Releaf exception
3
+ class Error < StandardError; end
4
+
5
+ # This error is raised when a user isn't allowed to access a given controller action.
6
+ # This usually happens within a call to ControllerAdditions#authorize! but can be
7
+ # raised manually.
8
+ #
9
+ # raise Releaf::AccessDenied.new("Not authorized!", AdminArticles, :read)
10
+ #
11
+ # The passed message, action, and subject are optional and can later be retrieved when
12
+ # rescuing from the exception.
13
+ #
14
+ # exception.message # => "Not authorized!"
15
+ # exception.action # => :read
16
+ # exception.subject # => Article
17
+ #
18
+ # If the message is not specified (or is nil) it will default to "You are not authorized
19
+ # to access this page." This default can be overridden by setting default_message.
20
+ #
21
+ # exception.default_message = "Default error message"
22
+ # exception.message # => "Default error message"
23
+ #
24
+ # See ControllerAdditions#authorized! for more information on rescuing from this exception
25
+ # and customizing the message using I18n.
26
+ class AccessDenied < Error
27
+ attr_reader :action, :subject
28
+ attr_writer :default_message
29
+
30
+ def initialize(controller = nil, action = nil, message = nil)
31
+ @message = message
32
+ @controller = controller
33
+ @action = action
34
+ @default_message = I18n.t(:"unauthorized.default", :default => "You are not authorized to access this page.")
35
+ end
36
+
37
+ end
38
+ end