releaf-core 0.2.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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