udongo 6.3.2 → 6.4.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/backend/application.js +1 -0
  3. data/app/assets/javascripts/backend/general.js +6 -0
  4. data/app/assets/stylesheets/backend/application.scss +1 -0
  5. data/app/assets/stylesheets/backend/base/_general.scss +7 -0
  6. data/app/assets/stylesheets/backend/pages/_flexible_content.scss +0 -8
  7. data/app/assets/stylesheets/backend/udongo.scss +2 -0
  8. data/app/controllers/backend/content/rows/columns_controller.rb +1 -9
  9. data/app/controllers/backend/content/rows/slideshows_controller.rb +11 -0
  10. data/app/controllers/backend/content/rows_controller.rb +16 -0
  11. data/app/controllers/backend/forms/fields_controller.rb +3 -1
  12. data/app/controllers/backend/image_collections/base_controller.rb +11 -0
  13. data/app/controllers/backend/image_collections/images_controller.rb +15 -0
  14. data/app/controllers/backend/image_collections_controller.rb +50 -0
  15. data/app/controllers/concerns/backend/content_type_controller.rb +1 -10
  16. data/app/decorators/content_slideshow_decorator.rb +3 -0
  17. data/app/models/content_slideshow.rb +9 -0
  18. data/app/models/image_collection.rb +9 -0
  19. data/app/views/backend/content/_form.html.erb +1 -1
  20. data/app/views/backend/content/_rows.html.erb +11 -7
  21. data/app/views/backend/content/_slideshow.html.erb +6 -0
  22. data/app/views/backend/content/rows/columns/edit.html.erb +6 -14
  23. data/app/views/backend/content/rows/columns/new.html.erb +6 -14
  24. data/app/views/backend/content/rows/edit.html.erb +31 -0
  25. data/app/views/backend/content/rows/forms/edit.html.erb +4 -12
  26. data/app/views/backend/content/rows/images/edit.html.erb +12 -20
  27. data/app/views/backend/content/rows/pictures/edit.html.erb +7 -15
  28. data/app/views/backend/content/rows/pictures/link_or_upload.html.erb +12 -20
  29. data/app/views/backend/content/rows/slideshows/edit.html.erb +17 -0
  30. data/app/views/backend/content/rows/texts/edit.html.erb +2 -10
  31. data/app/views/backend/content/rows/videos/edit.html.erb +5 -6
  32. data/app/views/backend/forms/fields/_form.html.erb +1 -0
  33. data/app/views/backend/image_collections/_form.html.erb +19 -0
  34. data/app/views/backend/image_collections/_tabs.html.erb +18 -0
  35. data/app/views/backend/image_collections/edit.html.erb +6 -0
  36. data/app/views/backend/image_collections/images/index.html.erb +43 -0
  37. data/app/views/backend/image_collections/index.html.erb +30 -0
  38. data/app/views/backend/image_collections/new.html.erb +5 -0
  39. data/app/views/backend/lightbox_saved.html.erb +3 -0
  40. data/app/views/layouts/backend/_top_navigation.html.erb +1 -0
  41. data/app/views/layouts/backend/lightbox.html.erb +5 -3
  42. data/changelog.md +13 -0
  43. data/config/locales/en_backend.yml +5 -6
  44. data/config/locales/en_forms.yml +14 -0
  45. data/config/locales/nl_backend.yml +7 -6
  46. data/config/locales/nl_forms.yml +13 -0
  47. data/config/routes.rb +7 -1
  48. data/db/migrate/20170615113617_create_asset_collections.rb +12 -0
  49. data/db/migrate/20170615120716_rename_asset_collection_to_image_collection.rb +5 -0
  50. data/db/migrate/20170615131909_create_content_slideshows.rb +11 -0
  51. data/db/migrate/20170615184855_add_content_row_margin_padding_and_bg_color.rb +9 -0
  52. data/db/migrate/20170616114757_add_external_ref_to_form_field.rb +6 -0
  53. data/lib/udongo/bogus_model.rb +34 -0
  54. data/lib/udongo/configs/flexible_content.rb +1 -1
  55. data/lib/udongo/search/result_objects/base.rb +1 -1
  56. data/lib/udongo/version.rb +1 -1
  57. data/spec/factories/content_slideshows.rb +5 -0
  58. data/spec/factories/image_collections.rb +6 -0
  59. data/vendor/assets/javascripts/backend/lity.js +637 -0
  60. data/vendor/assets/stylesheets/backend/lity.scss +200 -0
  61. metadata +30 -2
@@ -1,17 +1,9 @@
1
1
  <%= simple_form_for [:backend, @model] do |f| %>
2
- <div class="card">
3
- <div class="card-header">
4
- <%= t 'b.msg.flexible_content.edit_form' %>
5
- </div>
6
-
7
- <div class="card-block">
8
- <div class="row">
9
- <div class="col-6">
10
- <%= f.input :form_id, collection: forms_collection %>
11
- </div>
12
- </div>
2
+ <div class="row">
3
+ <div class="col-6">
4
+ <%= f.input :form_id, collection: forms_collection %>
13
5
  </div>
14
6
  </div>
15
7
 
16
- <%= render 'backend/form_actions', cancel_url: content_path %>
8
+ <%= render 'backend/form_actions', cancel_url: '#lity-close' %>
17
9
  <% end %>
@@ -1,24 +1,16 @@
1
1
  <%= render 'backend/general_form_error', object: @model %>
2
2
 
3
- <div class="card">
4
- <div class="card-header">
5
- <%= t 'b.msg.flexible_content.edit_image' %>
3
+ <% if @model.file.present? %>
4
+ <div class="row">
5
+ <div class="col-lg-8 col-lg-offset-2">
6
+ <%= image_tag(@model.file.url, alt: '', class: 'img-fluid') %>
7
+ </div>
6
8
  </div>
9
+ <% end %>
7
10
 
8
- <div class="card-block">
9
- <% if @model.file.present? %>
10
- <div class="row">
11
- <div class="col-lg-8 col-lg-offset-2">
12
- <%= image_tag(@model.file.url, alt: '', class: 'img-fluid') %>
13
- </div>
14
- </div>
15
- <% end %>
16
-
17
- <%= simple_form_for [:backend, @model] do |f| %>
18
- <%= f.input :file, as: :file %>
19
- <%= f.input :url, as: :string %>
20
- <%= f.input :caption, as: :text %>
21
- <%= render 'backend/form_actions', cancel_url: content_path %>
22
- <% end %>
23
- </div>
24
- </div>
11
+ <%= simple_form_for [:backend, @model] do |f| %>
12
+ <%= f.input :file, as: :file %>
13
+ <%= f.input :url, as: :string %>
14
+ <%= f.input :caption, as: :text %>
15
+ <%= render 'backend/form_actions', cancel_url: '#lity-close' %>
16
+ <% end %>
@@ -1,20 +1,12 @@
1
1
  <%= render 'backend/general_form_error', object: @model %>
2
2
 
3
- <div class="card">
4
- <div class="card-header">
5
- <%= t 'b.msg.flexible_content.edit_picture' %>
6
- </div>
3
+ <%= image_tag @model.asset.image.url(900, 900, quality: 65), alt: '', class: 'img-fluid' %>
7
4
 
8
- <div class="card-block">
9
- <%= image_tag @model.asset.image.url(1700, 1700, quality: 65), alt: '', class: 'img-fluid' %>
5
+ <%= simple_form_for [:backend, @model] do |f| %>
6
+ <%= f.input :url, as: :string %>
10
7
 
11
- <%= simple_form_for [:backend, @model] do |f| %>
12
- <%= f.input :url, as: :string %>
8
+ <% content_type = Udongo.config.flexible_content.picture_caption_editor? ? :ckeditor : :text %>
9
+ <%= f.input :caption, as: content_type %>
13
10
 
14
- <% content_type = Udongo.config.flexible_content.picture_caption_editor? ? :ckeditor : :text %>
15
- <%= f.input :caption, as: content_type %>
16
-
17
- <%= render 'backend/form_actions', cancel_url: content_path %>
18
- <% end %>
19
- </div>
20
- </div>
11
+ <%= render 'backend/form_actions', cancel_url: '#lity-close' %>
12
+ <% end %>
@@ -1,34 +1,26 @@
1
1
  <%= simple_form_for @asset, url: upload_backend_content_picture_path(@model) do |f| %>
2
- <div class="card">
3
- <div class="card-header">
4
- <%= t 'b.upload_a_new_image' %>
5
- </div>
2
+ <div class="row mb-5">
3
+ <div class="col-12">
4
+ <h4><%= t 'b.upload_a_new_image' %></h4>
6
5
 
7
- <div class="card-block">
8
6
  <%= f.input :filename, as: :file, label: false, required: false %>
9
7
  <%= f.input :description, as: :text, required: false %>
10
8
 
11
- <%= render 'backend/form_actions', cancel_url: content_path %>
9
+ <%= render 'backend/form_actions', cancel_url: '#lity-close' %>
12
10
  </div>
13
11
  </div>
14
12
  <% end %>
15
13
 
16
- <div class="card">
17
- <div class="card-header">
18
- <%= t 'b.choose_an_existing_image' %>
19
- </div>
20
14
 
21
- <div class="card-block">
22
- <%= render 'filter' %>
15
+ <h4><%= t 'b.choose_an_existing_image' %></h4>
16
+ <%= render 'filter' %>
23
17
 
24
- <div class="row">
25
- <% @assets.each do |a| %>
26
- <div class="col-sm-6 col-md-4 col-lg-3 col-xl-2">
27
- <%= link_to link_backend_content_picture_path(@model, asset_id: a.id), style: '' do %>
28
- <%= image_tag a.image.url(550, 550, action: :resize_and_pad, background: :white), alt: '', class: 'img-fluid' %>
29
- <% end %>
30
- </div>
18
+ <div class="row">
19
+ <% @assets.each do |a| %>
20
+ <div class="col-sm-6 col-md-4 col-lg-3 col-xl-2">
21
+ <%= link_to link_backend_content_picture_path(@model, asset_id: a.id), style: '' do %>
22
+ <%= image_tag a.image.url(550, 550, action: :resize_and_pad, background: :white), alt: '', class: 'img-fluid' %>
31
23
  <% end %>
32
24
  </div>
33
- </div>
25
+ <% end %>
34
26
  </div>
@@ -0,0 +1,17 @@
1
+ <%= simple_form_for [:backend, @model] do |f| %>
2
+ <div class="row">
3
+ <div class="col-md-4">
4
+ <%= f.input :image_collection_id, collection: image_collections %>
5
+ </div>
6
+
7
+ <div class="col-md-4">
8
+ <%= f.input :slide_interval, as: :integer %>
9
+ </div>
10
+
11
+ <div class="col-md-4">
12
+ <%= f.input :autoplay, as: :boolean %>
13
+ </div>
14
+ </div>
15
+
16
+ <%= render 'backend/form_actions', cancel_url: '#lity-close' %>
17
+ <% end %>
@@ -1,13 +1,5 @@
1
1
  <%= simple_form_for [:backend, @model] do |f| %>
2
- <div class="card">
3
- <div class="card-header">
4
- <%= t 'b.msg.flexible_content.edit_text' %>
5
- </div>
2
+ <%= f.input :content, as: :ckeditor, label: false %>
6
3
 
7
- <div class="card-block">
8
- <%= f.input :content, as: :ckeditor, label: false %>
9
- </div>
10
- </div>
11
-
12
- <%= render 'backend/form_actions', cancel_url: content_path %>
4
+ <%= render 'backend/form_actions', cancel_url: '#lity-close' %>
13
5
  <% end %>
@@ -1,14 +1,13 @@
1
1
  <%= simple_form_for [:backend, @model] do |f| %>
2
- <div class="card">
3
- <div class="card-header">
4
- <%= t 'b.msg.flexible_content.edit_video' %>
2
+ <div class="row">
3
+ <div class="col-md-8">
4
+ <%= f.input :url, as: :string %>
5
5
  </div>
6
6
 
7
- <div class="card-block">
8
- <%= f.input :url, as: :string %>
7
+ <div class="col-md-4">
9
8
  <%= f.input :aspect_ratio, collection: ContentVideo::ASPECT_RATIOS, include_blank: false %>
10
9
  </div>
11
10
  </div>
12
11
 
13
- <%= render 'backend/form_actions', cancel_url: content_path %>
12
+ <%= render 'backend/form_actions', cancel_url: '#lity-close' %>
14
13
  <% end %>
@@ -11,6 +11,7 @@
11
11
  <div class="card-block">
12
12
  <%= f.input :identifier %>
13
13
  <%= f.input :field_type, collection: options_for_collection(:form_field_type, FormField::FIELD_TYPES) %>
14
+ <%= f.input :external_reference %>
14
15
  </div>
15
16
  </div>
16
17
  </div>
@@ -0,0 +1,19 @@
1
+ <%= render 'backend/general_form_error', object: @model %>
2
+
3
+ <%= simple_form_for [:backend, @model] do |f| %>
4
+ <div class="row">
5
+ <div class="col-md-6">
6
+ <div class="card">
7
+ <div class="card-header">
8
+ <%= t 'b.general' %>
9
+ </div>
10
+
11
+ <div class="card-block">
12
+ <%= f.input :description, as: :string %>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ </div>
17
+
18
+ <%= render 'backend/form_actions', cancel_url: backend_image_collections_path %>
19
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <div class="row subnav">
2
+ <div class="col-md-12">
3
+ <ul class="nav nav-pills">
4
+ <li class="nav-item">
5
+ <% klass = %w(nav-link) %>
6
+ <% klass << 'active' if active == :general %>
7
+
8
+ <%= link_to t('b.general'), edit_backend_image_collection_path(model), class: klass %>
9
+ </li>
10
+
11
+ <li class="nav-item">
12
+ <% klass = %w(nav-link) %>
13
+ <% klass << 'active' if active == :images %>
14
+ <%= link_to icon(:image, t('b.images')), backend_image_collection_images_path(model), class: klass %>
15
+ </li>
16
+ </ul>
17
+ </div>
18
+ </div>
@@ -0,0 +1,6 @@
1
+ <% breadcrumb.add @model.description, edit_backend_image_collection_path(@model) %>
2
+ <% breadcrumb.add t('b.edit') %>
3
+ <%= render 'backend/breadcrumbs' %>
4
+
5
+ <%= render 'tabs', model: @model, active: :general %>
6
+ <%= render 'form', model: @model %>
@@ -0,0 +1,43 @@
1
+ <% javascript 'backend/sortable' %>
2
+ <%= render 'backend/breadcrumbs' %>
3
+ <%= render 'backend/image_collections/tabs', model: @image_collection, active: :images %>
4
+
5
+ <p class="text-right">
6
+ <%= link_to icon(:plus, t('b.add')), backend_images_path(klass: @image_collection.class.name, id: @image_collection.id), class: 'btn btn-primary btn-sm' %>
7
+ </p>
8
+
9
+ <% if @images.any? %>
10
+ <table class="table table-striped table-hover">
11
+ <thead class="thead-inverse">
12
+ <tr>
13
+ <th><%= t 'b.file' %></th>
14
+ <th><%= t 'b.type' %></th>
15
+ <th><%= t 'b.size' %></th>
16
+ <th><%= t 'b.description' %></th>
17
+ <th><%= t 'b.last_changed_at' %></th>
18
+ <th>&nbsp;</th>
19
+ </tr>
20
+ </thead>
21
+
22
+ <tbody>
23
+ <% @images.each do |img| %>
24
+ <% a = img.asset %>
25
+ <tr data-update-position="<%= update_position_backend_image_collection_image_path(@image_collection, img) %>">
26
+ <td>
27
+ <%= image_tag a.image.url(150, 150), alt: '', class: 'img-fluid' %>
28
+ </td>
29
+ <td><%= a.actual_filename.split('.').last.upcase %></td>
30
+ <td><%= number_to_human_size a.filesize %></td>
31
+ <td><%= simple_format a.description %></td>
32
+ <td><%= l a.updated_at %></td>
33
+ <td class="text-right">
34
+ <%= link_to icon(:trash), unlink_backend_images_path(klass: @image_collection.class.name, id: @image_collection.id, asset_id: a.id), data: { confirm: t('b.msg.confirm') }, title: t('b.delete') %>
35
+ </td>
36
+ </tr>
37
+ <% end %>
38
+ </tbody>
39
+ </table>
40
+
41
+ <% else %>
42
+ <p><%= t 'b.msg.no_items' %></p>
43
+ <% end %>
@@ -0,0 +1,30 @@
1
+ <%= render 'backend/breadcrumbs' %>
2
+
3
+ <p class="text-right">
4
+ <%= link_to icon(:plus, t('b.add')), new_backend_image_collection_path, class: 'btn btn-primary btn-sm' %>
5
+ </p>
6
+
7
+ <% if @image_collections.any? %>
8
+ <table class="table table-striped table-hover">
9
+ <thead class="thead-inverse">
10
+ <tr>
11
+ <th><%= t 'b.description' %></th>
12
+ <th>&nbsp;</th>
13
+ </tr>
14
+ </thead>
15
+
16
+ <tbody>
17
+ <% @image_collections.each do |c| %>
18
+ <tr>
19
+ <td><%= c.description %></td>
20
+ <td class="text-right">
21
+ <%= link_to_edit [:backend, c] %>
22
+ <%= link_to_delete [:backend, c] %>
23
+ </td>
24
+ </tr>
25
+ <% end %>
26
+ </tbody>
27
+ </table>
28
+ <% else %>
29
+ <p><%= t 'b.msg.no_items' %></p>
30
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% breadcrumb.add t('b.add') %>
2
+ <%= render 'backend/breadcrumbs' %>
3
+
4
+ <%= render 'form' %>
5
+
@@ -0,0 +1,3 @@
1
+ <script type="text/javascript">
2
+ parent.window.location.reload();
3
+ </script>
@@ -7,6 +7,7 @@
7
7
  <%= link_to t('b.articles'), backend_articles_path, class: 'dropdown-item' %>
8
8
  <%= link_to t('b.snippets'), backend_snippets_path, class: 'dropdown-item' %>
9
9
  <%= link_to t('b.files'), backend_assets_path, class: 'dropdown-item' %>
10
+ <%= link_to t('b.image_collections'), backend_image_collections_path, class: 'dropdown-item' %>
10
11
  <%= link_to t('b.forms'), backend_forms_path, class: 'dropdown-item' %>
11
12
  <%= link_to t('b.tags'), backend_tags_path, class: 'dropdown-item' %>
12
13
  </div>
@@ -12,9 +12,11 @@
12
12
  </head>
13
13
 
14
14
  <body class="lightbox">
15
- <div class="row">
16
- <div class="col-sm-12 col-md-8 offset-md-2">
17
- <%= yield %>
15
+ <div class="container-fluid">
16
+ <div class="row">
17
+ <div class="col-12">
18
+ <%= yield %>
19
+ </div>
18
20
  </div>
19
21
  </div>
20
22
 
@@ -1,3 +1,16 @@
1
+ 6.4.0 - 2017-06-16
2
+ --
3
+ * Add the AssetCollection model with a module. This allows you to put certai
4
+ assets in one or more collections. These can then be used in the future to
5
+ create slideshows, photo albums and even file lists.
6
+ * Bugfix: reworked to Udongo::Search::Frontend visible/publishable check tests
7
+ to help fix a test that failed Sometimes™.
8
+ * Flexible content rows can now have a background color and padding/margin for
9
+ the bottom/top.
10
+ * All flexible content actions are now shown in popups.
11
+ * Add field 'external_reference' to form fields.
12
+
13
+
1
14
  6.3.2 - 2017-06-07
2
15
  --
3
16
  * Bugfix: there was an issue with the has_many :addresses relation in the
@@ -81,6 +81,7 @@ en:
81
81
  sent_at: Sent at
82
82
  settings: Settings
83
83
  size: Size
84
+ slideshow: Slideshow
84
85
  snippet: Snippet
85
86
  snippets: Snippets
86
87
  source: Source
@@ -118,6 +119,7 @@ en:
118
119
  form: Form
119
120
  image: Image (deprecated!)
120
121
  picture: Picture
122
+ slideshow: Slideshow
121
123
  text: Text
122
124
  video: Video
123
125
  deleted: '%{actor} was deleted.'
@@ -133,17 +135,14 @@ en:
133
135
  align_vertical_bottom: Align vertical bottom
134
136
  align_vertical_center: Align vertically
135
137
  align_vertical_top: Align vertical top
136
- edit_column: Edit column
137
- edit_form: Edit form
138
- edit_image: Edit image
139
- edit_picture: Edit picture
140
- edit_text: Edit text
141
- edit_video: Edit video
142
138
  explanation: With this module you can create flexible responsive content. Click the button below to create the first row.
143
139
  full_width: Full width
140
+ margin_explanation: Margin is the whitespace above and below this row.
144
141
  no_form_present: No form has been linked yet.
145
142
  no_picture_present: No picture has been uploaded/linked yet.
143
+ no_slideshow_present: No slideshow has been configured yet.
146
144
  no_video_present: No valid video URL was given.
145
+ padding_explanation: Padding is the top and bottom whitespace within this row.
147
146
  width_explanation: For the flexible content we use a grid layout. This works with rows and columns. Every row can contain at most 12 columns. That's why the column width is expressed as a fracture.
148
147
  forgot_password: Forgot password?
149
148
  form_fields:
@@ -15,6 +15,7 @@ en:
15
15
  defaults:
16
16
  active: Active
17
17
  author: Author
18
+ autoplay: Autoplay
18
19
  bcc: BCC
19
20
  caption: Caption
20
21
  category: Category
@@ -24,6 +25,7 @@ en:
24
25
  description: Description
25
26
  disabled: Disabled
26
27
  email: E-mail
28
+ external_reference: External reference
27
29
  extra: Extra
28
30
  field_type: Field type
29
31
  first_name: First name
@@ -66,6 +68,18 @@ en:
66
68
  width_lg: Width (large)
67
69
  width_xl: Width (extra large)
68
70
 
71
+ content_row:
72
+ background_color: Background color
73
+ margin_bottom: Bottom margin
74
+ margin_top: Top margin
75
+ padding_bottom: Bottom padding
76
+ padding_top: Top padding
77
+
78
+ content_slideshow:
79
+ autoplay: Autoplay
80
+ image_collection_id: Image collection
81
+ slide_interval: Interval between slides
82
+
69
83
  email_template:
70
84
  from_email: Sender e-mail address
71
85
  from_name: Sender name