udongo 6.3.2 → 6.4.0

Sign up to get free protection for your applications and to get access to all the features.
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