locomotivecms 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/README.md +24 -30
- data/app/api/locomotive/api/entities/content_type_field_entity.rb +1 -1
- data/app/api/locomotive/api/forms/content_type_field_form.rb +1 -1
- data/app/api/locomotive/api/resources/content_type_resource.rb +2 -0
- data/app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee +1 -1
- data/app/assets/javascripts/locomotive/views/editable_elements/page_view.js.coffee +4 -1
- data/app/assets/javascripts/locomotive/views/inputs/array_view.js.coffee +2 -2
- data/app/assets/stylesheets/locomotive/account.scss +1 -1
- data/app/assets/stylesheets/locomotive/account/_files.scss +2 -1
- data/app/assets/stylesheets/locomotive/account/_navigation.scss +2 -1
- data/app/assets/stylesheets/locomotive/account/_public.scss +22 -5
- data/app/assets/stylesheets/locomotive/account/_type.scss +5 -0
- data/app/assets/stylesheets/locomotive/live_editing_iframe.scss +1 -1
- data/app/controllers/locomotive/concerns/redirect_to_main_host_controller.rb +1 -1
- data/app/helpers/locomotive/custom_fields_helper.rb +5 -1
- data/app/inputs/locomotive/file_input.rb +1 -1
- data/app/models/locomotive/concerns/asset/checksum.rb +2 -3
- data/app/models/locomotive/concerns/page/redirect.rb +1 -1
- data/app/models/locomotive/concerns/site/access_points.rb +13 -0
- data/app/models/locomotive/editable_file.rb +1 -1
- data/app/models/locomotive/editable_model.rb +4 -0
- data/app/uploaders/locomotive/editable_file_uploader.rb +3 -1
- data/app/uploaders/locomotive/picture_uploader.rb +1 -1
- data/app/views/locomotive/editable_elements/_form.html.slim +8 -7
- data/app/views/locomotive/errors/404.html.slim +3 -5
- data/app/views/locomotive/errors/500.html.slim +3 -5
- data/app/views/locomotive/errors/no_site.html.slim +6 -11
- data/app/views/locomotive/layouts/account.html.slim +1 -1
- data/app/views/locomotive/layouts/error.html.slim +1 -2
- data/app/views/locomotive/sessions/new.html.slim +1 -1
- data/config/locales/simple_form.en.yml +1 -1
- data/config/routes.rb +4 -2
- data/lib/generators/locomotive/install/install_generator.rb +1 -1
- data/lib/generators/locomotive/install/templates/locomotive.rb +8 -0
- data/lib/locomotive/configuration.rb +2 -0
- data/lib/locomotive/middlewares/site.rb +1 -1
- data/lib/locomotive/mongoid.rb +0 -1
- data/lib/locomotive/regexps.rb +3 -3
- data/lib/locomotive/simple_form.rb +1 -0
- data/lib/locomotive/steam/middlewares/cache.rb +6 -1
- data/lib/locomotive/steam/middlewares/page_editing.rb +23 -1
- data/lib/locomotive/steam_adaptor.rb +1 -1
- data/lib/locomotive/version.rb +1 -1
- data/spec/dummy/config/initializers/locomotive.rb +4 -0
- data/spec/dummy/config/mongoid.yml +1 -0
- data/spec/models/locomotive/concerns/page/redirect_spec.rb +25 -0
- data/spec/models/locomotive/concerns/site/access_points_spec.rb +29 -0
- data/spec/requests/locomotive/site_spec.rb +11 -1
- data/spec/requests/locomotive/steam/cache_spec.rb +3 -2
- data/spec/support/capybara.rb +9 -6
- data/spec/support/features/session_helpers.rb +1 -0
- data/spec/support/features/site_helpers.rb +3 -0
- data/spec/support/mongoid.rb +1 -1
- metadata +8 -12
- data/app/assets/stylesheets/locomotive/components/_error.scss +0 -37
- data/app/assets/stylesheets/locomotive/error.scss +0 -12
- data/app/assets/stylesheets/locomotive/layouts/_error.scss +0 -33
- data/lib/locomotive/mongoid/presenter.rb +0 -76
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a0a1781f88c6f7d67c51dba24298c5be9880728
|
4
|
+
data.tar.gz: 35b36ae8bbc5c7aa6e857dea7f67707c4c6d7e24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e55ecd3fa077eb76429b00b147fad3ad12d8ab13a3d3f816183d3168042324455b145751b2eb06c2a148a44f3bb1a9024f1ec00750abfddeb064b31ade9c2426
|
7
|
+
data.tar.gz: d783f608c5e0b57a2c2fee907a18de0435534a815f99f4b00ac69d6cceba3a99f9118eda36db206c81f0cb0909d6385f064289f215f8aebc574796b48b7d40c1
|
data/Gemfile
CHANGED
@@ -19,10 +19,10 @@ end
|
|
19
19
|
group :development do
|
20
20
|
# gem 'custom_fields', path: '../custom_fields'
|
21
21
|
# gem 'custom_fields', path: '../gems/custom_fields' # for Developers
|
22
|
-
# gem 'custom_fields', github: 'locomotivecms/custom_fields', ref: '
|
22
|
+
# gem 'custom_fields', github: 'locomotivecms/custom_fields', ref: '131b6a6'
|
23
23
|
|
24
24
|
# gem 'locomotivecms_steam', path: '../gems/steam', require: false
|
25
|
-
# gem 'locomotivecms_steam', github: 'locomotivecms/steam', ref: '
|
25
|
+
# gem 'locomotivecms_steam', github: 'locomotivecms/steam', ref: '0cdb255dafd13', require: false
|
26
26
|
|
27
27
|
# gem 'locomotive_liquid', path: '../gems/liquid' # for Developers
|
28
28
|
# gem 'locomotivecms_solid', path: '../gems/solid' # for Developers
|
@@ -56,7 +56,7 @@ group :test do
|
|
56
56
|
gem 'simplecov'
|
57
57
|
|
58
58
|
gem 'capybara', '~> 2.5.0'
|
59
|
-
gem '
|
59
|
+
gem 'capybara-webkit', '~> 1.8.0'
|
60
60
|
|
61
61
|
gem 'grape-entity-matchers'
|
62
62
|
gem 'shoulda-matchers', '2.7.0'
|
data/README.md
CHANGED
@@ -2,32 +2,20 @@
|
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/locomotivecms/engine.svg?branch=master)](https://travis-ci.org/locomotivecms/engine) [![Code Climate](https://codeclimate.com/github/locomotivecms/engine/badges/gpa.svg)](https://codeclimate.com/github/locomotivecms/engine) [![Dependency Status](https://gemnasium.com/locomotivecms/engine.svg)](https://gemnasium.com/locomotivecms/engine) [![Coverage Status](https://img.shields.io/coveralls/locomotivecms/engine.svg)](https://coveralls.io/r/locomotivecms/engine?branch=master) [![Join the chat at https://gitter.im/locomotivecms/engine](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/locomotivecms/engine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
4
|
|
5
|
-
|
5
|
+
Locomotive is an open source platform to create, publish and edit sites (CMS). It is designed to save time and help you focus on what matters: front-end technology, standard development process and a very low learning curve for your clients.
|
6
6
|
|
7
|
-
Locomotive
|
7
|
+
Locomotive relies on a **very original workflow**:
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
- Sites are coded locally using our open source tool: [Wagon](https://github.com/locomotivecms/wagon). A desktop version (not open source) is also available [here](http://www.wagonapp.com).
|
9
|
+
- Sites are coded locally using our open source tool: [Wagon](https://github.com/locomotivecms/wagon). A desktop version (not open source and not tested in v3) is also available [here](http://www.wagonapp.com).
|
12
10
|
- Sites are deployed to the platform (engine) thanks to our internal API.
|
13
11
|
- A back-office for the end-users is automatically generated based on the custom models and editable regions described by the developers.
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
## Development Status ##
|
18
|
-
|
19
|
-
As you can see from the commit logs, we are intensively working on the new V3 version. We kept all the features from our stable [v2 version](https://github.com/locomotivecms/engine/tree/v2.5.x), we just replace the UI, upgrade the gems and refactor our code.
|
20
|
-
|
21
|
-
**[UPDATES]** Finally, we've been doing much more than we planned at first. We extracted the rendering functionality from the Engine and make it a gem named [Steam](https://github.com/locomotivecms/steam). This gem is also now used by [Wagon](https://github.com/locomotivecms/wagon) (version 2.0 in progress) which makes sure you get the same result between Wagon and Engine when you preview a page.
|
22
|
-
And last but not least, we added a Ruby API client for Locomotive that we called [Coal](https://github.com/locomotivecms/coal). That client consumes the API from Engine which embeds now GrapeAPI. [Nic Boie](https://github.com/boie0025) is in charge of it. Kudos to him!
|
13
|
+
![Locomotive](https://dl.dropboxusercontent.com/u/20823269/locomotive-engine.png)
|
23
14
|
|
24
|
-
|
15
|
+
Visit the Locomotive official website [here](http://
|
16
|
+
locomotive.works) for more information.
|
25
17
|
|
26
|
-
##
|
27
|
-
|
28
|
-
If you can not wait for playing with our new version, you still can use the current one (v2.5.x). Check out our [installation guide](http://doc.locomotivecms.com/get-started).
|
29
|
-
|
30
|
-
## Features ##
|
18
|
+
## Features
|
31
19
|
|
32
20
|
- Multi-sites natively supported
|
33
21
|
- Uses Liquid, a simple and clean templating language
|
@@ -36,9 +24,19 @@ If you can not wait for playing with our new version, you still can use the curr
|
|
36
24
|
- Can fully localize all the content and pages
|
37
25
|
- Embed a Restful API to manage every site
|
38
26
|
- Develop and preview sites locally with your favorite tools **(Wagon)**
|
39
|
-
- Support for SASS,
|
27
|
+
- Support for SASS, HAML and Coffee Script **(Wagon)**
|
40
28
|
|
41
|
-
##
|
29
|
+
## Instructions and help
|
30
|
+
|
31
|
+
- [Documentation](https://locomotive-v3.readme.io/)
|
32
|
+
- Get help with Locomotive or discuss technical issues on [Gitter](https://gitter.im/locomotivecms/engine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) or [here](https://locomotive-v3.readme.io/discuss).
|
33
|
+
- [Follow us on twitter](http://twitter.com/locomotivecms)
|
34
|
+
|
35
|
+
## Contribute
|
36
|
+
|
37
|
+
V3 has launched! Which means a lot of stuff changed and we got bunch of new features shipped in. However, Locomotive will be updated frequently with more awesome features. Have a look at our [Trello](https://trello.com/b/kRiy1dZu/locomotive-v3) board to see what's next or see where you can help out.
|
38
|
+
|
39
|
+
### Technologies
|
42
40
|
|
43
41
|
Here is a list of the main gems used to power the Locomotive platform:
|
44
42
|
|
@@ -49,19 +47,15 @@ Here is a list of the main gems used to power the Locomotive platform:
|
|
49
47
|
- Carrierwave - *Upload*
|
50
48
|
- Pundit - *Permissions*
|
51
49
|
|
52
|
-
|
53
|
-
|
54
|
-
- [Gitter](https://gitter.im/locomotivecms/engine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) for technical discussions.
|
55
|
-
- Get help or discuss Locomotive at the [Locomotive Google group](https://groups.google.com/forum/?fromgroups#!forum/locomotivecms)
|
56
|
-
- [Follow us on twitter](http://twitter.com/locomotivecms)
|
50
|
+
### Translating the back-office
|
57
51
|
|
58
|
-
|
52
|
+
By default, the Locomotive back-office is fully translated in English, Dutch and Greek.
|
59
53
|
|
60
|
-
|
54
|
+
Adding a new language is pretty straightforward since we now manage all our I18n translation keys in [Transifex](https://www.transifex.com), a platform dedicated to this kind of task.
|
61
55
|
|
62
56
|
Here is our Transifex portal page: [https://www.transifex.com/locomotive/locomotive-engine](https://www.transifex.com/locomotive/locomotive-engine). Feel free to sign up and translate!
|
63
57
|
|
64
|
-
|
58
|
+
### How to contribute
|
65
59
|
|
66
60
|
Locomotive is an open source project, we encourage contributions. If you have found a bug and want to contribute a fix, or have a new feature you would like to add, follow the steps below to get your patch into the project:
|
67
61
|
|
@@ -76,7 +70,7 @@ Locomotive is an open source project, we encourage contributions. If you have fo
|
|
76
70
|
|
77
71
|
For new features (especially large ones) it is best to create a topic on the [Google group](https://groups.google.com/forum/?fromgroups#!forum/locomotivecms) first to make sure it fits into the goals of the project.
|
78
72
|
|
79
|
-
|
73
|
+
### Contact
|
80
74
|
|
81
75
|
Feel free to contact me at did at locomotivecms dot com.
|
82
76
|
|
@@ -4,7 +4,7 @@ module Locomotive
|
|
4
4
|
|
5
5
|
class ContentTypeFieldEntity < BaseEntity
|
6
6
|
|
7
|
-
expose :name, :type, :label, :hint, :required, :localized, :unique, :position
|
7
|
+
expose :name, :type, :label, :hint, :required, :localized, :unique, :default, :position
|
8
8
|
|
9
9
|
# text type field
|
10
10
|
expose :text_formatting, if: ->(field, _) { field.type.to_s == 'text' }
|
@@ -10,7 +10,7 @@ module Locomotive
|
|
10
10
|
:required, :localized, :unique, :position,
|
11
11
|
:text_formatting, :select_options_attributes,
|
12
12
|
:target, :inverse_of, :order_by, :ui_enabled,
|
13
|
-
:class_name, :_destroy
|
13
|
+
:default, :class_name, :_destroy
|
14
14
|
|
15
15
|
def initialize(content_type_service, existing_field, attributes)
|
16
16
|
self.content_type_service = content_type_service
|
@@ -46,6 +46,7 @@ module Locomotive
|
|
46
46
|
optional :required
|
47
47
|
optional :localized
|
48
48
|
optional :unique
|
49
|
+
optional :default
|
49
50
|
optional :position
|
50
51
|
optional :text_formatting
|
51
52
|
optional :select_options
|
@@ -90,6 +91,7 @@ module Locomotive
|
|
90
91
|
optional :required
|
91
92
|
optional :localized
|
92
93
|
optional :unique
|
94
|
+
optional :default
|
93
95
|
optional :position
|
94
96
|
optional :text_formatting
|
95
97
|
optional :select_options
|
@@ -44,7 +44,7 @@ class Locomotive.Views.EditableElements.IframeView extends Backbone.View
|
|
44
44
|
build_and_render_page_view: ->
|
45
45
|
@page_view.remove() if @page_view?
|
46
46
|
@page_view = new Locomotive.Views.EditableElements.PageView
|
47
|
-
el: $(@window.document
|
47
|
+
el: $(@window.document)
|
48
48
|
parent_view: @
|
49
49
|
button_labels:
|
50
50
|
edit: $(@el).data('edit-label')
|
@@ -15,8 +15,11 @@ class Locomotive.Views.EditableElements.PageView extends Backbone.View
|
|
15
15
|
PubSub.subscribe 'pages.sorted', @refresh_all
|
16
16
|
]
|
17
17
|
|
18
|
+
# used to prefix links to inner pages with mounted_on
|
19
|
+
@mounted_on = @$('meta[name=locomotive-mounted-on]').attr('content')
|
20
|
+
|
18
21
|
# create the highlighter view
|
19
|
-
@views = [new Locomotive.Views.EditableElements.TextHighLighterView(el:
|
22
|
+
@views = [new Locomotive.Views.EditableElements.TextHighLighterView(el: @$('body'), button_labels: @options.button_labels)]
|
20
23
|
|
21
24
|
render: ->
|
22
25
|
# render the highlighter view
|
@@ -46,8 +46,8 @@ class Locomotive.Views.Inputs.ArrayView extends Backbone.View
|
|
46
46
|
|
47
47
|
make_simple_selectable: ->
|
48
48
|
@$new_input.select2
|
49
|
-
templateResult:
|
50
|
-
templateSelection:
|
49
|
+
templateResult: @format_select_result
|
50
|
+
templateSelection: @format_select_result
|
51
51
|
|
52
52
|
format_select_result: (state) ->
|
53
53
|
return state.text unless state.id?
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// Account
|
3
3
|
// =============================================================================
|
4
4
|
|
5
|
-
// Stylesheet for all
|
5
|
+
// Stylesheet for all account related pages like register, my account, ...
|
6
6
|
|
7
7
|
// Core variables and mixins
|
8
8
|
|
@@ -35,7 +35,7 @@
|
|
35
35
|
.public-wrapper {
|
36
36
|
display: inline-block;
|
37
37
|
width: 460px;
|
38
|
-
|
38
|
+
padding: 56px 0;
|
39
39
|
vertical-align: middle;
|
40
40
|
}
|
41
41
|
|
@@ -59,6 +59,9 @@
|
|
59
59
|
&.without-padding {
|
60
60
|
padding: 0;
|
61
61
|
}
|
62
|
+
> p {
|
63
|
+
margin: 0;
|
64
|
+
}
|
62
65
|
}
|
63
66
|
|
64
67
|
// Styles intro title and text above the public form.
|
@@ -69,10 +72,17 @@
|
|
69
72
|
text-align: center;
|
70
73
|
h3 {
|
71
74
|
margin-bottom: 15px;
|
75
|
+
i {
|
76
|
+
display: block;
|
77
|
+
margin-bottom: 15px;
|
78
|
+
font-size: 30px;
|
79
|
+
color: $gray-lighter;
|
80
|
+
text-align: center;
|
81
|
+
}
|
72
82
|
}
|
73
83
|
p {
|
74
84
|
margin-bottom: 30px;
|
75
|
-
color: $gray
|
85
|
+
color: $gray;
|
76
86
|
}
|
77
87
|
&.with-padding {
|
78
88
|
padding: 50px 50px 0;
|
@@ -105,6 +115,7 @@
|
|
105
115
|
display: block;
|
106
116
|
max-height: 500px;
|
107
117
|
overflow: auto;
|
118
|
+
border-top: 1px solid $border-color-base;
|
108
119
|
}
|
109
120
|
|
110
121
|
// Public entries, used in the sites overview.
|
@@ -115,13 +126,14 @@
|
|
115
126
|
padding: 15px 25px;
|
116
127
|
text-align: left;
|
117
128
|
background: transparent;
|
118
|
-
border-
|
129
|
+
border-bottom: 1px solid $border-color-base;
|
119
130
|
transition: background $base-transition-speed linear;
|
120
131
|
img {
|
121
132
|
display: inline-block;
|
122
133
|
width: 60px;
|
123
134
|
margin-right: 25px;
|
124
135
|
vertical-align: middle;
|
136
|
+
background: $gray-lightest;
|
125
137
|
border-radius: 50%;
|
126
138
|
}
|
127
139
|
.fa-arrow-right {
|
@@ -133,9 +145,13 @@
|
|
133
145
|
line-height: 1;
|
134
146
|
color: $gray-lighter;
|
135
147
|
}
|
148
|
+
&:last-child {
|
149
|
+
border-bottom: 0;
|
150
|
+
}
|
136
151
|
&.is-add {
|
137
152
|
padding: 25px;
|
138
153
|
text-align: center;
|
154
|
+
border-top: 1px solid $border-color-base;
|
139
155
|
border-radius: 0 0 $border-radius-base $border-radius-base;
|
140
156
|
.fa {
|
141
157
|
margin-right: 10px;
|
@@ -159,10 +175,12 @@
|
|
159
175
|
display: inline-block;
|
160
176
|
vertical-align: middle;
|
161
177
|
h5 {
|
178
|
+
font-family: $font-family-sans-serif;
|
162
179
|
color: $gray-darker;
|
163
180
|
}
|
164
181
|
p {
|
165
182
|
margin: 5px 0 0;
|
183
|
+
font-weight: 300;
|
166
184
|
color: $gray-light;
|
167
185
|
}
|
168
186
|
}
|
@@ -174,8 +192,7 @@
|
|
174
192
|
.public-wrapper {
|
175
193
|
left: 0;
|
176
194
|
width: 99%;
|
177
|
-
padding:
|
178
|
-
margin-left: 0;
|
195
|
+
padding: 56px 10px;
|
179
196
|
}
|
180
197
|
.public-box {
|
181
198
|
padding: 50px 20px;
|
@@ -10,7 +10,11 @@ module Locomotive
|
|
10
10
|
#
|
11
11
|
def render_custom_fields(content_type, form)
|
12
12
|
html = content_type.ordered_entries_custom_fields.map do |field|
|
13
|
-
|
13
|
+
if field.ui_enabled? || field.name == content_type.label_field_name
|
14
|
+
render_custom_field(field, form)
|
15
|
+
else
|
16
|
+
''
|
17
|
+
end
|
14
18
|
end
|
15
19
|
|
16
20
|
html.join("\n").html_safe
|
@@ -57,7 +57,7 @@ module Locomotive
|
|
57
57
|
def filename_or_image
|
58
58
|
if persisted_file?
|
59
59
|
css = "current-file #{persisted_file.image? ? 'image' : ''}"
|
60
|
-
template.content_tag :span, image_html + filename_html, class: css
|
60
|
+
template.content_tag :span, (image_html + filename_html).html_safe, class: css
|
61
61
|
else
|
62
62
|
''
|
63
63
|
end
|
@@ -18,9 +18,7 @@ module Locomotive
|
|
18
18
|
|
19
19
|
def calculate_checksum
|
20
20
|
begin
|
21
|
-
|
22
|
-
self.checksum = Digest::MD5.hexdigest(self.source.read)
|
23
|
-
end
|
21
|
+
self.checksum = Digest::MD5.hexdigest(self.source.read)
|
24
22
|
rescue Errno::ENOENT => e
|
25
23
|
# no file
|
26
24
|
end
|
@@ -31,3 +29,4 @@ module Locomotive
|
|
31
29
|
end
|
32
30
|
end
|
33
31
|
end
|
32
|
+
|
@@ -15,7 +15,7 @@ module Locomotive
|
|
15
15
|
## validations ##
|
16
16
|
validates_presence_of :redirect_type, if: :redirect?
|
17
17
|
validates_presence_of :redirect_url, if: :redirect?
|
18
|
-
validates_format_of :redirect_url, with: Locomotive::Regexps::
|
18
|
+
validates_format_of :redirect_url, with: Locomotive::Regexps::URL_AND_MAILTO, allow_blank: true
|
19
19
|
|
20
20
|
end
|
21
21
|
|
@@ -22,6 +22,7 @@ module Locomotive
|
|
22
22
|
validates_format_of :handle, with: Locomotive::Regexps::HANDLE, allow_blank: true,
|
23
23
|
multiline: true
|
24
24
|
validate :domains_must_be_valid_and_unique
|
25
|
+
validate :domains_must_not_be_reserved
|
25
26
|
|
26
27
|
## callbacks ##
|
27
28
|
before_validation :prepare_domain_sync
|
@@ -74,6 +75,18 @@ module Locomotive
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
78
|
+
def domains_must_not_be_reserved
|
79
|
+
return if self.domains.empty? || Locomotive.config.reserved_domains.blank?
|
80
|
+
|
81
|
+
self.domains.each do |domain|
|
82
|
+
any = Locomotive.config.reserved_domains.any? do |matcher|
|
83
|
+
matcher.is_a?(Regexp) ? domain =~ matcher : matcher == domain
|
84
|
+
end
|
85
|
+
|
86
|
+
self.errors.add(:domains, :domain_taken, value: domain) if any
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
77
90
|
def emit_domain_sync_event
|
78
91
|
return if @added_domains.blank? && @removed_domains.blank?
|
79
92
|
|
@@ -37,7 +37,7 @@ module Locomotive
|
|
37
37
|
|
38
38
|
def init_localized_source
|
39
39
|
# FIXME: the source of the element is not correctly set for the first time (certainly because the source is localized)
|
40
|
-
attributes[
|
40
|
+
attributes['source'] = {} unless self.persisted?
|
41
41
|
end
|
42
42
|
|
43
43
|
end
|