para 0.9.4 → 0.11.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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/para/admin/src/_alert.sass +1 -1
  3. data/app/assets/stylesheets/para/admin/src/_base.sass +1 -1
  4. data/app/assets/stylesheets/para/admin/src/_breadcrumb.sass +1 -1
  5. data/app/assets/stylesheets/para/admin/src/_common.sass +53 -54
  6. data/app/assets/stylesheets/para/admin/src/_dropdown.sass +1 -1
  7. data/app/assets/stylesheets/para/admin/src/_form.sass +17 -15
  8. data/app/assets/stylesheets/para/admin/src/_list.sass +8 -6
  9. data/app/assets/stylesheets/para/admin/src/_mixins.sass +13 -13
  10. data/app/assets/stylesheets/para/admin/src/_multi-select.sass +2 -2
  11. data/app/assets/stylesheets/para/admin/src/_navigation.sass +4 -6
  12. data/app/assets/stylesheets/para/admin/src/_navtabs.sass +2 -2
  13. data/app/assets/stylesheets/para/admin/src/_nested-many.sass +3 -3
  14. data/app/assets/stylesheets/para/admin/src/_orderable.sass +2 -2
  15. data/app/assets/stylesheets/para/admin/src/_pagination.sass +5 -5
  16. data/app/assets/stylesheets/para/admin/src/_panel.sass +1 -1
  17. data/app/assets/stylesheets/para/admin/src/_statcard.sass +1 -1
  18. data/app/assets/stylesheets/para/admin/src/_table.sass +1 -1
  19. data/app/assets/stylesheets/para/admin/src/_tree.sass +1 -1
  20. data/app/assets/stylesheets/para/admin/src/_variables.sass +1 -10
  21. data/app/assets/stylesheets/para/admin/src/_well.sass +2 -2
  22. data/app/assets/stylesheets/para/lib/compass/_support.scss +447 -0
  23. data/app/assets/stylesheets/para/lib/compass/css3/_box-shadow.scss +88 -0
  24. data/app/assets/stylesheets/para/lib/compass/css3/_images.scss +152 -0
  25. data/app/assets/stylesheets/para/lib/compass/css3/_inline-block.scss +31 -0
  26. data/app/assets/stylesheets/para/lib/compass/css3/_text-shadow.scss +82 -0
  27. data/app/assets/stylesheets/para/lib/compass/css3/_transform.scss +590 -0
  28. data/app/assets/stylesheets/para/lib/compass/css3/_transition.scss +190 -0
  29. data/app/assets/stylesheets/para/lib/compass/css3/_user-interface.scss +71 -0
  30. data/app/assets/stylesheets/para/lib/compass/utilities/general/_hacks.scss +65 -0
  31. data/app/assets/stylesheets/para/lib/datetimepicker.sass +1 -1
  32. data/app/assets/stylesheets/para/lib/fuelux.sass +2 -2
  33. data/app/assets/stylesheets/para/lib/redactor.sass +5 -5
  34. data/app/assets/stylesheets/para/lib/selectize.sass +6 -7
  35. data/app/controllers/para/admin/resources_controller.rb +9 -9
  36. data/app/helpers/para/admin/base_helper.rb +3 -3
  37. data/app/helpers/para/admin/nested_inputs_helper.rb +1 -1
  38. data/app/helpers/para/translations_helper.rb +1 -1
  39. data/app/models/para/application_record.rb +5 -3
  40. data/app/models/para/component/base.rb +6 -6
  41. data/app/models/para/component_section.rb +3 -3
  42. data/app/models/para/library/file.rb +2 -2
  43. data/app/models/para/page/section.rb +6 -7
  44. data/app/views/para/admin/main/index.html.haml +1 -1
  45. data/app/views/para/inputs/nested_many/_container.html.haml +1 -1
  46. data/lib/para/active_storage_downloader.rb +13 -7
  47. data/lib/para/cloneable/attachments_cloner.rb +5 -4
  48. data/lib/para/component.rb +0 -7
  49. data/lib/para/components_configuration.rb +18 -23
  50. data/lib/para/inputs/nested_one_input.rb +3 -3
  51. data/lib/para/version.rb +1 -1
  52. data/lib/para.rb +0 -2
  53. metadata +99 -104
@@ -0,0 +1,190 @@
1
+ @import "para/lib/compass/support";
2
+
3
+ // The the user threshold for transition support. Defaults to `$graceful-usage-threshold`
4
+ $transition-support-threshold: $graceful-usage-threshold !default;
5
+
6
+
7
+ // CSS Transitions
8
+ // Currently only works in Webkit.
9
+ //
10
+ // * expected in CSS3, FireFox 3.6/7 and Opera Presto 2.3
11
+ // * We'll be prepared.
12
+ //
13
+ // Including this submodule sets following defaults for the mixins:
14
+ //
15
+ // $default-transition-property : all
16
+ // $default-transition-duration : 1s
17
+ // $default-transition-function : false
18
+ // $default-transition-delay : false
19
+ //
20
+ // Override them if you like. Timing-function and delay are set to false for browser defaults (ease, 0s).
21
+
22
+ $default-transition-property: all !default;
23
+
24
+ $default-transition-duration: 1s !default;
25
+
26
+ $default-transition-function: null !default;
27
+
28
+ $default-transition-delay: null !default;
29
+
30
+ $transitionable-prefixed-values: transform, transform-origin !default;
31
+
32
+
33
+
34
+ // Checks if the value given is a unit of time.
35
+ @function is-time($value) {
36
+ @return if(type-of($value) == number, not not index(s ms, unit($value)), false);
37
+ }
38
+
39
+ // Returns `$property` with the given prefix if it is found in `$transitionable-prefixed-values`.
40
+ @function prefixed-for-transition($prefix, $property) {
41
+ @if not $prefix {
42
+ @return $property;
43
+ }
44
+ @if type-of($property) == list or type-of($property) == arglist {
45
+ $new-list: comma-list();
46
+ @each $v in $property {
47
+ $new-list: append($new-list, prefixed-for-transition($prefix, $v));
48
+ }
49
+ @return $new-list;
50
+ } @else {
51
+ @if index($transitionable-prefixed-values, $property) {
52
+ @return #{$prefix}-#{$property};
53
+ } @else {
54
+ @return $property;
55
+ }
56
+ }
57
+ }
58
+
59
+ // Returns $transition-map which includes key and values that map to a transition declaration
60
+ @function transition-map($transition) {
61
+ $transition-map: ();
62
+
63
+ @each $item in $transition {
64
+ @if is-time($item) {
65
+ @if map-has-key($transition-map, duration) {
66
+ $transition-map: map-merge($transition-map, (delay: $item));
67
+ } @else {
68
+ $transition-map: map-merge($transition-map, (duration: $item));
69
+ }
70
+ } @else if map-has-key($transition-map, property) {
71
+ $transition-map: map-merge($transition-map, (timing-function: $item));
72
+ } @else {
73
+ $transition-map: map-merge($transition-map, (property: $item));
74
+ }
75
+ }
76
+
77
+ @return $transition-map;
78
+ }
79
+
80
+ // One or more properties to transition
81
+ //
82
+ // * for multiple, use a comma-delimited list
83
+ // * also accepts "all" or "none"
84
+
85
+ @mixin transition-property($properties...) {
86
+ $properties: set-arglist-default($properties, $default-transition-property);
87
+ @include with-each-prefix(css-transitions, $transition-support-threshold) {
88
+ $props: if($current-prefix, prefixed-for-transition($current-prefix, $properties), $properties);
89
+ @include prefix-prop(transition-property, $props);
90
+ }
91
+ }
92
+
93
+ // One or more durations in seconds
94
+ //
95
+ // * for multiple, use a comma-delimited list
96
+ // * these durations will affect the properties in the same list position
97
+
98
+ @mixin transition-duration($durations...) {
99
+ $durations: set-arglist-default($durations, $default-transition-duration);
100
+ @include prefixed-properties(css-transitions, $transition-support-threshold, (
101
+ transition-duration: $durations
102
+ ));
103
+ }
104
+
105
+ // One or more timing functions
106
+ //
107
+ // * [ ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(x1, y1, x2, y2)]
108
+ // * For multiple, use a comma-delimited list
109
+ // * These functions will effect the properties in the same list position
110
+
111
+ @mixin transition-timing-function($functions...) {
112
+ $functions: set-arglist-default($functions, $default-transition-function);
113
+ @include prefixed-properties(css-transitions, $transition-support-threshold, (
114
+ transition-timing-function: $functions
115
+ ));
116
+ }
117
+
118
+ // One or more transition-delays in seconds
119
+ //
120
+ // * for multiple, use a comma-delimited list
121
+ // * these delays will effect the properties in the same list position
122
+
123
+ @mixin transition-delay($delays...) {
124
+ $delays: set-arglist-default($delays, $default-transition-delay);
125
+ @include prefixed-properties(css-transitions, $transition-support-threshold, (
126
+ transition-delay: $delays
127
+ ));
128
+ }
129
+
130
+ // Transition all-in-one shorthand
131
+
132
+ @mixin single-transition(
133
+ $property: $default-transition-property,
134
+ $duration: $default-transition-duration,
135
+ $function: $default-transition-function,
136
+ $delay: $default-transition-delay
137
+ ) {
138
+ @include transition(compact($property $duration $function $delay));
139
+ }
140
+
141
+ @mixin transition($transitions...) {
142
+ $default: (compact($default-transition-property $default-transition-duration $default-transition-function $default-transition-delay),);
143
+ $transitions: if(length($transitions) == 1 and type-of(nth($transitions, 1)) == list and list-separator(nth($transitions, 1)) == comma, nth($transitions, 1), $transitions);
144
+ $transitions: set-arglist-default($transitions, $default);
145
+
146
+
147
+ @include with-each-prefix(css-transitions, $transition-support-threshold) {
148
+ $delays: comma-list();
149
+ $transitions-without-delays: comma-list();
150
+ $transitions-with-delays: comma-list();
151
+ $has-delays: false;
152
+
153
+
154
+ // This block can be made considerably simpler at the point in time that
155
+ // we no longer need to deal with the differences in how delays are treated.
156
+ @each $transition in $transitions {
157
+ // Declare initial values for transition
158
+ $transition: transition-map($transition);
159
+
160
+ $property: map-get($transition, property);
161
+ $duration: map-get($transition, duration);
162
+ $timing-function: map-get($transition, timing-function);
163
+ $delay: map-get($transition, delay);
164
+
165
+ // Parse transition string to assign values into correct variables
166
+ $has-delays: $has-delays or $delay;
167
+
168
+ @if $current-prefix == -webkit {
169
+ // Keep a list of delays in case one is specified
170
+ $delays: append($delays, if($delay, $delay, 0s));
171
+ $transitions-without-delays: append($transitions-without-delays,
172
+ prefixed-for-transition($current-prefix, $property) $duration $timing-function);
173
+ } @else {
174
+ $transitions-with-delays: append($transitions-with-delays,
175
+ prefixed-for-transition($current-prefix, $property) $duration $timing-function $delay);
176
+ }
177
+ }
178
+
179
+ @if $current-prefix == -webkit {
180
+ @include prefix-prop(transition, $transitions-without-delays);
181
+ @if $has-delays {
182
+ @include prefix-prop(transition-delay, $delays);
183
+ }
184
+ } @else if $current-prefix {
185
+ @include prefix-prop(transition, $transitions-with-delays);
186
+ } @else {
187
+ transition: $transitions-with-delays;
188
+ }
189
+ }
190
+ }
@@ -0,0 +1,71 @@
1
+ // User Interface
2
+ // This file can be expanded to handle all the user interface properties as
3
+ // they become available in browsers:
4
+ // http://www.w3.org/TR/2000/WD-css3-userint-20000216
5
+
6
+ @import "para/lib/compass/support";
7
+
8
+ // The prefixed support threshold for user-select.
9
+ // Defaults to the $graceful-usage-threshold.
10
+ $userselect-support-threshold: $graceful-usage-threshold !default;
11
+
12
+ // This property controls the selection model and granularity of an element.
13
+ //
14
+ // @param $select
15
+ // [ none | text | toggle | element | elements | all | inherit ]
16
+ @mixin user-select($select) {
17
+ $select: unquote($select);
18
+
19
+ @include with-each-prefix(user-select-none, $userselect-support-threshold) {
20
+ // old Firefox used a proprietary `-moz-none` value, starting with Firefox 21 `none` behaves like `-moz-none`
21
+ // @link https://developer.mozilla.org/en-US/docs/Web/CSS/user-select
22
+ @include prefix-prop(user-select, if($current-prefix == -moz and $select == 'none', -moz-none, $select));
23
+ }
24
+ }
25
+
26
+ // The prefixed support threshold for input-placeholder.
27
+ // Defaults to the $graceful-usage-threshold.
28
+ $input-placeholder-support-threshold: $graceful-usage-threshold !default;
29
+
30
+ // Style the html5 input placeholder in browsers that support it.
31
+ //
32
+ // The styles for the input placeholder are passed as mixin content
33
+ // and the selector comes from the mixin's context.
34
+ //
35
+ // For example:
36
+ //
37
+ // #{elements-of-type(text-input)} {
38
+ // @include input-placeholder {
39
+ // color: #bfbfbf;
40
+ // font-style: italic;
41
+ // }
42
+ // }
43
+ //
44
+ // if you want to apply the placeholder styles to all elements supporting
45
+ // the `input-placeholder` pseudo class (beware of performance impacts):
46
+ //
47
+ // * {
48
+ // @include input-placeholder {
49
+ // color: #bfbfbf;
50
+ // font-style: italic;
51
+ // }
52
+ // }
53
+ @mixin input-placeholder {
54
+ @include with-each-prefix(css-placeholder, $input-placeholder-support-threshold) {
55
+ @if $current-prefix == -webkit {
56
+ &::-webkit-input-placeholder { @content; }
57
+ }
58
+ @elseif $current-prefix == -moz {
59
+ // for Firefox 19 and below
60
+ @if support-legacy-browser("firefox", "4", "19", $threshold: $input-placeholder-support-threshold) {
61
+ &:-moz-placeholder { @content; }
62
+ }
63
+ // for Firefox 20 and above
64
+ &::-moz-placeholder { @content; }
65
+ }
66
+ @elseif $current-prefix == -ms {
67
+ &:-ms-input-placeholder { @content; }
68
+ }
69
+ }
70
+ // This is not standardized yet so no official selector is generated.
71
+ }
@@ -0,0 +1,65 @@
1
+ @import "para/lib/compass/support";
2
+
3
+ // The legacy support threshold for has-layout.
4
+ // Defaults to the $critical-usage-threshold.
5
+ $has-layout-support-threshold: $critical-usage-threshold !default;
6
+
7
+ // The `zoom` approach generates less CSS but does not validate.
8
+ // Set this to `block` to use the display-property to hack the
9
+ // element to gain layout.
10
+ $default-has-layout-approach: zoom !default;
11
+
12
+ // This mixin causes an element matching the selector
13
+ // to gain the "hasLayout" property in internet explorer.
14
+ // More information on [hasLayout](http://reference.sitepoint.com/css/haslayout).
15
+ @mixin has-layout($approach: $default-has-layout-approach) {
16
+ @if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold) {
17
+ @if $approach == zoom {
18
+ @include has-layout-zoom;
19
+ } @else if $approach == block {
20
+ @include has-layout-block;
21
+ } @else {
22
+ @warn "Unknown has-layout approach: #{$approach}";
23
+ @include has-layout-zoom;
24
+ }
25
+ }
26
+ }
27
+
28
+ @mixin has-layout-zoom {
29
+ @if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold) {
30
+ *zoom: 1;
31
+ }
32
+ }
33
+
34
+ @mixin has-layout-block {
35
+ @if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold) {
36
+ // This makes ie6 get layout
37
+ display: inline-block;
38
+ // and this puts it back to block
39
+ & { display: block; }
40
+ }
41
+ }
42
+
43
+
44
+ // The legacy support threshold for IE6 attribute hack.
45
+ // Defaults to the $critical-usage-threshold.
46
+ $ie6-attribute-hack-support-threshold: $critical-usage-threshold !default;
47
+
48
+ // A hack to supply IE6 (and below) with a different property value.
49
+ // [Read more](http://www.cssportal.com/css-hacks/#in_css-important).
50
+ @mixin bang-hack($property, $value, $ie6-value) {
51
+ @if support-legacy-browser("ie", "6", $threshold: $ie6-attribute-hack-support-threshold) {
52
+ @warn "it's recommended to use the underscore-hack() mixin instead of bang-hack()";
53
+ #{$property}: #{$value} !important;
54
+ #{$property}: #{$ie6-value};
55
+ }
56
+ }
57
+
58
+ // A hack to supply IE6 (and below) with a different property value.
59
+ // [Read more](http://www.paulirish.com/2009/browser-specific-css-hacks/)
60
+ @mixin underscore-hack($property, $value, $ie6-value) {
61
+ @if support-legacy-browser("ie", "6", $threshold: $ie6-attribute-hack-support-threshold) {
62
+ #{$property}: #{$value};
63
+ _#{$property}: #{$ie6-value};
64
+ }
65
+ }
@@ -7,7 +7,7 @@
7
7
  .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current,
8
8
  .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current
9
9
  background: $brand-primary
10
- +box-shadow(darken($brand-primary, 10%) 0px 1px 3px 0px inset)
10
+ box-shadow: darken($brand-primary, 10%) 0px 1px 3px 0px inset
11
11
 
12
12
  .xdsoft_calendar td:hover,
13
13
  .xdsoft_timepicker .xdsoft_time_box >div >div:hover,
@@ -19,7 +19,7 @@ input[type=number]::-webkit-outer-spin-button
19
19
  top: 0px
20
20
  margin-left: -1px !important
21
21
  border-color: $input-border
22
- +box-shadow(none)
22
+ box-shadow: none
23
23
  z-index: 2
24
24
  .fa
25
25
  font-size: 1em
@@ -29,7 +29,7 @@ input[type=number]::-webkit-outer-spin-button
29
29
  cursor: not-allowed
30
30
  &:hover,
31
31
  &:focus
32
- +box-shadow(none)
32
+ box-shadow: none
33
33
  .spinner-up,
34
34
  .spinbox-up
35
35
  border-top-left-radius: 0 !important
@@ -19,8 +19,8 @@
19
19
  /* Override z-index because we don't whant */
20
20
  /* redactor_toolbar fixed somewhere or on top of everythink ..*/
21
21
  z-index: 1 !important
22
- +box-shadow(none)
23
- +border-radius($input-border-radius $input-border-radius 0 0)
22
+ box-shadow: none
23
+ border-radius: $input-border-radius $input-border-radius 0 0
24
24
  border: 1px solid $input-border
25
25
  li a
26
26
  &:hover,
@@ -32,7 +32,7 @@
32
32
  background-color: $input-bg
33
33
  border: 1px solid $input-border
34
34
  border-top-width: 0px
35
- +border-radius(0 0 $input-border-radius $input-border-radius)
35
+ border-radius: 0 0 $input-border-radius $input-border-radius
36
36
  &:focus
37
37
  border-color: $input-border-focus
38
38
  background: #FFF
@@ -71,11 +71,11 @@
71
71
  border-color: $input-border
72
72
  background-color: $input-bg
73
73
  color: $input-color
74
- +box-shadow(none)
74
+ box-shadow: none
75
75
  &:focus
76
76
  background-color: #fff
77
77
  border-color: $input-border-focus
78
- +box-shadow(none)
78
+ box-shadow: none
79
79
 
80
80
  footer
81
81
  button.redactor-modal-action-btn
@@ -1,7 +1,6 @@
1
1
  //
2
2
  // Selectize
3
3
  // --------------------------------------------------
4
- @import "compass/css3/user-interface"
5
4
  @import "para/admin/src/variables"
6
5
  @import "para/admin/src/mixins"
7
6
 
@@ -27,7 +26,7 @@
27
26
  border: none
28
27
  margin-top: -6px
29
28
  color: $gray
30
-
29
+
31
30
  //** Dropdown
32
31
 
33
32
  //** Active system
@@ -37,14 +36,14 @@
37
36
  .selectize-input,
38
37
  .selectize-input.full
39
38
  border-color: $input-border
40
- +border-radius($input-border-radius)
39
+ border-radius: $input-border-radius
41
40
  &.focus
42
41
  border-color: $input-border-focus
43
42
  &.dropdown-active
44
- +border-radius($input-border-radius)
43
+ border-radius: $input-border-radius
45
44
  &:after
46
45
  border: none
47
- +transform(rotate(180deg))
46
+ transform: rotate(180deg)
48
47
  margin-top: -6px
49
48
 
50
49
  .selectize-control.single .selectize-input
@@ -67,7 +66,7 @@
67
66
  background: $input-bg
68
67
 
69
68
  .selectize-input.not-full input
70
- +input-placeholder
69
+ ::placeholder
71
70
  color: $input-color-placeholder
72
71
  font-size: 0.9em
73
72
 
@@ -84,7 +83,7 @@
84
83
 
85
84
  .selectize-control.multi .selectize-input > div
86
85
  background-color: $gray-light
87
- +border-radius(2px)
86
+ border-radius: 2px
88
87
  color: $text-color
89
88
  &:hover,
90
89
  &:focus,
@@ -1,4 +1,4 @@
1
- require_dependency "para/application_controller"
1
+ require_dependency 'para/application_controller'
2
2
 
3
3
  module Para
4
4
  module Admin
@@ -37,7 +37,7 @@ module Para
37
37
  end
38
38
 
39
39
  def update
40
- if resource.update_attributes(resource_params)
40
+ if resource.update(resource_params)
41
41
  flash_message(:success, resource)
42
42
  redirect_to after_form_submit_path
43
43
  else
@@ -109,7 +109,7 @@ module Para
109
109
  def resource
110
110
  @resource ||= begin
111
111
  self.class.ensure_resource_name_defined!
112
- instance_variable_get(:"@#{ self.class.resource_name }")
112
+ instance_variable_get(:"@#{self.class.resource_name}")
113
113
  end
114
114
  end
115
115
 
@@ -161,10 +161,10 @@ module Para
161
161
 
162
162
  def self.ensure_resource_name_defined!
163
163
  unless resource_name.presence
164
- raise "Resource not defined in your controller. " \
165
- "You can define the resource of your controller with the " \
166
- "`resource :resource_name` macro when subclassing " \
167
- "Para::Admin::ResourcesController"
164
+ raise 'Resource not defined in your controller. ' \
165
+ 'You can define the resource of your controller with the ' \
166
+ '`resource :resource_name` macro when subclassing ' \
167
+ 'Para::Admin::ResourcesController'
168
168
  end
169
169
  end
170
170
 
@@ -185,8 +185,8 @@ module Para
185
185
 
186
186
  def current_anchor
187
187
  @current_anchor ||= if (current_anchor = params[:_current_anchor]).presence
188
- current_anchor.gsub(/^\#/, '')
189
- end
188
+ current_anchor.gsub(/^\#/, '')
189
+ end
190
190
  end
191
191
  end
192
192
  end
@@ -23,8 +23,8 @@ module Para
23
23
  end
24
24
  end
25
25
 
26
- def find_relation_name_for(relation, partial, options = {})
27
- return relation if partial_exists?(relation, partial, options)
26
+ def find_relation_name_for(relation, partial, **options)
27
+ return relation if partial_exists?(relation, partial, **options)
28
28
  return nil unless options[:relation_class]
29
29
 
30
30
  relation = options[:relation_class].ancestors.find do |ancestor|
@@ -32,7 +32,7 @@ module Para
32
32
  break if ancestor == ActiveRecord::Base
33
33
 
34
34
  ancestor_name = plural_file_path_for(ancestor.name)
35
- partial_exists?(ancestor_name, partial, options)
35
+ partial_exists?(ancestor_name, partial, **options)
36
36
  end
37
37
 
38
38
  plural_file_path_for(relation) if relation
@@ -9,7 +9,7 @@ module Para
9
9
  association_name = parent_resource.association(attribute_name).options[:inverse_of]
10
10
  return resource unless association_name
11
11
 
12
- resource.association(association_name).replace(parent_resource)
12
+ resource.association(association_name).send(:replace, parent_resource)
13
13
  end
14
14
  end
15
15
  end
@@ -19,7 +19,7 @@ module Para
19
19
  defaults << options.delete(:default) if options[:default]
20
20
  options[:default] = defaults
21
21
 
22
- I18n.translate(defaults.shift, options)
22
+ ::I18n.translate(defaults.shift, **options)
23
23
  end
24
24
  end
25
25
  end
@@ -4,13 +4,15 @@ module Para
4
4
  class ApplicationRecord < ActiveRecord::Base
5
5
  self.abstract_class = true
6
6
 
7
- private
8
-
9
7
  # Adds the `optional: true` option to the belongs_to calls inside the provided block,
10
8
  # but only for Rails 5.1+
11
9
  #
12
10
  def self.with_belongs_to_optional_option_if_needed(&block)
13
- if ActiveRecord::Associations::Builder::BelongsTo.valid_options({}).include?(:optional)
11
+ belongs_to_accepts_optional = ActiveRecord::Associations::Builder::BelongsTo
12
+ .send(:valid_options, {})
13
+ .include?(:optional)
14
+
15
+ if belongs_to_accepts_optional
14
16
  with_options(optional: true, &block)
15
17
  else
16
18
  block.call
@@ -10,7 +10,7 @@ module Para
10
10
  Para::Component.registered_components[name] = component
11
11
  end
12
12
 
13
- def self.configurable_on(key, options = {})
13
+ def self.configurable_on(key, _options = {})
14
14
  store_accessor(:configuration, key)
15
15
  end
16
16
 
@@ -22,8 +22,8 @@ module Para
22
22
  end
23
23
 
24
24
  has_many :child_components, -> { ordered },
25
- class_name: 'Para::Component::Base',
26
- foreign_key: 'parent_component_id'
25
+ class_name: 'Para::Component::Base',
26
+ foreign_key: 'parent_component_id'
27
27
 
28
28
  validates :identifier, :type, presence: true
29
29
 
@@ -33,14 +33,14 @@ module Para
33
33
 
34
34
  def name
35
35
  read_attribute(:name) || ::I18n.t(
36
- "components.component.#{ identifier }",
36
+ "components.component.#{identifier}",
37
37
  default: identifier.humanize
38
38
  )
39
39
  end
40
40
 
41
41
  def main_navigation_name
42
42
  ::I18n.t(
43
- "components.main_navigation.#{ identifier }",
43
+ "components.main_navigation.#{identifier}",
44
44
  default: name
45
45
  )
46
46
  end
@@ -62,7 +62,7 @@ module Para
62
62
  end
63
63
 
64
64
  def default_form_actions
65
- [:submit, :submit_and_edit, :submit_and_add_another, :cancel]
65
+ %i[submit submit_and_edit submit_and_add_another cancel]
66
66
  end
67
67
 
68
68
  def to_param
@@ -1,8 +1,8 @@
1
1
  module Para
2
2
  class ComponentSection < Para::ApplicationRecord
3
3
  has_many :components, -> { ordered }, class_name: 'Para::Component::Base',
4
- autosave: true, foreign_key: :component_section_id,
5
- dependent: :destroy
4
+ autosave: true, foreign_key: :component_section_id,
5
+ dependent: :destroy
6
6
 
7
7
  scope :ordered, -> { order(position: :asc) }
8
8
 
@@ -10,7 +10,7 @@ module Para
10
10
 
11
11
  def name
12
12
  read_attribute(:name) || ::I18n.t(
13
- "components.section.#{ identifier }",
13
+ "components.section.#{identifier}",
14
14
  default: identifier.humanize
15
15
  )
16
16
  end
@@ -11,10 +11,10 @@ module Para
11
11
  def attachment_path
12
12
  return unless attachment.attached?
13
13
 
14
- attachment.service_url
14
+ attachment.url
15
15
  end
16
16
 
17
- alias_method :attachment_url, :attachment_path
17
+ alias attachment_url attachment_path
18
18
 
19
19
  def attachment_ext
20
20
  ::File.extname(attachment.filename.to_s) if attachment.attached?
@@ -14,7 +14,6 @@ module Para
14
14
  end
15
15
 
16
16
  class << self
17
-
18
17
  # This method is a shortcut to create a has_one through relation
19
18
  def section_resource(*args, &block)
20
19
  _ensure_section_resource_relation
@@ -47,10 +46,10 @@ module Para
47
46
  return if @section_resources_already_initialized
48
47
 
49
48
  has_many :section_resources, -> { ordered },
50
- foreign_key: 'section_id',
51
- class_name: '::Para::Page::SectionResource',
52
- inverse_of: :section,
53
- dependent: :destroy
49
+ foreign_key: 'section_id',
50
+ class_name: '::Para::Page::SectionResource',
51
+ inverse_of: :section,
52
+ dependent: :destroy
54
53
 
55
54
  accepts_nested_attributes_for :section_resources, allow_destroy: true
56
55
 
@@ -74,7 +73,7 @@ module Para
74
73
  source_type: target_class_name
75
74
  )
76
75
 
77
- has_one(*args, options, &block)
76
+ has_one(*args, **options, &block)
78
77
  end
79
78
 
80
79
  def _create_section_resource_has_many_relation_for(*args, &block)
@@ -94,7 +93,7 @@ module Para
94
93
  source_type: target_class_name
95
94
  )
96
95
 
97
- has_many(*args, options, &block)
96
+ has_many(*args, **options, &block)
98
97
  end
99
98
  end
100
99
  end
@@ -1 +1 @@
1
- = render file: template_path_lookup('admin/dashboard', 'para/admin/dashboard')
1
+ = render template: template_path_lookup('admin/dashboard', 'para/admin/dashboard')