para 0.6.9 → 0.7.0

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/para/admin/tangram-mosaic.png +0 -0
  3. data/app/assets/images/para/admin/template-section.svg +23 -0
  4. data/app/assets/javascripts/para/admin.coffee +20 -0
  5. data/app/assets/javascripts/para/admin/tabs.coffee +22 -5
  6. data/app/assets/javascripts/para/admin/theme_actions.coffee +3 -3
  7. data/app/assets/javascripts/para/inputs/material-input.coffee +4 -0
  8. data/app/assets/javascripts/para/inputs/multi-select-input.coffee +173 -0
  9. data/app/assets/javascripts/para/inputs/nested_many.coffee +9 -9
  10. data/app/assets/stylesheets/para/admin.sass +5 -5
  11. data/app/assets/stylesheets/para/admin/main.sass +32 -0
  12. data/app/assets/stylesheets/para/admin/src/_alert.sass +17 -0
  13. data/app/assets/stylesheets/para/admin/src/_base.sass +51 -0
  14. data/app/assets/stylesheets/para/admin/src/_bootstrap-variables.scss +874 -0
  15. data/app/assets/stylesheets/para/admin/src/_breadcrumb.sass +22 -0
  16. data/app/assets/stylesheets/para/admin/src/_buttons.sass +107 -0
  17. data/app/assets/stylesheets/para/admin/src/_checkable.sass +94 -0
  18. data/app/assets/stylesheets/para/admin/src/_common.sass +203 -0
  19. data/app/assets/stylesheets/para/admin/src/_dropdown.sass +40 -0
  20. data/app/assets/stylesheets/para/admin/src/_form.sass +271 -0
  21. data/app/assets/stylesheets/para/admin/src/_list.sass +61 -0
  22. data/app/assets/stylesheets/para/admin/src/_mixins.sass +113 -0
  23. data/app/assets/stylesheets/para/admin/src/_multi-select.sass +91 -0
  24. data/app/assets/stylesheets/para/admin/src/_navigation.sass +150 -0
  25. data/app/assets/stylesheets/para/admin/src/_navtabs.sass +41 -0
  26. data/app/assets/stylesheets/para/admin/src/_nested-many.sass +69 -0
  27. data/app/assets/stylesheets/para/admin/src/_nested_one.sass +13 -0
  28. data/app/assets/stylesheets/para/admin/src/_orderable.sass +44 -0
  29. data/app/assets/stylesheets/para/admin/src/_page-loading.sass +39 -0
  30. data/app/assets/stylesheets/para/admin/src/_pagination.sass +34 -0
  31. data/app/assets/stylesheets/para/admin/src/_panel.sass +55 -0
  32. data/app/assets/stylesheets/para/admin/src/_responsive.sass +100 -0
  33. data/app/assets/stylesheets/para/admin/{theme → src}/_sorting.sass +11 -3
  34. data/app/assets/stylesheets/para/admin/src/_statcard.sass +41 -0
  35. data/app/assets/stylesheets/para/admin/src/_table.sass +33 -0
  36. data/app/assets/stylesheets/para/admin/src/_tree.sass +52 -0
  37. data/app/assets/stylesheets/para/admin/src/_variables.sass +37 -0
  38. data/app/assets/stylesheets/para/admin/src/_well.sass +12 -0
  39. data/app/assets/stylesheets/para/{admin/src → lib}/datetimepicker.sass +1 -3
  40. data/app/assets/stylesheets/para/{admin/src → lib}/fuelux.sass +3 -5
  41. data/app/assets/stylesheets/para/lib/jasny-bootstrap.sass +97 -0
  42. data/app/assets/stylesheets/para/{admin/src → lib}/redactor.sass +2 -5
  43. data/app/assets/stylesheets/para/lib/selectize.sass +112 -0
  44. data/app/assets/stylesheets/para/lib/slider.sass +12 -0
  45. data/app/controllers/concerns/para/admin/resource_controller_concerns.rb +14 -2
  46. data/app/controllers/para/admin/base_controller.rb +7 -0
  47. data/app/controllers/para/admin/crud_resources_controller.rb +13 -6
  48. data/app/controllers/para/admin/form_resources_controller.rb +5 -3
  49. data/app/controllers/para/admin/resources_controller.rb +9 -3
  50. data/app/controllers/para/admin/search_controller.rb +15 -0
  51. data/app/controllers/para/application_controller.rb +10 -2
  52. data/app/helpers/para/admin/page_helper.rb +9 -9
  53. data/app/helpers/para/application_helper.rb +1 -10
  54. data/app/helpers/para/form_helper.rb +5 -6
  55. data/app/helpers/para/model_helper.rb +13 -3
  56. data/app/helpers/para/ordering_helper.rb +1 -1
  57. data/app/helpers/para/search_results_helper.rb +16 -0
  58. data/app/helpers/para/tree_helper.rb +10 -6
  59. data/app/models/para/page.rb +5 -0
  60. data/app/models/para/page/section.rb +42 -0
  61. data/app/models/para/page/section_resource.rb +12 -0
  62. data/app/views/layouts/para/admin.html.haml +5 -8
  63. data/app/views/para/admin/dashboard.html.haml +21 -8
  64. data/app/views/para/admin/form_resources/show.html.haml +1 -1
  65. data/app/views/para/admin/imports/new.html.haml +2 -2
  66. data/app/views/para/admin/resources/_actions.html.haml +3 -3
  67. data/app/views/para/admin/resources/_add_button.html.haml +1 -1
  68. data/app/views/para/admin/resources/_exports_menu.html.haml +6 -6
  69. data/app/views/para/admin/resources/_filters.html.haml +7 -8
  70. data/app/views/para/admin/resources/_imports_menu.html.haml +6 -6
  71. data/app/views/para/admin/resources/_list.html.haml +14 -15
  72. data/app/views/para/admin/resources/_per_page_select.html.haml +4 -3
  73. data/app/views/para/admin/resources/_subclassable_add_button.html.haml +3 -3
  74. data/app/views/para/admin/resources/_tree.html.haml +7 -9
  75. data/app/views/para/admin/resources/_tree_item.html.haml +5 -6
  76. data/app/views/para/admin/resources/edit.html.haml +1 -1
  77. data/app/views/para/admin/resources/new.html.haml +1 -1
  78. data/app/views/para/admin/search/_result.html.haml +7 -0
  79. data/app/views/para/admin/search/index.html.haml +1 -0
  80. data/app/views/para/admin/settings_component/show.html.haml +1 -1
  81. data/app/views/para/admin/shared/_breadcrumbs.html.haml +2 -3
  82. data/app/views/para/admin/shared/_header.html.haml +16 -27
  83. data/app/views/para/admin/shared/_navigation.html.haml +20 -19
  84. data/app/views/para/form/_tabs.html.haml +6 -7
  85. data/app/views/para/inputs/_multi_select.html.haml +40 -0
  86. data/app/views/para/inputs/_nested_many.html.haml +4 -4
  87. data/app/views/para/inputs/multi_select/_no_items.html.haml +6 -0
  88. data/app/views/para/inputs/nested_many/_add.html.haml +1 -2
  89. data/app/views/para/inputs/nested_many/_add_with_subclasses.html.haml +4 -5
  90. data/app/views/para/inputs/nested_many/_container.html.haml +7 -8
  91. data/app/views/shared/_breadcrumbs.html.haml +4 -0
  92. data/config/locales/fr.yml +29 -4
  93. data/db/migrate/20170324125547_create_para_page_section_resources.rb +15 -0
  94. data/lib/generators/para/filters/templates/_filters.html.haml +3 -5
  95. data/lib/generators/para/install/templates/initializer.rb +12 -0
  96. data/lib/generators/para/page/section/section_generator.rb +13 -2
  97. data/lib/generators/para/page/section/templates/section.html.haml.erb +3 -0
  98. data/lib/generators/para/resource/resource_generator.rb +1 -1
  99. data/lib/para.rb +25 -21
  100. data/lib/para/attribute_field.rb +2 -0
  101. data/lib/para/attribute_field/base.rb +1 -1
  102. data/lib/para/attribute_field/belongs_to.rb +1 -1
  103. data/lib/para/attribute_field/boolean.rb +1 -1
  104. data/lib/para/attribute_field/friendly_id.rb +19 -0
  105. data/lib/para/attribute_field/has_many.rb +43 -4
  106. data/lib/para/attribute_field/nested_field.rb +46 -0
  107. data/lib/para/attribute_field/nested_many.rb +30 -9
  108. data/lib/para/attribute_field/nested_one.rb +28 -9
  109. data/lib/para/attribute_field/password.rb +1 -1
  110. data/lib/para/attribute_field/relation.rb +19 -1
  111. data/lib/para/attribute_field_mappings.rb +9 -3
  112. data/lib/para/breadcrumbs/breadcrumb.rb +57 -10
  113. data/lib/para/breadcrumbs/controller.rb +19 -6
  114. data/lib/para/breadcrumbs/manager.rb +9 -1
  115. data/lib/para/config.rb +3 -0
  116. data/lib/para/controller_resource.rb +34 -0
  117. data/lib/para/engine.rb +33 -14
  118. data/lib/para/exporter/base.rb +1 -1
  119. data/lib/para/ext.rb +1 -1
  120. data/lib/para/ext/active_record_nested_attributes.rb +51 -0
  121. data/lib/para/ext/paperclip.rb +2 -6
  122. data/lib/para/form_builder.rb +3 -0
  123. data/lib/para/form_builder/attributes_mappings_tracker.rb +45 -0
  124. data/lib/para/form_builder/containers.rb +13 -17
  125. data/lib/para/form_builder/nested_form.rb +2 -3
  126. data/lib/para/helpers.rb +8 -0
  127. data/lib/para/helpers/attributes_mappings.rb +13 -0
  128. data/lib/para/helpers/resource_name.rb +14 -0
  129. data/lib/para/inputs.rb +1 -0
  130. data/lib/para/inputs/multi_select_input.rb +90 -0
  131. data/lib/para/inputs/nested_many_input.rb +6 -1
  132. data/lib/para/markup/resources_table.rb +15 -11
  133. data/lib/para/model_field_parsers.rb +3 -2
  134. data/lib/para/model_field_parsers/base.rb +7 -2
  135. data/lib/para/model_field_parsers/friendly_id.rb +19 -0
  136. data/lib/para/model_field_parsers/relations.rb +20 -1
  137. data/lib/para/page/model.rb +3 -1
  138. data/lib/para/routes.rb +1 -0
  139. data/lib/para/simple_form_config.rb +85 -0
  140. data/lib/para/version.rb +1 -1
  141. data/lib/rails/routing_mapper.rb +5 -8
  142. data/vendor/assets/javascripts/jasny-bootstrap.js +577 -0
  143. data/vendor/assets/stylesheets/animate.css +3340 -0
  144. data/vendor/assets/stylesheets/hint.css +649 -0
  145. data/vendor/assets/stylesheets/jasny-bootstrap.css +287 -0
  146. metadata +114 -67
  147. data/app/assets/images/para/admin/bg.png +0 -0
  148. data/app/assets/javascripts/para/admin.js +0 -20
  149. data/app/assets/stylesheets/admin/theme.sass +0 -0
  150. data/app/assets/stylesheets/para/admin/src/jasny.bootstrap.sass +0 -40
  151. data/app/assets/stylesheets/para/admin/src/nested_many.sass +0 -5
  152. data/app/assets/stylesheets/para/admin/src/page-loading.sass +0 -24
  153. data/app/assets/stylesheets/para/admin/src/page-top-bar.sass +0 -9
  154. data/app/assets/stylesheets/para/admin/src/selectize.sass +0 -46
  155. data/app/assets/stylesheets/para/admin/src/slider.sass +0 -12
  156. data/app/assets/stylesheets/para/admin/theme.sass +0 -22
  157. data/app/assets/stylesheets/para/admin/theme/_base.sass +0 -176
  158. data/app/assets/stylesheets/para/admin/theme/_breadcrumb.sass +0 -75
  159. data/app/assets/stylesheets/para/admin/theme/_buttons.sass +0 -27
  160. data/app/assets/stylesheets/para/admin/theme/_checkable.sass +0 -108
  161. data/app/assets/stylesheets/para/admin/theme/_commonds.sass +0 -210
  162. data/app/assets/stylesheets/para/admin/theme/_dropdown.sass +0 -52
  163. data/app/assets/stylesheets/para/admin/theme/_form.sass +0 -150
  164. data/app/assets/stylesheets/para/admin/theme/_list.sass +0 -139
  165. data/app/assets/stylesheets/para/admin/theme/_navigation.sass +0 -229
  166. data/app/assets/stylesheets/para/admin/theme/_navtabs.sass +0 -151
  167. data/app/assets/stylesheets/para/admin/theme/_orderable.sass +0 -45
  168. data/app/assets/stylesheets/para/admin/theme/_panel.sass +0 -264
  169. data/app/assets/stylesheets/para/admin/theme/_responsive.sass +0 -123
  170. data/app/assets/stylesheets/para/admin/theme/_table.sass +0 -28
  171. data/app/assets/stylesheets/para/admin/theme/_tree.sass +0 -74
  172. data/app/assets/stylesheets/para/admin/theme/_variables.sass +0 -31
  173. data/app/assets/stylesheets/para/application.css +0 -15
  174. data/app/assets/stylesheets/para/lib/_variables.scss +0 -646
  175. data/app/assets/stylesheets/para/overrides/responsive.sass +0 -62
  176. data/app/assets/stylesheets/para/overrides/theme.sass +0 -172
  177. data/lib/para/ext/cancan.rb +0 -26
  178. data/vendor/assets/javascripts/jasny.bootstrap.min.js +0 -7
  179. data/vendor/assets/stylesheets/animate.min.css +0 -6
  180. data/vendor/assets/stylesheets/jasny.bootstrap.min.css +0 -7
@@ -0,0 +1,112 @@
1
+ //
2
+ // Selectize
3
+ // --------------------------------------------------
4
+ @import "compass/css3/user-interface"
5
+ @import "para/admin/src/variables"
6
+ @import "para/admin/src/mixins"
7
+
8
+ //== Selectize
9
+ //
10
+ //## Override default style
11
+
12
+ //** Debug ghost margin bottom
13
+ .selectize-control,
14
+ .selectize-control.form-control
15
+ line-height: 0
16
+
17
+ //** Single
18
+ .selectize-control
19
+ &.single
20
+ .selectize-input
21
+ padding-right: 30px
22
+ //** Caret by para
23
+ &:after
24
+ right: 12px
25
+ +fontAwesome
26
+ content: "\f107"
27
+ border: none
28
+ margin-top: -6px
29
+ color: $gray
30
+
31
+ //** Dropdown
32
+
33
+ //** Active system
34
+
35
+ //** Dropdown active
36
+
37
+ .selectize-input,
38
+ .selectize-input.full
39
+ border-color: $input-border
40
+ +border-radius($input-border-radius)
41
+ &.focus
42
+ border-color: $input-border-focus
43
+ &.dropdown-active
44
+ +border-radius($input-border-radius)
45
+ &:after
46
+ border: none
47
+ +transform(rotate(180deg))
48
+ margin-top: -6px
49
+
50
+ .selectize-control.single .selectize-input
51
+ &.dropdown-active
52
+ &:after
53
+ margin-top: -6px
54
+
55
+ .selectize-dropdown,
56
+ .selectize-input,
57
+ .selectize-input input
58
+ color: $input-color
59
+
60
+ .selectize-input,
61
+ .selectize-control.single .selectize-input.input-active
62
+ background: $input-bg
63
+
64
+ .selectize-input,
65
+ .selectize-input.full,
66
+ .selectize-input.not-full
67
+ background: $input-bg
68
+
69
+ .selectize-input.not-full input
70
+ +input-placeholder
71
+ color: $input-color-placeholder
72
+ font-size: 0.9em
73
+
74
+ .selectize-dropdown
75
+ [data-selectable]
76
+ background-color: $dropdown-bg
77
+ color: $dropdown-link-color
78
+ .active
79
+ background-color: $gray-lighter
80
+ color: $dropdown-link-hover-color
81
+ .selected
82
+ background-color: $dropdown-link-active-bg
83
+ color: $dropdown-link-active-color
84
+
85
+ .selectize-control.multi .selectize-input > div
86
+ background-color: $gray-light
87
+ +border-radius(2px)
88
+ color: $text-color
89
+ &:hover,
90
+ &:focus,
91
+ &.active
92
+ background-color: $navbar-default-bg
93
+ color: $gray-lighter
94
+ .remove
95
+ &:hover
96
+ background-color: $blue-darker
97
+
98
+ //== Selectize Dropdown
99
+ //
100
+ //## Override z-index because of Fixed actions container
101
+
102
+ .selectize-dropdown,
103
+ .selectize-dropdown.form-control
104
+ +material-box-shadow-soft(2)
105
+ border: none
106
+ margin: 8px 0 0 0
107
+ z-index: $zindex-navbar-fixed + 20
108
+
109
+ .selectize-dropdown
110
+ [data-selectable]
111
+ line-weight: 300
112
+ padding: 8px 12px
@@ -0,0 +1,12 @@
1
+ @import "para/admin/src/variables"
2
+
3
+ .form-group
4
+ &.slider
5
+ display: block
6
+ .slider
7
+ .slider-horizontal
8
+ width: 100%
9
+
10
+ .slider-handle
11
+ background-image: none
12
+ background-color: $brand-primary
@@ -1,13 +1,25 @@
1
1
  module Para
2
2
  module Admin
3
3
  module ResourceControllerConcerns
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ before_action :set_resource_model_from_resource
8
+ end
9
+
10
+ private
11
+
12
+ def set_resource_model_from_resource
13
+ @resource_model = resource.class if resource
14
+ end
15
+
4
16
  def resource_model
5
17
  @resource_model ||= @component.try(:model)
6
18
  end
7
19
 
8
20
  def resource
9
21
  @resource ||= begin
10
- resource = instance_variable_get(:"@#{ resource_name }")
22
+ resource = instance_variable_get(:"@#{ resource_name }") if resource_name
11
23
  # We ensure that the fetched resource is not a relation, which could
12
24
  # happen for uncountable resource names (like "news") and would make
13
25
  # code depending on the `resource` getter to fail unexpectedly
@@ -16,7 +28,7 @@ module Para
16
28
  end
17
29
 
18
30
  def resource_name
19
- resource_model.model_name.singular_route_key
31
+ resource_model.model_name.singular_route_key if resource_model
20
32
  end
21
33
  end
22
34
  end
@@ -27,6 +27,13 @@ module Para
27
27
 
28
28
  private
29
29
 
30
+ # Override cancan controlelr resource class to avoid attributes
31
+ # assignation issues with resources
32
+ #
33
+ def self.cancan_resource_class
34
+ Para::ControllerResource
35
+ end
36
+
30
37
  def authorize_admin_access
31
38
  authorize! :access, :admin
32
39
  end
@@ -3,17 +3,20 @@ require_dependency "para/application_controller"
3
3
  module Para
4
4
  module Admin
5
5
  class CrudResourcesController < Para::Admin::ResourcesController
6
- include Para::Admin::ResourceControllerConcerns
7
6
  include Para::SearchHelper
8
7
 
9
8
  before_action :load_and_authorize_crud_resource
10
9
  before_action :add_breadcrumbs, only: [:show, :index, :edit, :new]
11
10
 
11
+ # Include after resource loading to allow the concern to use the resource
12
+ # in before_action hooks
13
+ include Para::Admin::ResourceControllerConcerns
14
+
12
15
  after_action :attach_resource_to_component, only: [:create]
13
16
  after_action :remove_resource_from_component, only: [:destroy]
14
17
 
15
18
  def index
16
- @q = @component.resources.search(params[:q])
19
+ @q = @component.resources.ransack(params[:q])
17
20
  @resources = distinct_search_results(@q).page(params[:page]).per(params[:per_page])
18
21
 
19
22
  # Sort collection for orderable and trees
@@ -51,17 +54,21 @@ module Para
51
54
  private
52
55
 
53
56
  def resource_model
54
- @resource_model ||=
55
- if params[:type] && @component.subclassable_with?(params[:type])
56
- params[:type].constantize
57
+ @resource_model ||= begin
58
+ type = params[:type].presence || (params[:resource] && params[:resource][:type])
59
+
60
+ if type && @component.subclassable_with?(type)
61
+ type.constantize
57
62
  else
58
63
  super
59
64
  end
65
+ end
60
66
  end
61
67
 
62
68
  def load_and_authorize_crud_resource
63
69
  loader = self.class.cancan_resource_class.new(
64
- self, resource_name, parent: false, class: resource_model.name, find_by: :id
70
+ self, resource_name, parent: false, class: resource_model.name,
71
+ find_by: :id, bypass_params_assignation: true
65
72
  )
66
73
 
67
74
  loader.load_and_authorize_resource
@@ -3,11 +3,13 @@ require_dependency "para/application_controller"
3
3
  module Para
4
4
  module Admin
5
5
  class FormResourcesController < Para::Admin::ResourcesController
6
- include Para::Admin::ResourceControllerConcerns
7
-
8
6
  before_action :load_and_authorize_form
9
7
  after_action :attach_resource_to_component, only: [:create]
10
8
 
9
+ # Include after resource loading to allow the concern to use the resource
10
+ # in before_action hooks
11
+ include Para::Admin::ResourceControllerConcerns
12
+
11
13
  private
12
14
 
13
15
  def attach_resource_to_component
@@ -19,7 +21,7 @@ module Para
19
21
  def load_and_authorize_form
20
22
  loader = self.class.cancan_resource_class.new(
21
23
  self, :resource, parent: false, class: resource_model.name,
22
- singleton: true, through: :component
24
+ singleton: true, through: :component, bypass_params_assignation: true
23
25
  )
24
26
 
25
27
  loader.load_and_authorize_resource
@@ -4,6 +4,7 @@ module Para
4
4
  module Admin
5
5
  class ResourcesController < Para::Admin::BaseController
6
6
  include Para::ModelHelper
7
+ include Para::Helpers::AttributesMappings
7
8
 
8
9
  class_attribute :resource_name, :resource_class
9
10
  load_and_authorize_component
@@ -17,6 +18,11 @@ module Para
17
18
  # Assign component the resource belongs to it
18
19
  resource.component = @component if resource.respond_to?(:component=)
19
20
 
21
+ # We overriden Cancan so it does not try to assign our params during the
22
+ # create action, allowing our attribute fields to parse them with an
23
+ # actual resource.
24
+ resource.assign_attributes(resource_params)
25
+
20
26
  if resource.save
21
27
  flash_message(:success, resource)
22
28
  redirect_to after_form_submit_path
@@ -86,7 +92,7 @@ module Para
86
92
  end
87
93
 
88
94
  def resource_model
89
- self.class.resource_model
95
+ @resource_model ||= self.class.resource_model
90
96
  end
91
97
 
92
98
  def resource
@@ -112,8 +118,8 @@ module Para
112
118
  end
113
119
 
114
120
  def parse_resource_params(hash)
115
- model_field_mappings(resource_model).fields.each do |field|
116
- field.parse_input(hash)
121
+ model_field_mappings(resource_model, mappings: attributes_mappings_for(hash)).fields.each do |field|
122
+ field.parse_input(hash, resource)
117
123
  end
118
124
 
119
125
  hash
@@ -0,0 +1,15 @@
1
+ module Para
2
+ module Admin
3
+ class SearchController < ApplicationController
4
+ include Para::ModelHelper
5
+ include Para::SearchHelper
6
+
7
+ def index
8
+ model = params[:model_name].constantize
9
+ attributes = model_field_mappings(model).fields
10
+ @results = model.ransack(fulltext_search_param_for(attributes) => params[:search]).result
11
+ render layout: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,7 +1,15 @@
1
1
  module Para
2
2
  class ApplicationController < ActionController::Base
3
- include Para::Breadcrumbs::Controller
3
+ before_action :add_admin_home_breadcrumb
4
4
 
5
- add_breadcrumb :home, :admin
5
+ def admin?
6
+ true
7
+ end
8
+
9
+ private
10
+
11
+ def add_admin_home_breadcrumb
12
+ add_breadcrumb :home, admin_path
13
+ end
6
14
  end
7
15
  end
@@ -2,23 +2,23 @@ module Para
2
2
  module Admin
3
3
  module PageHelper
4
4
  def page_top_bar(options = {})
5
- content_tag(:div, class: 'page-title') do
5
+ content_tag(:div, class: 'page-title row') do
6
6
  content_tag(:h1, options[:title]) +
7
7
 
8
8
  if (actions = actions_for(options[:type]))
9
- content_tag(:div, class: 'page-actions') do
10
- actions.map(&method(:build_action)).join('').html_safe
11
- end
9
+ actions.map(&method(:build_action)).join('').html_safe
12
10
  end
13
11
  end
14
12
  end
15
13
 
16
14
  def build_action(action)
17
- link_to(action[:url], class: 'btn btn-default') do
18
- (
19
- (fa_icon(action[:icon]) if action[:icon]) +
20
- action[:label]
21
- ).html_safe
15
+ content_tag(:div, class: 'actions-control pull-right') do
16
+ link_to(action[:url], class: 'btn btn-default btn-shadow') do
17
+ (
18
+ (fa_icon(action[:icon], class: 'fa-fw') if action[:icon]) +
19
+ action[:label]
20
+ ).html_safe
21
+ end
22
22
  end
23
23
  end
24
24
 
@@ -1,14 +1,5 @@
1
1
  module Para
2
2
  module ApplicationHelper
3
- include Para::SearchHelper
4
- include Para::ModelHelper
5
- include Para::OrderingHelper
6
- include Para::NavigationHelper
7
- include Para::FormHelper
8
- include Para::MarkupHelper
9
- include Para::TagHelper
10
- include Para::TreeHelper
11
- include Para::FlashHelper
12
- include Para::TranslationsHelper
3
+ include Para::Helpers::ResourceName
13
4
  end
14
5
  end
@@ -3,7 +3,8 @@ module Para
3
3
  def para_form_for(resource, options = {}, &block)
4
4
  default_options = {
5
5
  as: :resource,
6
- wrapper: :horizontal_form,
6
+ wrapper: :vertical_form,
7
+ wrapper_mappings: Para::SimpleFormConfig.wrapper_mappings,
7
8
  html: { class: '', data: { :'para-form' => true } }
8
9
  }
9
10
 
@@ -11,17 +12,13 @@ module Para
11
12
 
12
13
  options[:html][:class] = [
13
14
  options[:html][:class].presence,
14
- 'form-horizontal form-group-separated'
15
+ 'form-vertical forms-outline'
15
16
  ].compact.join(' ')
16
17
 
17
18
  unless options.key?(:url)
18
19
  options[:url] = @component.relation_path(resource)
19
20
  end
20
21
 
21
- if options.fetch(:fixed_actions, true)
22
- default_options[:html][:class] << ' form-fixed-actions'
23
- end
24
-
25
22
  simple_form_for(resource, options) do |form|
26
23
  capture { block.call(form) }.tap do |content|
27
24
  # Append hidden field with type if resource is subclassable
@@ -29,6 +26,8 @@ module Para
29
26
  if @component.subclassable? && resource.new_record?
30
27
  content << form.hidden_field(:type, value: resource.type)
31
28
  end
29
+
30
+ content << form.attributes_mappings_field_for(form)
32
31
  end
33
32
  end
34
33
  end
@@ -5,11 +5,21 @@ module Para
5
5
  model_field_mappings(model).fields
6
6
  end
7
7
 
8
- def model_field_mappings(model, attributes = nil)
8
+ # Second argument can be the whitelist_attributes array or keyword
9
+ # arguments. This is to ensure backwards compatibility with old plugins.
10
+ #
11
+ def model_field_mappings(model, options = {})
12
+ if Array == options
13
+ whitelist_attributes = options
14
+ else
15
+ whitelist_attributes = options.fetch(:whitelist_attributes, nil)
16
+ mappings = options.fetch(:mappings, {})
17
+ end
18
+
9
19
  store_key = ['model', 'mappings', model.name.underscore].join(':')
10
20
 
11
- Para.store[store_key] ||= Para::AttributeFieldMappings.new(
12
- model, whitelist_attributes: attributes
21
+ Para::AttributeFieldMappings.new(
22
+ model, whitelist_attributes: whitelist_attributes, mappings: mappings
13
23
  )
14
24
  end
15
25
 
@@ -12,7 +12,7 @@ module Para
12
12
  end
13
13
 
14
14
  content_tag(:span, options) do
15
- content_tag(:i, '', class: 'fa fa-bars') +
15
+ content_tag(:i, '', class: 'sort-dots') +
16
16
  field
17
17
  end
18
18
  end