locomotivecms 3.0.0.rc2 → 3.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +2 -1
  4. data/app/api/locomotive/api/entities/site_entity.rb +8 -0
  5. data/app/api/locomotive/api/exception_rescuers.rb +1 -1
  6. data/app/api/locomotive/api/forms/content_entry_form.rb +4 -3
  7. data/app/api/locomotive/api/helpers/params_helper.rb +21 -3
  8. data/app/api/locomotive/api/resources/current_site_resource.rb +1 -1
  9. data/app/api/locomotive/api/resources/site_resource.rb +2 -2
  10. data/app/assets/images/locomotive/deadend.png +0 -0
  11. data/app/assets/javascripts/locomotive/not_logged_in.js.coffee +1 -1
  12. data/app/assets/javascripts/locomotive/utils/core_ext.js +1 -1
  13. data/app/assets/javascripts/locomotive/utils/wysihtml5.js.coffee +43 -17
  14. data/app/assets/javascripts/locomotive/views/application_view.js.coffee +5 -1
  15. data/app/assets/javascripts/locomotive/views/editable_elements/edit_view.js.coffee +47 -0
  16. data/app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee +59 -0
  17. data/app/assets/javascripts/locomotive/views/editable_elements/index_view.js.coffee +19 -92
  18. data/app/assets/javascripts/locomotive/views/editable_elements/page_view.js.coffee +81 -0
  19. data/app/assets/javascripts/locomotive/views/editable_elements/text_highlighter_view.js.coffee +76 -0
  20. data/app/assets/javascripts/locomotive/views/inputs/rte/edit_table_view.js.coffee +35 -0
  21. data/app/assets/javascripts/locomotive/views/inputs/rte/file_view.js.coffee +14 -10
  22. data/app/assets/javascripts/locomotive/views/inputs/rte/link_view.js.coffee +25 -15
  23. data/app/assets/javascripts/locomotive/views/inputs/rte/table_view.js.coffee +82 -0
  24. data/app/assets/javascripts/locomotive/views/inputs/rte_view.js.coffee.erb +64 -23
  25. data/app/assets/javascripts/locomotive/views/inputs/text_view.js.coffee +11 -6
  26. data/app/assets/javascripts/locomotive.js +2 -2
  27. data/app/assets/stylesheets/locomotive/application.scss +1 -3
  28. data/app/assets/stylesheets/locomotive/base/_form.scss +2 -1
  29. data/app/assets/stylesheets/locomotive/base/_typography.scss +3 -2
  30. data/app/assets/stylesheets/locomotive/base/form/_base.scss +5 -0
  31. data/app/assets/stylesheets/locomotive/base/form/_rte.scss +42 -0
  32. data/app/assets/stylesheets/locomotive/error.scss +1 -1
  33. data/app/assets/stylesheets/locomotive/globals/_mixins.scss +41 -48
  34. data/app/assets/stylesheets/locomotive/globals/_variables.scss +202 -121
  35. data/app/assets/stylesheets/locomotive/layouts/_not_logged_in.scss +8 -9
  36. data/app/assets/stylesheets/locomotive/live_editing_error.scss +19 -0
  37. data/app/assets/stylesheets/locomotive/live_editing_iframe.scss +84 -0
  38. data/app/assets/stylesheets/locomotive/unauthorized/_forms.scss +63 -0
  39. data/app/assets/stylesheets/locomotive/unauthorized/_keyframes.scss +31 -0
  40. data/app/assets/stylesheets/locomotive/unauthorized/_notify.scss +85 -0
  41. data/app/assets/stylesheets/locomotive/unauthorized/_public.scss +129 -0
  42. data/app/assets/stylesheets/locomotive/unauthorized/_type.scss +14 -0
  43. data/app/assets/stylesheets/locomotive/unauthorized/_variables.scss +54 -0
  44. data/app/assets/stylesheets/locomotive/unauthorized.scss +34 -0
  45. data/app/helpers/locomotive/dashboard_helper.rb +1 -1
  46. data/app/inputs/locomotive/rte_input.rb +12 -0
  47. data/app/models/locomotive/concerns/page/editable_elements.rb +0 -2
  48. data/app/models/locomotive/editable_element.rb +1 -1
  49. data/app/services/locomotive/content_asset_service.rb +1 -1
  50. data/app/services/locomotive/page_parsing_service.rb +4 -2
  51. data/app/views/locomotive/editable_elements/index.html.slim +1 -1
  52. data/app/views/locomotive/layouts/not_logged_in.html.slim +13 -9
  53. data/app/views/locomotive/passwords/edit.html.slim +13 -13
  54. data/app/views/locomotive/passwords/new.html.slim +14 -11
  55. data/app/views/locomotive/registrations/new.html.slim +14 -13
  56. data/app/views/locomotive/sessions/new.html.slim +14 -13
  57. data/app/views/locomotive/shared/rte/_markdown_toolbar.html.slim +0 -30
  58. data/app/views/locomotive/shared/rte/_table_popover.html.slim +17 -0
  59. data/app/views/locomotive/shared/rte/_toolbar.html.slim +48 -11
  60. data/config/initializers/simple_form.rb +2 -0
  61. data/config/locales/carrierwave.lt.yml +4 -0
  62. data/config/locales/carrierwave.nl.yml +4 -0
  63. data/config/locales/carrierwave.ru.yml +4 -0
  64. data/config/locales/default.nl.yml +13 -0
  65. data/config/locales/devise.nl.yml +61 -0
  66. data/config/locales/en.yml +28 -10
  67. data/config/locales/flash.nl.yml +79 -0
  68. data/config/locales/inputs.lt.yml +18 -0
  69. data/config/locales/inputs.nl.yml +18 -0
  70. data/config/locales/mongoid.nl.yml +47 -0
  71. data/config/locales/nl.yml +316 -0
  72. data/config/locales/simple_form.en.yml +6 -0
  73. data/config/locales/simple_form.nl.yml +148 -0
  74. data/lib/locomotive/carrierwave/asset.rb +5 -1
  75. data/lib/locomotive/dependencies.rb +0 -1
  76. data/lib/locomotive/engine.rb +7 -1
  77. data/lib/locomotive/middlewares/site.rb +14 -2
  78. data/lib/locomotive/mongoid/patches.rb +29 -0
  79. data/lib/locomotive/steam/middlewares/catch_error.rb +78 -0
  80. data/lib/locomotive/steam/middlewares/wysihtml_css.rb +32 -0
  81. data/lib/locomotive/steam_adaptor.rb +4 -7
  82. data/lib/locomotive/version.rb +1 -1
  83. data/spec/requests/locomotive/steam/cache_spec.rb +3 -3
  84. data/spec/requests/locomotive/steam/wysihtml_css_spec.rb +42 -0
  85. data/spec/requests/site_spec.rb +13 -2
  86. data/spec/support/features/session_helpers.rb +3 -3
  87. data/vendor/assets/components/locomotive/backbone/backbone.js +1894 -0
  88. data/vendor/assets/components/locomotive/underscore/underscore.js +1548 -0
  89. data/vendor/assets/components/locomotive_sources/backbone/LICENSE +22 -0
  90. data/vendor/assets/components/locomotive_sources/backbone/backbone-min.js +2 -0
  91. data/vendor/assets/components/locomotive_sources/backbone/backbone-min.map +1 -0
  92. data/vendor/assets/components/locomotive_sources/backbone/backbone.js +1894 -0
  93. data/vendor/assets/components/locomotive_sources/backbone/bower.json +8 -0
  94. data/vendor/assets/components/locomotive_sources/underscore/LICENSE +23 -0
  95. data/vendor/assets/components/locomotive_sources/underscore/README.md +22 -0
  96. data/vendor/assets/components/locomotive_sources/underscore/bower.json +7 -0
  97. data/vendor/assets/components/locomotive_sources/underscore/underscore-min.js +6 -0
  98. data/vendor/assets/components/locomotive_sources/underscore/underscore-min.map +1 -0
  99. data/vendor/assets/components/locomotive_sources/underscore/underscore.js +1548 -0
  100. data/vendor/assets/javascripts/locomotive/wysihtml5/parser_rules/advanced.js +22 -48
  101. data/vendor/assets/javascripts/locomotive/wysihtml5/parser_rules/advanced_unwrap.js +13 -12
  102. data/vendor/assets/javascripts/locomotive/wysihtml5x-toolbar.js +7324 -3862
  103. data/vendor/assets/stylesheets/locomotive/wysihtml5_editor.css +27 -1
  104. metadata +53 -28
  105. data/app/assets/stylesheets/locomotive/globals/_all.scss +0 -3
  106. data/app/assets/stylesheets/locomotive/globals/_bootstrap.scss +0 -841
  107. data/app/assets/stylesheets/locomotive/globals/_colors.scss +0 -1
  108. data/app/assets/stylesheets/locomotive/globals/_nprogress.scss +0 -3
  109. data/app/assets/stylesheets/locomotive/not_logged_in.scss +0 -15
@@ -0,0 +1,316 @@
1
+ nl:
2
+ locomotive:
3
+ locales:
4
+ en: Engels
5
+ de: Duits
6
+ fr: Frans
7
+ pl: Pools
8
+ pt: Portugees
9
+ pt-BR: "Braziliaans"
10
+ it: Italiaans
11
+ nl: Nederlands
12
+ nb: Noors
13
+ es: Spaans
14
+ ru: Russisch
15
+ et: Ests
16
+ ja: Japans
17
+ zh-CN: Chinees
18
+ cs: Tsjechisch
19
+ bg: Bulgaars
20
+ sk: Slowaaks
21
+ sr: Servisch
22
+ messages:
23
+ confirm: Weet u het zeker?
24
+ shared:
25
+ header:
26
+ welcome: Welkom, %{name}
27
+ sites: Mijn sites
28
+ account: Account instellingen
29
+ see: Bekijk website
30
+ help: Help
31
+ logout: Log uit
32
+ sidebar:
33
+ dashboard: Dashboard
34
+ assets: Assets
35
+ settings: Algemene instellingen
36
+ developers: 'Ontwikkelaars '
37
+ content_types:
38
+ title: Models
39
+ translations: Vertalingen
40
+ list:
41
+ untranslated: niet vertaald
42
+ created_at: "%{distance} geleden aangemaakt"
43
+ created_by: "%{distance} geleden aangemaakt door %{who}"
44
+ updated_at: "Laatst gewijzigd %{distance} geleden"
45
+ updated_by: "Laatst gewijzigd %{distance} geleden door {%who}"
46
+ rte:
47
+ toolbar:
48
+ table:
49
+ merge: Samenvoegen
50
+ insert_row_before: Voeg rij in ervoor
51
+ insert_row_after: Voeg rij in erna
52
+ insert_col_before: Voeg kolom in ervoor
53
+ insert_col_after: Voeg kolom in erna
54
+ delete_row: Verwijder rij
55
+ delete_col: Verwijder kolom
56
+ errors:
57
+ '500':
58
+ title: Applicatie fout
59
+ message: "Oeps, er is iets fout gegaan"
60
+ '404':
61
+ title: Pagina niet gevonden
62
+ message: "De pagina die u probeert te bereiken, bestaat niet."
63
+ no_site:
64
+ title: Site niet gevonden
65
+ next: "Volgende →"
66
+ message:
67
+ create_account: "Maak eerst een account aan voordat u een site maakt."
68
+ add_domain: "Voeg de <strong>%{host}</strong> domein toe aan de lijst van domeinen van één van uw sites."
69
+ sign_in: "Gelieve eerst aan te melden. Daarna kan u de <strong>%{host}</strong> domein toevoegen aan de lijst van domeinen voor één van uw sites."
70
+ notifications:
71
+ new_content_entry:
72
+ subject: "[%{domain}][%{type}] nieuw item"
73
+ title: "Hallo %{name}, we wilden u laten weten dat er een nieuwe instantie werd aangemaakt op %{date} voor de site <b>%{domain}</b>"
74
+ type: "Model: %{type}"
75
+ activity:
76
+ site:
77
+ created: 'De site is aangemaakt'
78
+ page:
79
+ created: 'Pagina %{page} is aangemaakt'
80
+ updated: 'Pagina %{page} is aangepast '
81
+ destroyed: 'Pagina %{page} is verwijderd'
82
+ sorted: 'Gesorteerde pagina''s'
83
+ editable_element:
84
+ updated_bulk: 'inhoud aangepast van %{pages}'
85
+ content_entry:
86
+ created: '%{entry} toegevoegd in %{content_type}'
87
+ created_public: '%{entry} toegevoegd in %{content_type} van een publiek formulier'
88
+ updated: '%{entry} gewijzigd van %{content_type}'
89
+ destroyed: '%{entry} verwijderd uit %{content_type}'
90
+ sorted: '%{content_type} gesorteerd'
91
+ content_asset:
92
+ created_bulk: '%{count} bestand(en) geupload'
93
+ destroyed: '%{name} bestand verwijderd.'
94
+ membership:
95
+ created: '%{name} toegevoegd aan de site'
96
+ pagination:
97
+ first: "&laquo;"
98
+ last: "&raquo;"
99
+ previous: "&lsaquo;"
100
+ next: "&rsaquo;"
101
+ truncate: "&hellip;"
102
+ custom_fields:
103
+ select_options:
104
+ edit:
105
+ title: "%{type} &mdash; bewerkingsopties"
106
+ back: "Terug naar het item"
107
+ option:
108
+ edit: Bewerk
109
+ apply: Toepassen
110
+ cancel: Annuleer
111
+ types:
112
+ belongs_to:
113
+ edit: Bewerk
114
+ placeholder: "Kies een %{name}"
115
+ searching: Zoeken...
116
+ no_matches: Geen overeenkomsten gevonden
117
+ too_short: Vul minstens 1 karakter in
118
+ many_to_many:
119
+ placeholder: "Kies uit een van de %{name}"
120
+ searching: Zoeken...
121
+ no_matches: Geen overeenkomsten gevonden
122
+ too_short: Vul minstens 1 karakter in
123
+ select:
124
+ edit: Opties aanpassen
125
+ file:
126
+ delete_file: Verwijder bestand
127
+ has_many:
128
+ new_label: Voeg een nieuwe toe
129
+ form:
130
+ required: Verplicht
131
+ default_label: Veld naam
132
+ select_options:
133
+ ask_name: "Typ het label van de optie"
134
+ dashboard:
135
+ show:
136
+ title: 'Dashboard'
137
+ url:
138
+ title: "URL van uw site"
139
+ visit: 'Bezoek'
140
+ change_domain: 'Gebruik uw eigen domeinnaam'
141
+ activity:
142
+ title: 'Activieit '
143
+ unknown_account: Iemand
144
+ load_more: Meer laden
145
+ loading_activity_feed: Laden...
146
+ sessions:
147
+ new:
148
+ email: "Email"
149
+ link: "Wachtwoord vergeten"
150
+ password: "Wachtwoord"
151
+ sign_up: Heeft u geen account?
152
+ submit: Aanmelden
153
+ title: Aanmelden
154
+
155
+ registrations:
156
+ new:
157
+ confirm_password: "Herhaal uw nieuwe wachtwoord"
158
+ description: "Het ziet er naar uit dat u de eerste hier bent, creëer een account hieronder om Locomotive te gebruiken."
159
+ sign_in: Heeft u al een account?
160
+ submit: Registeren
161
+ title: "Registreer"
162
+
163
+ passwords:
164
+ new:
165
+ description: "Vul uw email in hieronder en ontvang een email met instructies over hoe u uw wachtwoord kunt wijzigen."
166
+ link: "Ga terug naar de login pagina"
167
+ email: "Uw email"
168
+ submit: "Verzenden"
169
+ title: "Wachtwoord vergeten"
170
+ edit:
171
+ description: "Vul uw nieuw wachtwoord in hieronder."
172
+ link: "Ga terug naar de login pagina"
173
+ password: "Uw nieuwe wachtwoord"
174
+ password_confirmation: "Herhaal uw nieuwe wachtwoord"
175
+ submit: "Wachtwoord veranderen"
176
+ title: Wachtwoord veranderen
177
+
178
+ pages:
179
+ index:
180
+ title: 'Pagina''s'
181
+ new: 'Nieuwe pagina'
182
+ list_content_entries: "Lijst %{name}"
183
+ new_content_entry: "Nieuw %{name}"
184
+ new:
185
+ title: Nieuwe pagina
186
+ help: "Vul onderstaand formulier in om een pagina aan te maken. Let op, deze pagina wordt standaard niet gepubliceerd."
187
+ edit:
188
+ title: "%{title} &mdash; <small>%{fullpath}</small>"
189
+ form:
190
+ no_layout: Gebruik de layout van de hoofd pagina
191
+ redirect_type:
192
+ permanent: "Permanent (301)"
193
+ temporary: "Tijdelijk (302)"
194
+ editable_elements:
195
+ index:
196
+ redirection_error: "Het bewerken van een niet Locomotive pagina is verboden"
197
+ iframe:
198
+ buttons:
199
+ edit: bewerk
200
+ index_without_preview:
201
+ title: "%{title} &mdash; <small>%{fullpath}</small>"
202
+ edit:
203
+ settings_link: 'Instellingen'
204
+ no_editable_elements: 'Geen bewerkbare elementen gevonden'
205
+ blocks:
206
+ all: Alles
207
+ unknown: Onbekend
208
+ form:
209
+ model:
210
+ buttons:
211
+ list: Beheer
212
+ edit: Bewerk
213
+ sites:
214
+ index:
215
+ title: Mijn sites
216
+ new: Voeg een nieuwe site toe
217
+ new:
218
+ title: Nieuwe site
219
+ help: "Vul onderstaand formulier in om een nieuwe site aan te maken."
220
+ site:
221
+ no_domain: Geen domein
222
+ current_site:
223
+ edit:
224
+ title: De huidige site bewerken
225
+ form:
226
+ main:
227
+ new_membership: "Voeg een account toe"
228
+ advanced:
229
+ destroy: "Verwijder deze site"
230
+ confirm_destroy: "Bevestig uw actie door de naam van de site in te vullen"
231
+ memberships:
232
+ roles:
233
+ admin: Beheerder
234
+ designer: Ontwerper
235
+ author: Auteur
236
+ new:
237
+ title: Nieuw lidmaatschap
238
+ help: "Gelieve een account email ingeven om toe te voegen. Als het niet bestaat, dan zal u doorverwezen worden naar het account creatie formulier."
239
+ back: "Terug naar de site instellingen"
240
+ edit:
241
+ title: "Lidmaatschap wijzigen voor <b>%{name}</b>"
242
+ back: "Terug naar de site instellingen"
243
+ accounts:
244
+ new:
245
+ title: Nieuw account
246
+ help: "Vul onderstaand formulier in om een account aan te maken."
247
+ my_account:
248
+ edit:
249
+ title: Account bewerken
250
+ translations:
251
+ untranslated: "Onvertaalde landinstellingen: %{list}"
252
+ index:
253
+ title: Vertalingen
254
+ no_items: "We hebben geen vertalingen gevonden."
255
+ search_placeholder: "Vul een key of vertaling in"
256
+ help: "Vertaal alle items met een oranje (deels vertaald) of rode (niet vertaald) stip."
257
+ filter_by:
258
+ all: Alle
259
+ done: Vertaald
260
+ partially: Deels vertaald
261
+ none: Niet vertaald
262
+ edit:
263
+ title: "Vertalingen &mdash; wijzigen %{key}"
264
+ form:
265
+ not_translated: "Niet vertaald"
266
+ content_assets:
267
+ index:
268
+ title: "Media"
269
+ upload: Upload bestanden
270
+ edit_in_drawer:
271
+ buttons:
272
+ resize: "Formaat wijzigen"
273
+ crop: "Bijsnijden"
274
+ apply: "Toepassen"
275
+ dropzone:
276
+ instructions: "<strong>Sleep bestanden van uw computer hier naartoe.</strong><br/>U kunt ook"
277
+ browse: "Zoeken naar een bestand"
278
+ list:
279
+ no_items: "Er is geen media op dit moment."
280
+ buttons:
281
+ select: "Selecteer"
282
+ edit: "Bewerk"
283
+ nav:
284
+ types:
285
+ all: Alles
286
+ pdf: PDF's
287
+ image: Afbeeldingen
288
+ media: andere bestanden
289
+ others: overige
290
+ search_form:
291
+ placeholder: Zoeken bij bestandsnaam
292
+ public_submission_accounts:
293
+ edit:
294
+ title: "%{name} &mdash; Notificatie instellingen"
295
+ content_entries:
296
+ index:
297
+ title: '%{type}'
298
+ download: Download items
299
+ new: Nieuwe item
300
+ edit_notification_settings: Wijzig notificatie instellingen
301
+ search_placeholder: "Voeg uw zoek kernwoorden hier in"
302
+ group_by:
303
+ all: Alles
304
+ list:
305
+ no_items: "Er zijn geen items beschikbaar. Klik <a href=\"%{url}\">hier</a> om een eerste aan te maken."
306
+ new:
307
+ title: '%{type} &mdash; nieuw item'
308
+ edit:
309
+ title: '%{type} &mdash; item aanpassen'
310
+ shared:
311
+ back: '&larr; Terug naar de lijst'
312
+ developers_documentation:
313
+ show:
314
+ title: Ontwikkelaars
315
+ wagon: Wagon
316
+ api: API
@@ -64,6 +64,12 @@ en:
64
64
  image_resize_form:
65
65
  width: Width
66
66
  height: Height
67
+ rte_input_table_form:
68
+ cols: "Columns"
69
+ rows: "Rows"
70
+ head: "Head row?"
71
+ class_name: "CSS class"
72
+
67
73
 
68
74
  hints:
69
75
  locomotive:
@@ -0,0 +1,148 @@
1
+ nl:
2
+ simple_form:
3
+ blank_required_fields: "U hebt niet alle vereiste velden ingevuld."
4
+ titles:
5
+ locomotive:
6
+ account:
7
+ information: Main
8
+ api: API
9
+ credentials: Aanmeldingsgegevens
10
+ site:
11
+ information: Main
12
+ access_points: Toegangspunten
13
+ seo: SEO
14
+ advanced: Geavanceerd
15
+ url_redirections: URL doorverwijzingen
16
+ page:
17
+ content: Inhoud
18
+ settings: Instellingen
19
+ seo: SEO
20
+ content_entry:
21
+ content: Inhoud
22
+ advanced: Geavanceerd
23
+ seo: SEO
24
+ labels:
25
+ locomotive:
26
+ content_entry:
27
+ _slug: Permalink
28
+ _visible: Zichtbaar
29
+ content_type:
30
+ public_submission_accounts: "Meegedeelde accounts"
31
+ account:
32
+ api_key: API key
33
+ no_api_key: Geen
34
+ edit:
35
+ locale: Gebruiksinterface taal
36
+ password: Nieuw wachtwoord
37
+ password_confirmation: Nieuw wachtwoord bevestigen
38
+ page:
39
+ seo_title: Titel
40
+ target_klass_name: Model
41
+ editable_element:
42
+ region: Secties
43
+ site:
44
+ locales: Talen
45
+ timezone_name: Tijdzone
46
+ cache_enabled: Cache
47
+ new:
48
+ locales: Eerste taal
49
+ membership:
50
+ edit:
51
+ role: Nieuwe rol
52
+ rte_input_link_form:
53
+ url: Link URL
54
+ target: Doelwit
55
+ title: Titel
56
+ rte_input_image_form:
57
+ src: Bron
58
+ title: Titel
59
+ alignment: Opstelling
60
+ image_resize_form:
61
+ width: Breedte
62
+ height: Hoogte
63
+ rte_input_table_form:
64
+ cols: "Kolommen"
65
+ rows: "Rijen"
66
+ head: "Hoofd rij?"
67
+ class_name: "CSS class"
68
+ hints:
69
+ locomotive:
70
+ account:
71
+ api_key: "Gebruik Wagon om uw site te implementeren (controleer config/deploy.yml van uw Wagon site)."
72
+ password: Minimum 6 karakters
73
+ page:
74
+ handle: "Unieke identificatie nodig om deze pagina te ontvangen binnenin een externe controller instance."
75
+ published: "Enkel aangemelde accounts kunnen ongepubliceerde pagina's bekijken."
76
+ templatized: "Gebruik de pagina als een voorbeeld voor een model dat u hebt aangemaakt."
77
+ cache_enabled: "Wanneer ingeschakeld, dan wordt uw pagina gecached zo lang de inhoud niet wijzigt."
78
+ listed: "Controleer of u een pagina wil tonen van de gegenereerde menus."
79
+ target_klass_name: "Het type van de inhoud dat deze pagina een template zal voor zijn."
80
+ seo_title: "Definieer een pagina titel die zal gebruikt worden als de waarde voor de SEO titel tag. Laat het leeg als u de standaard waarde van de site instellingen wilt gebruiken."
81
+ meta_keywords: "Overschrijf de site zijn keywords die gebruikt worden voor SEO doeleinden. Ze zijn gescheiden door een komma."
82
+ meta_description: "Overschrijf de site meta omschrijving die gebruikt wordt voor SEO doeleinden."
83
+ is_layout: "Indien waar, dan kan deze pagina gebruikt worden als layout voor andere pagina's."
84
+ allow_layout: "Laat auteurs de layout van een pagina wijzigen of niet."
85
+ site:
86
+ locales: "Sleep een flag naar de eerste positie om de standaard taal te kiezen."
87
+ seo_title: "Definieer hier een globale waarde die zou gebruikt worden voor de waarde van de title tag in de head sectie voor SEO doeleinden."
88
+ meta_keywords: "Keywords gebruikt in de head tag van de pagina. Ze zijn gescheiden door een komma en worden gebruikt voor SEO doeleinden."
89
+ meta_description: "Meta omschrijving gebruikt in de head tag van de pagina. Gebruikt voor SEO doeleinden."
90
+ robots_txt: "Inhoud van het <span class='code'>/robots.txt</span> bestand. Controleer de volgende <a href='http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.1'>link</a> voor meer info."
91
+ domains: "Voeg domeinnamen toe hieronder. Daarna registreer een CNAME DNS record die wijst naar <b>%{domain}</b>."
92
+ memberships: "U kan andere account uitnodigen om de site te beheren."
93
+ cache_enabled: "Wanneer ingeschakeld, uw pagina's zullen worden gecached zolang de inhoud niet veranderd. Het uitschakelen van de cache per pagina is toegestaan."
94
+ redirect_to_first_domain: "Wanneer ingeschakeld, requests gemaakt naar gelijk welke domeinnaam zal worden doorgestuurd naar het eerste domein."
95
+ url_redirections: "Redirect (301) verouderde urls naar pagina's die u gecreëerd hebt in de back-office. De oorsprong en de bestemming URLs zijn gescheiden door een <u>spatie</u>."
96
+ new:
97
+ locales: "U kan andere talen toevoegen eenmaal de site gecreëerd is."
98
+ translation:
99
+ key: "Gebruik geen streepje maar een underscore. Voorbeeld: welcome_message."
100
+ content_entry:
101
+ _slug: "Eigenschap gebruikt om de url van een pagina die werkt als een template voor dit content type (voorbeeld: \"template_page/{{ your_object._permalink }})\"."
102
+ _visible: "Standaard zal het item tonen in de site. Dus het kan gebruikt worden als een gepubliceerde eigenschap."
103
+ seo_title: "De waarde die u hier invult zal de SEO titel vervangen van de templatized pagina gerelateerd aan uw model."
104
+ meta_keywords: "Overschrijft de site zijn keywords die gebruikt worden voor SEO doeleinden. Ze zijn gescheiden door een komma."
105
+ meta_description: "Overschrijf de site meta omschrijving die gebruikt wordt voor SEO doeleinden."
106
+ content_type:
107
+ public_submission_accounts: "Wanneer een item gecreëerd is, stuur dan een notificatie email naar de accounts hieronder."
108
+ image_resize_form:
109
+ width: "in px"
110
+ height: "in px"
111
+ placeholders:
112
+ locomotive:
113
+ site:
114
+ domains: "Bijvoorbeeld: mysite.com"
115
+ url_redirections: "Bijvoorbeeld: oude-url nieuwe-url-in-locomotive"
116
+ content_type_entry_field:
117
+ select_options: "Typ de label van uw nieuwe optie hier"
118
+ options:
119
+ locomotive:
120
+ rte_input_link_form:
121
+ target:
122
+ not_set: "Niet ingesteld"
123
+ self: "Open de link in hetzelfde venster"
124
+ blank: "Open een link in een nieuw venster"
125
+ rte_input_image_form:
126
+ alignment:
127
+ default: Standaard
128
+ left: Links
129
+ right: Rechts
130
+ buttons:
131
+ defaults:
132
+ locomotive:
133
+ create: Creëer
134
+ update: Opslaan
135
+ submit: Ok
136
+ cancel: Annuleer
137
+ delete: Verwijder
138
+ close: Sluiten
139
+ loading_text: "Aan het opslaan..."
140
+ or: of
141
+ locomotive:
142
+ account:
143
+ new_api_key: Regenereren
144
+ image_resize_form:
145
+ loading_text: Aan het wijzigen...
146
+ submit: Formaat wijzigen
147
+ site:
148
+ delete: Verwijder deze site
@@ -50,7 +50,11 @@ module Locomotive
50
50
  def set_width_and_height
51
51
  if model.image?
52
52
  dragonfly_img = ::Dragonfly.app(:engine).fetch_file(current_path)
53
- model.width, model.height = dragonfly_img.width, dragonfly_img.height
53
+ begin
54
+ model.width, model.height = dragonfly_img.width, dragonfly_img.height
55
+ rescue Exception => e
56
+ Rails.logger.error "[Dragonfly] Unable to get the width and the height, error: #{e.message}\n#{e.backtrace.join("\n")}"
57
+ end
54
58
  end
55
59
  end
56
60
 
@@ -33,7 +33,6 @@ require 'compass-rails'
33
33
  require 'codemirror/rails'
34
34
  require 'jquery/rails'
35
35
  require 'jquery-ui-rails'
36
- require 'backbone-on-rails'
37
36
  require 'nprogress-rails'
38
37
 
39
38
  require 'grape'
@@ -29,6 +29,10 @@ module Locomotive
29
29
  ::DeviseController.respond_to :html, :json
30
30
  end
31
31
 
32
+ initializer 'locomotive.assets' do |app|
33
+ app.config.assets.paths << root.join('vendor', 'assets', 'components', 'locomotive')
34
+ end
35
+
32
36
  initializer 'locomotive.precompile.hook', group: :all do |app|
33
37
  app.config.assets.precompile += %w(
34
38
  locomotive/bootstrap-colorpicker/saturation.png
@@ -41,7 +45,9 @@ module Locomotive
41
45
  locomotive.js
42
46
  locomotive.css
43
47
  locomotive/not_logged_in.js
44
- locomotive/not_logged_in.css
48
+ locomotive/unauthorized.css
49
+ locomotive/live_editing_iframe.css
50
+ locomotive/live_editing_error.css
45
51
  locomotive/error.css)
46
52
 
47
53
  # Uncomment the lines below to view the names of assets as they are
@@ -2,6 +2,8 @@ module Locomotive
2
2
  module Middlewares
3
3
  class Site
4
4
 
5
+ include Locomotive::Engine.routes.url_helpers
6
+
5
7
  def initialize(app, opts = {})
6
8
  @app = app
7
9
  end
@@ -23,8 +25,7 @@ module Locomotive
23
25
  begin
24
26
  @app.call(env)
25
27
  rescue ::Locomotive::Steam::NoSiteException => exception
26
- # no_site!
27
- Locomotive::ErrorsController.action(:no_site).call(env)
28
+ handle_no_account_or_site(env)
28
29
  end
29
30
  end
30
31
  end
@@ -47,6 +48,17 @@ module Locomotive
47
48
  end
48
49
  end
49
50
 
51
+ # if no account in the database, must be a fresh install,
52
+ # then ask the user to create the first account.
53
+ # if accounts but not no site, render a specific error page.
54
+ def handle_no_account_or_site(env)
55
+ if Locomotive::Account.count == 0
56
+ [301, { 'Location' => sign_up_path, 'Content-Type' => 'text/html' }, []]
57
+ else
58
+ Locomotive::ErrorsController.action(:no_site).call(env)
59
+ end
60
+ end
61
+
50
62
  # The site is not rendered from a domain but from the back-office
51
63
  # we need to get:
52
64
  # - the path of "mouting point" (basically: locomotive/:handle/preview)
@@ -41,6 +41,35 @@ module Mongoid #:nodoc:
41
41
  end
42
42
  end
43
43
  end
44
+
45
+ module Embedded
46
+ class Many < Relations::Many
47
+
48
+ def with_same_class!(document, klass)
49
+ return document if document.is_a?(klass)
50
+
51
+ Factory.build(klass, {}).tap do |_document|
52
+ # make it part of the relationship
53
+ _document.apply_post_processed_defaults
54
+ integrate(_document)
55
+
56
+ # make it look like the old document
57
+ attributes = document.attributes
58
+ attributes['_type'] = _document._type
59
+
60
+ _document.instance_variable_set(:@attributes, attributes)
61
+ _document.new_record = document.new_record?
62
+ _document._index = document._index
63
+
64
+ # finally, make the change in the lists
65
+ target[_document._index] = _document
66
+ _unscoped[_document._index] = _document
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+
44
73
  end
45
74
  module Extensions
46
75
  module Object
@@ -0,0 +1,78 @@
1
+ module Locomotive
2
+ module Steam
3
+ module Middlewares
4
+
5
+ class CatchError
6
+
7
+ def initialize(app, opts = {})
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ begin
13
+ @app.call(env)
14
+ rescue Exception => e
15
+ handle_exception(e, env)
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ def handle_exception(exception, env)
22
+ # display the application error page if not in the back-office
23
+ raise exception unless env['steam.live_editing']
24
+
25
+ ActiveSupport::Notifications.instrument 'locomotive.site.rendering_error', {
26
+ env: env,
27
+ exception: exception
28
+ }
29
+
30
+ Rails.logger.error "[LiveEditing] " + exception.message + "\n\t" + exception.backtrace.join("\n\t")
31
+
32
+ render_error_page
33
+ end
34
+
35
+ def render_error_page
36
+ [200, {}, [%(
37
+ <html>
38
+ <head>
39
+ <link href="#{bootstrap_stylesheet_url}" rel="stylesheet" type="text/css" />
40
+ </head>
41
+ <body>
42
+ <div class="container">
43
+ <div class="row">
44
+ <div class="col-md-12">
45
+ <img src="#{train_image_url}">
46
+
47
+ <div class="alert alert-danger" role="alert">
48
+ <h4 class="text-center">
49
+ We're sorry, but something went wrong.
50
+ </h4>
51
+ <p class="text-center">
52
+ If you are the application owner check the logs for more information.
53
+ </p>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </body>
59
+ </html>
60
+ )]]
61
+ end
62
+
63
+ def bootstrap_stylesheet_url
64
+ ::ActionController::Base.helpers.stylesheet_url('locomotive/live_editing_error')
65
+ end
66
+
67
+ def train_image_url
68
+ ::ActionController::Base.helpers.image_url('locomotive/deadend.png')
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+ end
75
+ end
76
+
77
+
78
+