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,3 @@
1
+ class ContactsController < ActionController::Base
2
+ acts_as_node
3
+ end
@@ -0,0 +1,3 @@
1
+ class HomePagesController < ApplicationController
2
+ include NodeController
3
+ end
@@ -0,0 +1,3 @@
1
+ class TextPagesController < ApplicationController
2
+ include NodeController
3
+ end
@@ -0,0 +1,35 @@
1
+ Releaf.application.configure do
2
+ # Default settings are commented out
3
+
4
+ ### setup menu items and therefore available controllers
5
+ config.menu = [
6
+ {
7
+ :controller => 'releaf/content/nodes',
8
+ :icon => 'sitemap',
9
+ },
10
+ {
11
+ :name => "inventory",
12
+ :items => %w[admin/books admin/authors admin/publishers],
13
+ :icon => 'briefcase',
14
+ },
15
+ {
16
+ :name => "permissions",
17
+ :items => %w[releaf/permissions/users releaf/permissions/roles],
18
+ :icon => 'user',
19
+ },
20
+ {
21
+ :controller => "releaf/core/settings",
22
+ :icon => 'cog',
23
+ },
24
+ {
25
+ :controller => 'releaf/i18n_database/translations',
26
+ :icon => 'group',
27
+ },
28
+ ]
29
+
30
+ config.additional_controllers = %w[admin/chapters releaf/permissions/profile]
31
+ config.components = [Releaf::I18nDatabase, Releaf::Permissions, Releaf::Content, Releaf::Core::SettingsUIComponent]
32
+ config.available_locales = ["en", "lv"]
33
+ # conf.layout_builder_class_name = "CustomLayoutBuilder"
34
+ # conf.devise_for 'releaf/admin'
35
+ end
@@ -0,0 +1,14 @@
1
+ class CreateAuthors < ActiveRecord::Migration
2
+ def change
3
+ create_table :authors do |t|
4
+ t.string :name, :null => false
5
+ t.string :surname
6
+ t.text :bio
7
+ t.date :birth_date
8
+ t.string :wiki_link
9
+ t.integer :publisher_id
10
+
11
+ t.timestamps(null: false)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ class CreateBanners < ActiveRecord::Migration
2
+ def change
3
+ create_table :banners do |t|
4
+ t.integer :home_page_id
5
+ t.string :banner_uid
6
+ t.string :url
7
+
8
+ t.timestamps(null: false)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ class CreateBookSequels < ActiveRecord::Migration
2
+ def up
3
+ create_table :book_sequels do |t|
4
+ t.integer :book_id, null: false
5
+ t.integer :sequel_id, null: false
6
+ end
7
+
8
+ add_index :book_sequels, [:book_id, :sequel_id], unique: true
9
+ end
10
+
11
+ def down
12
+ drop_table :book_sequels
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ class CreateBooks < ActiveRecord::Migration
2
+ def up
3
+ create_table :books do |t|
4
+ t.string :title, null: false
5
+ t.integer :year
6
+ t.integer :author_id
7
+ t.string :genre
8
+ t.text :summary_html
9
+ t.boolean :active
10
+ t.datetime :published_at
11
+ t.decimal :price, precision: 8, scale: 2
12
+ t.integer :stars
13
+ t.string :cover_image_uid
14
+
15
+ t.timestamps(null: false)
16
+ end
17
+
18
+ add_index :books, :author_id
19
+
20
+ Book.create_translation_table! description: :string
21
+ end
22
+
23
+ def down
24
+ drop_table :books
25
+ Book.drop_translation_table!
26
+ end
27
+ end
@@ -0,0 +1,7 @@
1
+ class CreateBundles < ActiveRecord::Migration
2
+ def change
3
+ create_table :bundles do |t|
4
+ t.timestamps(null: false)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ class CreateChapters < ActiveRecord::Migration
2
+ def change
3
+ create_table :chapters do |t|
4
+ t.string :title, :null => false
5
+ t.text :text
6
+ t.text :sample_html
7
+ t.integer :book_id
8
+ t.integer :item_position
9
+ t.timestamps(null: false)
10
+ end
11
+ add_index :chapters, :book_id
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ class CreateHomePages < ActiveRecord::Migration
2
+ def change
3
+ create_table :home_pages do |t|
4
+ t.text :intro_text_html
5
+
6
+ t.timestamps(null: false)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class CreateNodeExtraFields < ActiveRecord::Migration
2
+ def change
3
+ add_column :nodes, :description, :text
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ class CreatePublishers < ActiveRecord::Migration
2
+ def change
3
+ create_table :publishers do |t|
4
+ t.string :title, :null => false
5
+ t.timestamps(null: false)
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ class CreateTextPages < ActiveRecord::Migration
2
+ def change
3
+ create_table :text_pages do |t|
4
+ t.text :text_html
5
+
6
+ t.timestamps(null: false)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ class Author < ActiveRecord::Base
2
+ validates_presence_of :name
3
+ belongs_to :publisher
4
+
5
+ has_many :books, dependent: :restrict_with_exception
6
+
7
+ def to_text
8
+ return "#{name} #{surname}"
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class Banner < ActiveRecord::Base
2
+ dragonfly_accessor :banner
3
+ validates_presence_of :url
4
+ belongs_to :home_page
5
+ end
@@ -0,0 +1,19 @@
1
+ class Book < ActiveRecord::Base
2
+ belongs_to :author
3
+ has_many :chapters, -> { order(:item_position) }, inverse_of: :book
4
+ has_many :book_sequels, dependent: :destroy
5
+ has_many :sequels, through: :book_sequels
6
+
7
+ validates_presence_of :title
8
+
9
+ translates :description
10
+ globalize_accessors
11
+
12
+ # chapters may not be destroy
13
+ accepts_nested_attributes_for :chapters
14
+ accepts_nested_attributes_for :book_sequels, allow_destroy: true
15
+
16
+ dragonfly_accessor :cover_image
17
+
18
+ alias_attribute :to_text, :title
19
+ end
@@ -0,0 +1,4 @@
1
+ class BookSequel < ActiveRecord::Base
2
+ belongs_to :book
3
+ has_one :sequel, class_name: 'Book'
4
+ end
@@ -0,0 +1,17 @@
1
+ class Bundle < ActiveRecord::Base
2
+ acts_as_node
3
+
4
+ # This model was created especially to test a specific bug, that was
5
+ # discovered with such classes as this.
6
+ # It turns out that Node didn't create content object because no field of
7
+ # placeholder model was rendered in form, thus no attribute of content object
8
+ # was submitted.
9
+ #
10
+ # This class was added to test this bug, and to prevent regressions.
11
+ #
12
+ # Real life scenario:
13
+ # At the moment of impllementing system, programmer knew he will need to
14
+ # create bundles, however details about this funcionality wasn't fully clear.
15
+ # Thus he created placeholder model.
16
+ #
17
+ end
@@ -0,0 +1,7 @@
1
+ # TODO convert to arel
2
+ class Chapter < ActiveRecord::Base
3
+ validates_presence_of :title, :text, :book, :sample_html
4
+ belongs_to :book
5
+ alias_attribute :to_text, :title
6
+ default_scope { order('chapters.item_position ASC') }
7
+ end
@@ -0,0 +1,5 @@
1
+ class HomePage < ActiveRecord::Base
2
+ acts_as_node
3
+ has_many :banners, dependent: :destroy
4
+ accepts_nested_attributes_for :banners, allow_destroy: true
5
+ end
@@ -0,0 +1,10 @@
1
+ class Node < ActiveRecord::Base
2
+ include Releaf::Content::Node
3
+ validates_with Releaf::Content::Node::RootValidator, allow: [HomePage]
4
+ validates_with Releaf::Content::Node::ParentValidator, for: [ContactsController], under: HomePage
5
+ validates_with Releaf::Content::Node::SinglenessValidator, for: [ContactsController], under: HomePage
6
+
7
+ def locale_selection_enabled?
8
+ root?
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ class Publisher < ActiveRecord::Base
2
+ validates_presence_of :title
3
+
4
+ has_many :authors, dependent: :restrict_with_exception
5
+
6
+ def to_text
7
+ title
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class TextPage < ActiveRecord::Base
2
+ acts_as_node
3
+ validates_presence_of :text_html
4
+ alias_attribute :to_text, :id
5
+ end
@@ -0,0 +1 @@
1
+ = link_to "Releaf gihub repository", 'https://github.com/cubesystems/releaf'
@@ -0,0 +1 @@
1
+ = @content.intro_text_html.html_safe
@@ -0,0 +1,22 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{:'http-equiv' => 'Content-Type', :content => 'text/html; charset=utf-8'}
5
+ %title AppName
6
+ - %w[.scss .css.scss .css].each do |ext|
7
+ - if File.exists?(Rails.root.to_s + "/app/assets/stylesheets/controllers/#{ params[:controller] + ext }")
8
+ = stylesheet_link_tag "controllers/#{params[:controller]}"
9
+ - break
10
+
11
+ = csrf_meta_tags
12
+ %body(class = "#{params[:controller].tr('/', '-')}-controller #{params[:action]}-view #{I18n.locale}-locale")
13
+ #body_wrap
14
+ #content_wrap
15
+ #header
16
+ Header
17
+ #content= yield
18
+ #footer
19
+ Footer
20
+
21
+ - if File.exists? Rails.root.to_s + "/app/assets/javascripts/controllers/#{params[:controller]}.js"
22
+ = javascript_include_tag "controllers/#{params[:controller]}"
@@ -0,0 +1 @@
1
+ =@text.text_html.html_safe
@@ -0,0 +1,93 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+ require 'rails/generators/active_record'
4
+
5
+ module Releaf
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ include Rails::Generators::Migration
9
+
10
+ def self.next_migration_number(path)
11
+ unless @prev_migration_nr
12
+ @prev_migration_nr = ActiveRecord::Generators::Base.next_migration_number(path).to_i
13
+ else
14
+ @prev_migration_nr += 1
15
+ end
16
+
17
+ @prev_migration_nr.to_s
18
+ end
19
+
20
+ source_root File.expand_path('../templates', __FILE__)
21
+
22
+ def install_devise
23
+ # prevent dummy app from installing devise one more time
24
+ if self.class == Releaf::Generators::InstallGenerator
25
+ generate "devise:install"
26
+ generate "dragonfly"
27
+ end
28
+ end
29
+
30
+ def install_initializer
31
+ copy_files 'initializers', 'config/initializers'
32
+ end
33
+
34
+ def install_migrations
35
+ get_file_list('migrations').each do |migration|
36
+ migration_template "migrations/#{migration}", "db/migrate/#{migration}"
37
+ end
38
+ end
39
+
40
+ def install_seeds
41
+ seed_path = File.expand_path('../templates', __FILE__) + "/seeds/seeds.rb"
42
+ append_to_file 'db/seeds.rb', File.read(seed_path)
43
+ end
44
+
45
+ def install_models
46
+ copy_files 'models', 'app/models'
47
+ end
48
+
49
+ def install_configs
50
+ copy_files 'config', 'config'
51
+ end
52
+
53
+ def install_views
54
+ copy_files 'views', 'app/views'
55
+ end
56
+
57
+ def install_builders
58
+ copy_files 'builders', 'app/builders'
59
+ end
60
+
61
+ def install_controllers
62
+ copy_files 'controllers', 'app/controllers'
63
+ end
64
+
65
+ private
66
+
67
+ def copy_files subdir, dest_dir
68
+ raise ArgumEnterror unless subdir.is_a? String
69
+ raise ArgumEnterror unless dest_dir.is_a? String
70
+ raise ArgumetnError if subdir.blank?
71
+ raise ArgumetnError if dest_dir.blank?
72
+
73
+ get_file_list(subdir).each do |image|
74
+ copy_file [subdir, image].join('/'), [dest_dir, image].join('/')
75
+ end
76
+ end
77
+
78
+ def get_file_list subdir
79
+ raise ArgumentError unless subdir.is_a? String
80
+ raise ArgumetnError if subdir.blank?
81
+ dir = get_current_dir
82
+ search_path = [dir, 'templates', subdir].join('/') + '/'
83
+ file_list = Dir.glob(search_path + '**/*').map { |filename| File.directory?(filename) ? nil : filename.sub(search_path, '') }
84
+ file_list.delete nil
85
+ return file_list
86
+ end
87
+
88
+ def get_current_dir
89
+ File.dirname(__FILE__)
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1 @@
1
+ Haml::Template.options[:attr_wrapper] = '"'
@@ -0,0 +1,30 @@
1
+ Releaf.application.configure do
2
+ # Default settings are commented out
3
+
4
+ ### setup menu items and therefore available controllers
5
+ config.menu = [
6
+ {
7
+ :controller => 'releaf/content/nodes',
8
+ :icon => 'sitemap',
9
+ },
10
+ {
11
+ :name => "permissions",
12
+ :items => %w[releaf/permissions/users releaf/permissions/roles],
13
+ :icon => 'user',
14
+ },
15
+ {
16
+ :controller => 'releaf/i18n_database/translations',
17
+ :icon => 'group',
18
+ },
19
+ ]
20
+
21
+ # controllers that must be accessible by user, but are not visible in menu
22
+ # should be added to this list
23
+ config.additional_controllers = ['releaf/permissions/profile']
24
+
25
+ config.components = [Releaf::I18nDatabase, Releaf::Permissions, Releaf::Content]
26
+
27
+ config.available_locales = ["en"]
28
+ # config.layout_builder_class_name = 'CustomLayoutBuilder'
29
+ # config.devise_for 'releaf/admin'
30
+ end