releaf-core 0.2.1 → 1.0.3

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 (256) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +19 -21
  3. data/app/assets/javascripts/releaf/application.js +1 -2
  4. data/app/assets/javascripts/releaf/include/field.type_date_or_datetime_or_time.js +19 -21
  5. data/app/assets/javascripts/releaf/include/field.type_richtext.js +31 -9
  6. data/app/assets/javascripts/releaf/include/localization.js +3 -8
  7. data/app/assets/javascripts/releaf/include/nested_fields.js +1 -1
  8. data/app/assets/javascripts/releaf/include/remote_validator.js +7 -4
  9. data/app/assets/javascripts/releaf/include/sortable.js +1 -1
  10. data/app/assets/javascripts/releaf/include/{profile_settings.js → store_settings.js} +4 -10
  11. data/app/assets/javascripts/releaf/include/toolbox.js +7 -11
  12. data/app/assets/stylesheets/releaf/layout/fields.scss +1 -0
  13. data/app/assets/stylesheets/releaf/layout/header.scss +1 -0
  14. data/app/assets/stylesheets/releaf/layout/search.scss +15 -0
  15. data/app/builders/releaf/builders/base.rb +11 -9
  16. data/app/builders/releaf/builders/confirm_destroy_dialog_builder.rb +2 -2
  17. data/app/builders/releaf/builders/confirm_dialog_builder.rb +3 -3
  18. data/app/builders/releaf/builders/edit_builder.rb +51 -6
  19. data/app/builders/releaf/builders/form_builder/associated_set_field.rb +37 -0
  20. data/app/builders/releaf/builders/form_builder/associations.rb +153 -0
  21. data/app/builders/releaf/builders/form_builder/boolean_fields.rb +12 -0
  22. data/app/builders/releaf/builders/form_builder/date_fields.rb +30 -0
  23. data/app/builders/releaf/builders/form_builder/fields.rb +10 -0
  24. data/app/builders/releaf/builders/form_builder/file_fields.rb +47 -0
  25. data/app/builders/releaf/builders/form_builder/i18n_fields.rb +75 -0
  26. data/app/builders/releaf/builders/form_builder/label.rb +34 -0
  27. data/app/builders/releaf/builders/form_builder/number_fields.rb +13 -0
  28. data/app/builders/releaf/builders/form_builder/richtext_fields.rb +28 -0
  29. data/app/builders/releaf/builders/form_builder/text_fields.rb +43 -0
  30. data/app/builders/releaf/builders/form_builder.rb +8 -489
  31. data/app/builders/releaf/builders/index_builder.rb +10 -3
  32. data/app/builders/releaf/builders/page/header_builder.rb +23 -59
  33. data/app/builders/releaf/builders/page/layout_builder.rb +125 -115
  34. data/app/builders/releaf/builders/page/menu_builder.rb +96 -106
  35. data/app/builders/releaf/builders/refused_destroy_dialog_builder.rb +7 -12
  36. data/app/builders/releaf/builders/resource_view.rb +4 -4
  37. data/app/builders/releaf/builders/table_builder.rb +20 -30
  38. data/app/builders/releaf/builders/toolbox_builder.rb +1 -1
  39. data/app/builders/releaf/builders/utilities/date_fields.rb +100 -0
  40. data/app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb +80 -0
  41. data/app/builders/releaf/builders/view.rb +5 -2
  42. data/app/builders/releaf/settings/form_builder.rb +18 -0
  43. data/app/builders/releaf/settings/table_builder.rb +9 -0
  44. data/app/controllers/releaf/action_controller.rb +174 -0
  45. data/app/controllers/releaf/{core/errors_controller.rb → errors_controller.rb} +1 -1
  46. data/app/controllers/releaf/root_controller.rb +23 -0
  47. data/app/controllers/releaf/settings_controller.rb +22 -0
  48. data/app/helpers/releaf/application_helper.rb +1 -1
  49. data/app/lib/releaf/action_controller/ajax.rb +24 -0
  50. data/app/lib/releaf/action_controller/breadcrumbs.rb +26 -0
  51. data/app/lib/releaf/action_controller/builders.rb +34 -0
  52. data/app/lib/releaf/action_controller/features.rb +47 -0
  53. data/app/lib/releaf/action_controller/notifications.rb +28 -0
  54. data/app/lib/releaf/action_controller/resources.rb +59 -0
  55. data/app/{controllers/concerns/releaf → lib/releaf/action_controller}/richtext_attachments.rb +1 -1
  56. data/app/lib/releaf/action_controller/search.rb +22 -0
  57. data/app/lib/releaf/action_controller/urls.rb +49 -0
  58. data/app/lib/releaf/action_controller/views.rb +29 -0
  59. data/app/lib/releaf/assets_resolver.rb +51 -0
  60. data/app/lib/releaf/build_errors_hash.rb +81 -0
  61. data/app/lib/releaf/controller_definition.rb +22 -0
  62. data/app/lib/releaf/controller_group_definition.rb +12 -0
  63. data/app/lib/releaf/{core/default_searchable_fields.rb → default_searchable_fields.rb} +1 -1
  64. data/app/lib/releaf/{core/resource_base.rb → resource_base.rb} +14 -6
  65. data/app/lib/releaf/{core/resource_fields.rb → resource_fields.rb} +1 -1
  66. data/app/lib/releaf/{core/resource_params.rb → resource_params.rb} +3 -3
  67. data/app/lib/releaf/resource_table_fields.rb +10 -0
  68. data/app/lib/releaf/{core/resource_utilities.rb → resource_utilities.rb} +2 -2
  69. data/app/lib/releaf/{core/responders → responders}/access_denied_responder.rb +2 -2
  70. data/app/lib/releaf/{core/responders → responders}/after_save_responder.rb +3 -3
  71. data/app/lib/releaf/{core/responders → responders}/confirm_destroy_responder.rb +1 -1
  72. data/app/lib/releaf/{core/responders → responders}/destroy_responder.rb +1 -1
  73. data/app/lib/releaf/{core/responders → responders}/error_responder.rb +1 -1
  74. data/app/lib/releaf/{core/responders → responders}/feature_disabled_responder.rb +2 -2
  75. data/app/lib/releaf/{core/responders → responders}/page_not_found_responder.rb +2 -2
  76. data/app/lib/releaf/responders.rb +31 -0
  77. data/app/lib/releaf/{core/search.rb → search.rb} +1 -1
  78. data/app/lib/releaf/settings/normalize_value.rb +45 -0
  79. data/app/lib/releaf/settings/register.rb +45 -0
  80. data/app/models/releaf/settings.rb +25 -13
  81. data/app/services/array/reorder.rb +82 -0
  82. data/app/views/releaf/{base → action}/confirm_destroy.ruby +0 -0
  83. data/app/views/releaf/{base → action}/create_releaf_richtext_attachment.haml +0 -0
  84. data/app/views/releaf/{base → action}/edit.ruby +0 -0
  85. data/app/views/releaf/{base → action}/index.ruby +0 -0
  86. data/app/views/releaf/{base → action}/new.ruby +0 -0
  87. data/app/views/releaf/{base → action}/refused_destroy.ruby +0 -0
  88. data/app/views/releaf/{base → action}/show.ruby +0 -0
  89. data/app/views/releaf/{base → action}/toolbox.ruby +0 -0
  90. data/lib/generators/dummy/install_generator.rb +5 -0
  91. data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/books.js +23 -0
  92. data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/nodes.js +1 -0
  93. data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/other_site/other_nodes.js +1 -0
  94. data/lib/generators/dummy/templates/assets/stylesheets/controllers/admin/nodes.scss +1 -0
  95. data/lib/generators/dummy/templates/assets/stylesheets/controllers/admin/other_site/other_nodes.scss +1 -0
  96. data/lib/generators/dummy/templates/builders/admin/books/form_builder.rb +11 -1
  97. data/lib/generators/dummy/templates/config/routes.rb +31 -7
  98. data/lib/generators/dummy/templates/controllers/admin/authors_controller.rb +3 -6
  99. data/lib/generators/dummy/templates/controllers/admin/books_controller.rb +1 -1
  100. data/lib/generators/dummy/templates/controllers/admin/chapters_controller.rb +1 -1
  101. data/lib/generators/dummy/templates/controllers/admin/nodes_controller.rb +3 -0
  102. data/lib/generators/dummy/templates/controllers/admin/other_site/other_nodes_controller.rb +3 -0
  103. data/lib/generators/dummy/templates/controllers/admin/publishers_controller.rb +1 -1
  104. data/lib/generators/dummy/templates/controllers/application_controller.rb +27 -5
  105. data/lib/generators/dummy/templates/controllers/concerns/node_controller.rb +13 -3
  106. data/lib/generators/dummy/templates/controllers/contacts_controller.rb +3 -1
  107. data/lib/generators/dummy/templates/initializers/releaf.rb +31 -25
  108. data/lib/generators/dummy/templates/migrations/create_home_pages.rb +1 -0
  109. data/lib/generators/dummy/templates/migrations/create_other_nodes.rb +29 -0
  110. data/lib/generators/dummy/templates/models/author.rb +2 -2
  111. data/lib/generators/dummy/templates/models/book.rb +0 -2
  112. data/lib/generators/dummy/templates/models/chapter.rb +0 -2
  113. data/lib/generators/dummy/templates/models/home_page.rb +1 -0
  114. data/lib/generators/dummy/templates/models/other_site/other_node.rb +7 -0
  115. data/lib/generators/dummy/templates/models/publisher.rb +0 -5
  116. data/lib/generators/dummy/templates/models/text_page.rb +0 -1
  117. data/lib/generators/dummy/templates/views/contacts/show.html.haml +1 -1
  118. data/lib/generators/dummy/templates/views/layouts/application.html.haml +9 -1
  119. data/lib/generators/dummy/templates/views/text_pages/show.haml +1 -1
  120. data/lib/generators/releaf/templates/initializers/releaf.rb +6 -17
  121. data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +13 -14
  122. data/lib/generators/releaf/templates/seeds/seeds.rb +28 -32
  123. data/lib/releaf/{core/application.rb → application.rb} +5 -4
  124. data/lib/releaf/{core/component.rb → component.rb} +6 -2
  125. data/lib/releaf/configuration.rb +95 -0
  126. data/lib/releaf/core_ext/array/reorder.rb +5 -0
  127. data/lib/releaf/engine.rb +12 -0
  128. data/lib/releaf/exceptions.rb +5 -0
  129. data/lib/releaf/instance_cache.rb +72 -0
  130. data/lib/releaf/{core → rails_ext}/validation_error_codes.rb +1 -1
  131. data/lib/releaf/root/configuration.rb +6 -0
  132. data/lib/releaf/root/default_controller_resolver.rb +37 -0
  133. data/lib/releaf/root/settings_manager.rb +12 -0
  134. data/lib/releaf/root.rb +17 -0
  135. data/lib/releaf/{core/route_mapper.rb → route_mapper.rb} +6 -6
  136. data/lib/releaf/service.rb +11 -0
  137. data/lib/releaf/settings_ui.rb +7 -0
  138. data/lib/releaf/version.rb +1 -1
  139. data/lib/releaf-core.rb +38 -9
  140. data/spec/builders/{builders → releaf/builders}/association_reflector_spec.rb +0 -0
  141. data/spec/builders/{builders → releaf/builders}/base_spec.rb +17 -21
  142. data/spec/builders/{builders → releaf/builders}/collection_spec.rb +0 -0
  143. data/spec/builders/{builders → releaf/builders}/confirm_destroy_dialog_builder_spec.rb +5 -5
  144. data/spec/builders/{builders → releaf/builders}/confirm_dialog_builder_spec.rb +9 -7
  145. data/spec/builders/{builders → releaf/builders}/edit_builder_spec.rb +127 -20
  146. data/spec/builders/releaf/builders/form_builder/associations_spec.rb +129 -0
  147. data/spec/builders/releaf/builders/form_builder/date_fields_spec.rb +86 -0
  148. data/spec/builders/releaf/builders/form_builder/i18n_fields_spec.rb +48 -0
  149. data/spec/builders/releaf/builders/form_builder/label_spec.rb +106 -0
  150. data/spec/builders/releaf/builders/form_builder/number_fields_spec.rb +37 -0
  151. data/spec/builders/releaf/builders/form_builder_spec.rb +228 -0
  152. data/spec/builders/{builders → releaf/builders}/index_builder_spec.rb +29 -10
  153. data/spec/builders/releaf/builders/page/header_builder_spec.rb +65 -0
  154. data/spec/builders/releaf/builders/page/layout_builder_spec.rb +170 -0
  155. data/spec/builders/releaf/builders/page/menu_builder_spec.rb +345 -0
  156. data/spec/builders/{builders → releaf/builders}/pagination_builder_spec.rb +0 -0
  157. data/spec/builders/{builders → releaf/builders}/resource_dialog_spec.rb +0 -0
  158. data/spec/builders/{builders → releaf/builders}/resource_view_spec.rb +8 -8
  159. data/spec/builders/{builders → releaf/builders}/show_builder_spec.rb +0 -0
  160. data/spec/builders/{builders → releaf/builders}/table_builder_spec.rb +31 -75
  161. data/spec/builders/{builders → releaf/builders}/template_spec.rb +0 -0
  162. data/spec/builders/{builders → releaf/builders}/toolbox_builder_spec.rb +4 -4
  163. data/spec/builders/{builders → releaf/builders}/toolbox_spec.rb +0 -0
  164. data/spec/builders/releaf/builders/utilities/date_fields_spec.rb +125 -0
  165. data/spec/builders/releaf/builders/utilities/resolve_attribute_field_method_name_spec.rb +318 -0
  166. data/spec/builders/{builders → releaf/builders}/view_spec.rb +1 -1
  167. data/spec/builders/{builders_spec.rb → releaf/builders_spec.rb} +0 -0
  168. data/spec/builders/releaf/settings/form_builder_spec.rb +48 -0
  169. data/spec/builders/{core → releaf}/settings/table_builder_spec.rb +6 -4
  170. data/spec/controllers/concerns/releaf/richtext_attachments_spec.rb +1 -1
  171. data/spec/controllers/releaf/{base_controller_spec.rb → action_controller_spec.rb} +132 -161
  172. data/spec/controllers/releaf/root_controller_spec.rb +40 -0
  173. data/spec/controllers/releaf/settings_controller_spec.rb +52 -0
  174. data/spec/error_hash_builder_spec.rb +83 -0
  175. data/spec/ext/array_reorder_spec.rb +12 -0
  176. data/spec/features/ajaxbox_spec.rb +6 -6
  177. data/spec/features/errors_spec.rb +2 -1
  178. data/spec/features/index_table_spec.rb +6 -3
  179. data/spec/features/richtext_attachments_spec.rb +2 -2
  180. data/spec/features/richtext_custom_config_spec.rb +28 -0
  181. data/spec/features/richtext_embed_spec.rb +1 -1
  182. data/spec/features/richtext_spec.rb +10 -1
  183. data/spec/features/search_spec.rb +1 -1
  184. data/spec/features/settings_spec.rb +10 -5
  185. data/spec/helpers/application_helper_spec.rb +4 -6
  186. data/spec/lib/releaf/action_controller/features_spec.rb +171 -0
  187. data/spec/lib/releaf/action_controller/search_spec.rb +84 -0
  188. data/spec/lib/releaf/{core/application_spec.rb → application_spec.rb} +7 -6
  189. data/spec/lib/releaf/assets_resolver_spec.rb +130 -0
  190. data/spec/lib/releaf/build_errors_hash_spec.rb +141 -0
  191. data/spec/lib/releaf/configuration_spec.rb +205 -0
  192. data/spec/lib/releaf/controller_definition_spec.rb +49 -0
  193. data/spec/lib/releaf/controller_group_definition_spec.rb +27 -0
  194. data/spec/lib/releaf/{core/default_searchable_fields_spec.rb → default_searchable_fields_spec.rb} +1 -1
  195. data/spec/lib/releaf/instance_cache_spec.rb +98 -0
  196. data/spec/lib/releaf/{core/resource_base_spec.rb → resource_base_spec.rb} +59 -21
  197. data/spec/lib/releaf/{core/resource_fields_spec.rb → resource_fields_spec.rb} +1 -1
  198. data/spec/lib/releaf/{core/resource_params_spec.rb → resource_params_spec.rb} +3 -5
  199. data/spec/lib/releaf/resource_table_fields_spec.rb +20 -0
  200. data/spec/lib/releaf/{core/resource_utilities_spec.rb → resource_utilities_spec.rb} +1 -1
  201. data/spec/lib/releaf/{core/responders → responders}/access_denied_responder_spec.rb +1 -1
  202. data/spec/lib/releaf/{core/responders → responders}/after_save_responder_spec.rb +9 -8
  203. data/spec/lib/releaf/{core/responders → responders}/confirm_destroy_responder_spec.rb +2 -2
  204. data/spec/lib/releaf/{core/responders → responders}/destroy_responder_spec.rb +2 -2
  205. data/spec/lib/releaf/{core/responders → responders}/error_responder_spec.rb +4 -4
  206. data/spec/lib/releaf/{core/responders → responders}/feature_disabled_responder_spec.rb +1 -1
  207. data/spec/lib/releaf/{core/responders → responders}/page_not_found_responder_spec.rb +1 -1
  208. data/spec/lib/releaf/{core/responders_spec.rb → responders_spec.rb} +14 -14
  209. data/spec/lib/releaf/root/configuration_spec.rb +9 -0
  210. data/spec/lib/releaf/root/default_controller_resolver_spec.rb +108 -0
  211. data/spec/lib/releaf/root_spec.rb +13 -0
  212. data/spec/lib/releaf/service_spec.rb +20 -0
  213. data/spec/lib/releaf/settings/normalize_value_spec.rb +103 -0
  214. data/spec/lib/releaf/settings/register_spec.rb +135 -0
  215. data/spec/lib/releaf/settings_manager_spec.rb +22 -0
  216. data/spec/lib/validation_error_codes_spec.rb +1 -1
  217. data/spec/misc/factories_spec.rb +0 -12
  218. data/spec/models/settings_spec.rb +74 -32
  219. data/spec/routing/route_mapper_spec.rb +5 -5
  220. data/spec/rspec_helpers/test_helpers_spec.rb +1 -1
  221. data/spec/rspec_helpers/test_spec.rb +14 -0
  222. data/spec/{lib/releaf/core/item_orderer_spec.rb → services/array/reorder_spec.rb} +32 -53
  223. metadata +299 -224
  224. data/app/builders/releaf/builders/orderer.rb +0 -5
  225. data/app/builders/releaf/builders/tags/releaf_associated_set_field.rb +0 -40
  226. data/app/builders/releaf/core/settings/form_builder.rb +0 -21
  227. data/app/builders/releaf/core/settings/table_builder.rb +0 -11
  228. data/app/controllers/concerns/releaf/breadcrumbs.rb +0 -42
  229. data/app/controllers/releaf/base_controller.rb +0 -458
  230. data/app/controllers/releaf/core/settings_controller.rb +0 -50
  231. data/app/helpers/releaf/javascript_helper.rb +0 -75
  232. data/app/lib/releaf/core/assets_resolver.rb +0 -58
  233. data/app/lib/releaf/core/error_formatter.rb +0 -103
  234. data/app/lib/releaf/core/item_orderer.rb +0 -102
  235. data/app/lib/releaf/core/resource_table_fields.rb +0 -10
  236. data/app/lib/releaf/core/responders.rb +0 -31
  237. data/app/lib/releaf/core/template_field_type_mapper.rb +0 -127
  238. data/lib/generators/dummy/templates/controllers/concerns/.keep +0 -0
  239. data/lib/releaf/core/builders_autoload.rb +0 -27
  240. data/lib/releaf/core/configuration.rb +0 -101
  241. data/lib/releaf/core/engine.rb +0 -35
  242. data/lib/releaf/core/exceptions.rb +0 -38
  243. data/lib/releaf/core/settings_ui_component.rb +0 -7
  244. data/releaf-core.gemspec +0 -35
  245. data/spec/builders/builders/form_builder_spec.rb +0 -562
  246. data/spec/builders/builders/orderer_spec.rb +0 -22
  247. data/spec/builders/builders/page/header_builder_spec.rb +0 -143
  248. data/spec/builders/builders/page/layout_builder_spec.rb +0 -73
  249. data/spec/builders/builders/page/menu_builder_spec.rb +0 -160
  250. data/spec/builders/core/settings/form_builder_spec.rb +0 -69
  251. data/spec/controllers/releaf/core/settings_controller_spec.rb +0 -31
  252. data/spec/lib/releaf/core/assets_resolver_spec.rb +0 -113
  253. data/spec/lib/releaf/core/configuration_spec.rb +0 -230
  254. data/spec/lib/releaf/core/error_formatter_spec.rb +0 -242
  255. data/spec/lib/releaf/core/resource_table_fields_spec.rb +0 -18
  256. data/spec/lib/releaf/core/template_field_type_mapper_spec.rb +0 -311
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72b720fc464c5e4f4b54c83e80791b9dcde3332c
4
- data.tar.gz: 668b3f6add48d95e695b773eeb29374077a5c653
3
+ metadata.gz: 686b25340d787121533143bd87420f9435035a4a
4
+ data.tar.gz: 8707a2a4891e61864d559af87afecce626c53781
5
5
  SHA512:
6
- metadata.gz: 8ba576bdf55311554de9707e43112e9f0b05cff980c2b96e8aa2f0f42c733d1272e40a28637f5c18327c7624499c7d3d02a2669e1b739a3b2f33c21f748cc191
7
- data.tar.gz: ec7b6502510a9cdefb8e00c07855e1d1f910e52f5552b0a79f4814bbd5303f76baf5edd483b3914eed32a8f697244aeb266e6f350e7cf554bb9e9ae332fd5366
6
+ metadata.gz: 6ab3e015c76c2dc86b56196a40705001501c82b85c297e68888bdbacc42a4c43b496c8f9e8f55946394c662421f7e83252975bda2fbe66251b4821041bf1b1b9
7
+ data.tar.gz: 6c7fcc068ff6997cd49b382bef85e2b5b5e9213b994b119fd3fb7b0e8fb1f73931b2141544d1e35702638114bf24c28bd6a5be02e1a3a97b80b82f749bd5b43a
data/LICENSE CHANGED
@@ -1,24 +1,22 @@
1
1
  Copyright (c) 2012, CubeSystems <info@cubesystems.lv>
2
- All rights reserved.
3
2
 
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions are met:
6
- * Redistributions of source code must retain the above copyright
7
- notice, this list of conditions and the following disclaimer.
8
- * Redistributions in binary form must reproduce the above copyright
9
- notice, this list of conditions and the following disclaimer in the
10
- documentation and/or other materials provided with the distribution.
11
- * Neither the name of the CubeSystems nor the names of its contributors may
12
- be used to endorse or promote products derived from this software without
13
- specific prior written permission.
3
+ MIT License
14
4
 
15
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
- DISCLAIMED. IN NO EVENT SHALL CubeSystems BE LIABLE FOR ANY
19
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -6,8 +6,7 @@
6
6
  //
7
7
  //= require jquery
8
8
  //= require jquery-ui
9
- //= require jquery_ujs
10
- //= require jquery.cookie
9
+ //= require vanilla-ujs
11
10
  //= require ckeditor-jquery
12
11
  //= require_tree ./include
13
12
  //= require_tree ./3rd_party
@@ -32,18 +32,8 @@ jQuery(document).ready(function()
32
32
  }
33
33
  };
34
34
 
35
- block.find('.date-picker').each(function() {
36
- var picker = jQuery(this);
37
- var opt = options;
38
-
39
- opt.dateFormat = picker.data('date-format') || 'yy-mm-dd';
40
- opt.minDate = picker.data('min-date');
41
- opt.maxDate = picker.data('max-date');
42
-
43
- picker.datepicker(opt);
44
- });
45
-
46
- block.find('.datetime-picker').each(function() {
35
+ block.find('.date-picker, .datetime-picker, .time-picker').each(function()
36
+ {
47
37
  var picker = jQuery(this);
48
38
  var opt = options;
49
39
 
@@ -51,18 +41,26 @@ jQuery(document).ready(function()
51
41
  opt.pickerTimeFormat = picker.data('time-format') || 'HH:mm';
52
42
  opt.minDate = picker.data('min-date');
53
43
  opt.maxDate = picker.data('max-date');
44
+ var yearRange = picker.data('year-range');
45
+ if (yearRange)
46
+ {
47
+ opt.yearRange = yearRange;
48
+ }
54
49
 
55
- picker.datetimepicker(opt);
50
+ if (picker.is('.date-picker'))
51
+ {
52
+ picker.datepicker(opt);
53
+ }
54
+ else if (picker.is('.datetime-picker'))
55
+ {
56
+ picker.datetimepicker(opt);
57
+ }
58
+ else if (picker.is('.time-picker'))
59
+ {
60
+ picker.timepicker(opt);
61
+ }
56
62
  });
57
63
 
58
- block.find('.time-picker').each(function() {
59
- var picker = jQuery(this);
60
- var opt = options;
61
-
62
- opt.pickerTimeFormat = picker.data('time-format') || 'HH:mm';
63
-
64
- picker.timepicker(options);
65
- });
66
64
  });
67
65
 
68
66
  body.on('contentloaded', function(e)
@@ -1,18 +1,29 @@
1
- /* global CKEDITOR */
2
- jQuery(function()
3
- {
4
- var body = jQuery('body');
1
+ window.ckeditor_configuration = {
5
2
 
6
- var ckeditor_config = {
3
+ default: {
7
4
  language: 'en',
8
5
  entities_latin: false,
9
6
  forcePasteAsPlainText: true,
10
7
  height: '400px',
11
8
  allowedContent: true,
12
9
  format_tags: 'p;h2;h3',
13
- toolbar: [['Bold', 'Italic'], ['Format'], ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], ['Subscript', 'Superscript'], ['NumberedList', 'BulletedList'], ['Image', 'Link', 'Unlink', 'MediaEmbed'], ['Source', 'Maximize', 'ShowBlocks']],
10
+ toolbar: [
11
+ ['Bold', 'Italic'],
12
+ ['Format'],
13
+ ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
14
+ ['Subscript', 'Superscript'],
15
+ ['NumberedList', 'BulletedList'],
16
+ ['Link', 'Unlink', 'Anchor', 'Image', 'MediaEmbed' ],
17
+ ['Source', 'Maximize', 'ShowBlocks']],
14
18
  extraPlugins: 'mediaembed'
15
- };
19
+ }
20
+
21
+ };
22
+
23
+ /* global CKEDITOR */
24
+ jQuery(function()
25
+ {
26
+ var body = jQuery('body');
16
27
 
17
28
  CKEDITOR.on('instanceReady', function(e) {
18
29
  jQuery(e.editor.element.$).addClass("ckeditor-initialized");
@@ -41,6 +52,19 @@ jQuery(function()
41
52
  {
42
53
  var textarea = jQuery(this);
43
54
 
55
+ var type = textarea.data('type');
56
+ if (!type)
57
+ {
58
+ type = 'default';
59
+ }
60
+
61
+ if (typeof window.ckeditor_configuration[type] == 'undefined')
62
+ {
63
+ return;
64
+ }
65
+
66
+ var config = jQuery.extend(true, {}, window.ckeditor_configuration[type]);
67
+
44
68
  textarea.closest("form").on( 'beforevalidation', function()
45
69
  {
46
70
  for ( var instance in CKEDITOR.instances )
@@ -52,8 +76,6 @@ jQuery(function()
52
76
  }
53
77
  });
54
78
 
55
-
56
- var config = ckeditor_config;
57
79
  config.width = '100%';
58
80
  config.height = textarea.outerHeight();
59
81
 
@@ -89,10 +89,9 @@ jQuery(function()
89
89
 
90
90
  var triggerOffset = trigger.offset();
91
91
 
92
- menu.css
93
- ({
92
+ menu.css({
94
93
  left: triggerOffset.left + trigger.outerWidth() - menu.outerWidth() ,
95
- top : triggerOffset.top + trigger.outerHeight(),
94
+ top : triggerOffset.top + trigger.outerHeight()
96
95
  });
97
96
 
98
97
  });
@@ -135,11 +134,6 @@ jQuery(function()
135
134
  var trigger_label = field.find('.localization-switch .trigger .label');
136
135
 
137
136
  trigger_label.text( locale );
138
-
139
-
140
- jQuery.cookie( 'releaf.i18n.locale', locale, { path: '/' } );
141
-
142
-
143
137
  });
144
138
 
145
139
 
@@ -152,6 +146,7 @@ jQuery(function()
152
146
 
153
147
  form.find('.field.i18n').trigger('localizationlocaleset', { locale : locale });
154
148
 
149
+ body.trigger( 'settingssave', [ "releaf.i18n.locale", locale ] );
155
150
  });
156
151
 
157
152
 
@@ -221,7 +221,7 @@ jQuery( document ).ready(function()
221
221
  element: this,
222
222
  attribute: attrs[i],
223
223
  old_value: attr,
224
- new_value: attr.replace(searchPattern, replacePattern),
224
+ new_value: attr.replace(searchPattern, replacePattern)
225
225
  };
226
226
  if (params.old_value === params.new_value)
227
227
  {
@@ -31,9 +31,12 @@ var RemoteValidator = function( form )
31
31
  v.clicked_button = target;
32
32
  });
33
33
 
34
- v.form.on( 'ajax:beforeSend', function( event, xhr )
34
+ v.form.on( 'ajax:before', function( event )
35
35
  {
36
+ var xhr = event.detail;
36
37
  xhr.validation_id = 'v' + new Date().getTime() + Math.random();
38
+ xhr.setRequestHeader('Accept', '*/*;q=0.5, application/json');
39
+
37
40
  v.form.attr( 'data-validation-id', xhr.validation_id );
38
41
 
39
42
  if (v.clicked_button)
@@ -42,8 +45,9 @@ var RemoteValidator = function( form )
42
45
  }
43
46
  });
44
47
 
45
- v.form.on('ajax:complete', function( event, xhr )
48
+ v.form.on( 'ajax:complete', function( event )
46
49
  {
50
+ var xhr = event.detail;
47
51
  var json_response;
48
52
  var event_params =
49
53
  {
@@ -91,7 +95,6 @@ var RemoteValidator = function( form )
91
95
  {
92
96
  var error_object = {
93
97
  message : error.message,
94
- fullMessage : error.full_message,
95
98
  errorCode : error.error_code,
96
99
  fieldName : fieldName
97
100
  };
@@ -230,7 +233,7 @@ var RemoteValidator = function( form )
230
233
  }
231
234
 
232
235
  error_node.attr('data-validation-id', event_params.validation_id);
233
- error_node.text( error.fullMessage );
236
+ error_node.text( error.message );
234
237
 
235
238
  if (new_error_node)
236
239
  {
@@ -35,7 +35,7 @@ jQuery(document).ready(function()
35
35
  update: function( event, ui )
36
36
  {
37
37
  ui.item.trigger('sortableupdate');
38
- },
38
+ }
39
39
  });
40
40
 
41
41
  list.on('sortablereindex', function()
@@ -1,11 +1,10 @@
1
1
  jQuery(function(){
2
-
3
2
  var body = jQuery('body');
3
+ var settings_path = body.data('settings-path');
4
4
 
5
- var settings_url = jQuery('header .profile').data('settings-url');
6
5
  body.on('settingssave', function( event, key_or_settings, value )
7
6
  {
8
- if (!settings_url)
7
+ if (!settings_path)
9
8
  {
10
9
  return;
11
10
  }
@@ -17,12 +16,7 @@ jQuery(function(){
17
16
  settings[key_or_settings] = value;
18
17
  }
19
18
 
20
- jQuery.ajax
21
- ({
22
- url: settings_url,
23
- data: { "settings": settings},
24
- type: 'POST',
25
- dataType: 'json'
26
- });
19
+ LiteAjax.ajax({ url: settings_path, method: 'POST', data: { "settings": settings}, json: true })
27
20
  });
28
21
  });
22
+
@@ -129,26 +129,22 @@ jQuery(function()
129
129
 
130
130
  if (openToRight)
131
131
  {
132
- menu.css
133
- ({
132
+ menu.css({
134
133
  left: triggerCenterX - 23,
135
- top : triggerOffset.top + trigger.outerHeight(),
134
+ top : triggerOffset.top + trigger.outerHeight()
136
135
  });
137
- beak.css(
138
- {
136
+ beak.css({
139
137
  left : 18
140
138
  });
141
139
  }
142
140
  else
143
141
  {
144
- menu.css
145
- ({
142
+ menu.css({
146
143
  left: triggerCenterX - menuWidth + 20,
147
- top : triggerOffset.top + trigger.outerHeight(),
144
+ top : triggerOffset.top + trigger.outerHeight()
148
145
  });
149
- beak.css(
150
- {
151
- left : menuWidth - 24,
146
+ beak.css({
147
+ left : menuWidth - 24
152
148
  });
153
149
  }
154
150
 
@@ -47,6 +47,7 @@ input.text
47
47
  {
48
48
  height: steps(3);
49
49
  padding: 0 steps(1);
50
+ -webkit-appearance: textfield;
50
51
  }
51
52
 
52
53
 
@@ -19,6 +19,7 @@ body > header
19
19
  form.sign-out
20
20
  {
21
21
  display: inline-block;
22
+ vertical-align: top;
22
23
  }
23
24
 
24
25
  .profile.button,
@@ -2,6 +2,11 @@ form.search
2
2
  {
3
3
  text-align: right;
4
4
 
5
+ &.has-extra-search:not(.has-text-search)
6
+ {
7
+ clear: left;
8
+ }
9
+
5
10
  .search-field
6
11
  {
7
12
  display: inline-block;
@@ -17,6 +22,7 @@ form.search
17
22
 
18
23
  .text-search
19
24
  {
25
+
20
26
  .search-field[data-name="search"]
21
27
  {
22
28
  position: relative;
@@ -25,6 +31,15 @@ form.search
25
31
  {
26
32
  width: steps(18);
27
33
  border-color: $color-border-light;
34
+
35
+ &::-webkit-search-decoration,
36
+ &::-webkit-search-cancel-button,
37
+ &::-webkit-search-results-button,
38
+ &::-webkit-search-results-decoration
39
+ {
40
+ display: none;
41
+ }
42
+
28
43
  }
29
44
 
30
45
  .button
@@ -7,13 +7,17 @@ module Releaf::Builders::Base
7
7
  :render, :link_to, :flash, :truncate, :radio_button_tag,
8
8
  :options_for_select, :action_name, :options_from_collection_for_select,
9
9
  :select_tag, :text_field_tag,
10
- :image_tag, :jquery_date_format, :cookies, :button_tag, :merge_attributes, to: :template
10
+ :image_tag, :cookies, :button_tag, :merge_attributes, to: :template
11
11
 
12
- delegate :layout_settings, :access_control, :controller_scope_name,
13
- :feature_available?, :index_url, to: :controller
12
+ delegate :controller_scope_name, :builder_class,
13
+ :feature_available?, :index_path, to: :controller
14
14
 
15
15
  alias_method :button, :releaf_button
16
16
 
17
+ def layout_settings(key)
18
+ Releaf.application.config.settings_manager.read(controller: controller, key: key)
19
+ end
20
+
17
21
  def wrapper(content_or_attributes_with_block, attributes = {}, &block)
18
22
  if block_given?
19
23
  tag(:div, content_or_attributes_with_block, nil, nil, &block)
@@ -26,7 +30,7 @@ module Releaf::Builders::Base
26
30
  ERB::Util.html_escape(value)
27
31
  end
28
32
 
29
- def tag(*args, &block)
33
+ def tag(*args)
30
34
  return content_tag(*args) unless block_given?
31
35
 
32
36
  content_tag(*args) do
@@ -49,7 +53,7 @@ module Releaf::Builders::Base
49
53
  template.fa_icon(name)
50
54
  end
51
55
 
52
- def safe_join(&block)
56
+ def safe_join
53
57
  template.safe_join(yield)
54
58
  end
55
59
 
@@ -72,9 +76,7 @@ module Releaf::Builders::Base
72
76
  controller_scope_name
73
77
  end
74
78
 
75
- # calls `#to_text` on resource if resource supports it. Otherwise calls
76
- # `#to_s` method
77
- def resource_to_text(resource)
78
- resource.send(resource.respond_to?(:to_text) ? :to_text : :to_s)
79
+ def resource_title(resource)
80
+ Releaf::ResourceBase.title(resource)
79
81
  end
80
82
  end
@@ -4,7 +4,7 @@ class Releaf::Builders::ConfirmDestroyDialogBuilder < Releaf::Builders::ConfirmD
4
4
  end
5
5
 
6
6
  def description_content
7
- resource_to_text(resource)
7
+ resource_title(resource)
8
8
  end
9
9
 
10
10
  def section_header_text
@@ -20,6 +20,6 @@ class Releaf::Builders::ConfirmDestroyDialogBuilder < Releaf::Builders::ConfirmD
20
20
  end
21
21
 
22
22
  def confirm_url
23
- url_for( action: 'destroy', id: resource.id, index_url: index_url)
23
+ url_for( action: 'destroy', id: resource.id, index_path: index_path)
24
24
  end
25
25
  end
@@ -44,11 +44,11 @@ class Releaf::Builders::ConfirmDialogBuilder
44
44
  button(t("Yes"), "check", class: "danger", type: 'submit')
45
45
  end
46
46
 
47
- def cancel_url
48
- index_url
47
+ def cancel_path
48
+ index_path
49
49
  end
50
50
 
51
51
  def cancel_button
52
- button(t("No"), "ban", class: "secondary", data: {type: 'cancel'}, href: index_url)
52
+ button(t("No"), "ban", class: "secondary", data: {type: 'cancel'}, href: cancel_path)
53
53
  end
54
54
  end
@@ -7,13 +7,13 @@ class Releaf::Builders::EditBuilder
7
7
  form_for(resource, form_options) do |form|
8
8
  self.form = form
9
9
  safe_join do
10
- [index_url_preserver] + section_blocks
10
+ [index_path_preserver] + section_blocks
11
11
  end
12
12
  end
13
13
  end
14
14
 
15
- def index_url_preserver
16
- hidden_field_tag 'index_url', params[:index_url] if params[:index_url].present?
15
+ def index_path_preserver
16
+ hidden_field_tag "index_path", params[:index_path] if params[:index_path].present?
17
17
  end
18
18
 
19
19
  def section_body_blocks
@@ -24,8 +24,54 @@ class Releaf::Builders::EditBuilder
24
24
  form.releaf_fields(form.field_names.to_a)
25
25
  end
26
26
 
27
+ def form_url
28
+ url_for(action: form_action, id: resource.id)
29
+ end
30
+
31
+ def form_action
32
+ resource.new_record? ? 'create' : 'update'
33
+ end
34
+
35
+ def resource_name
36
+ :resource
37
+ end
38
+
39
+ def form_builder_class
40
+ builder_class(:form)
41
+ end
42
+
27
43
  def form_options
28
- controller.form_options(action_name, resource, :resource)
44
+ {
45
+ builder: form_builder_class,
46
+ as: resource_name,
47
+ url: form_url,
48
+ html: form_attributes
49
+ }
50
+ end
51
+
52
+ def form_identifier
53
+ action = !resource.respond_to?(:persisted?) || resource.persisted? ? :edit : :new
54
+ "#{action}-#{resource_name}"
55
+ end
56
+
57
+ def form_classes
58
+ classes = [ form_identifier ]
59
+ classes << "has-error" if resource.errors.any?
60
+ classes
61
+ end
62
+
63
+ def form_attributes
64
+ {
65
+ multipart: true,
66
+ id: form_identifier,
67
+ class: form_classes,
68
+ data: {
69
+ "remote" => true,
70
+ "remote-validation" => true,
71
+ "type" => :json,
72
+ },
73
+ novalidate: ""
74
+ }
29
75
  end
30
76
 
31
77
  def error_notices
@@ -52,7 +98,7 @@ class Releaf::Builders::EditBuilder
52
98
  end
53
99
 
54
100
  def create_another_available?
55
- resource.present? && resource.new_record? && controller.feature_available?(:create_another)
101
+ resource.present? && resource.new_record? && feature_available?(:create_another)
56
102
  end
57
103
 
58
104
  def save_and_create_another_button
@@ -62,5 +108,4 @@ class Releaf::Builders::EditBuilder
62
108
  def save_button
63
109
  button(t("Save"), "check", class: "primary", data: { type: 'ok', disable: true }, type: "submit")
64
110
  end
65
-
66
111
  end
@@ -0,0 +1,37 @@
1
+ module Releaf::Builders::FormBuilder::AssociatedSetField
2
+ def releaf_associated_set_field(name, label: {}, field: {}, options: {}, &block)
3
+ options = {field: {type: "associated-set"}}.deep_merge(options)
4
+ content = releaf_associated_set_content(name, options: options)
5
+ input_wrapper_with_label(name, content, label: label, field: field, options: options, &block)
6
+ end
7
+
8
+ def releaf_associated_set_content(name, options: {})
9
+ association_options = options[:association]
10
+ association = object.send(name)
11
+ key_field = association_options[:field]
12
+
13
+ list = []
14
+
15
+ association_options[:items].each_pair do|value, label_text|
16
+ item = association.find_by(key_field => value) || association.build(key_field => value)
17
+
18
+ list << fields_for(name, item, relation_name: name, builder: self.class) do |builder|
19
+ builder.releaf_associated_set_item(association_options, label_text)
20
+ end
21
+ end
22
+
23
+ safe_join do
24
+ list
25
+ end
26
+ end
27
+
28
+ def releaf_associated_set_item(association_options, label_text)
29
+ wrapper(class: "type-associated-set-item") do
30
+ [hidden_field(:_destroy, value: object.new_record?, class: "destroy"),
31
+ check_box(association_options[:field], {class: "keep", name: "keep"}, (object.send(association_options[:field]) if object.persisted?)),
32
+ label(association_options[:field], label_text),
33
+ hidden_field(association_options[:field])
34
+ ]
35
+ end
36
+ end
37
+ end