udongo 6.6.3 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ff48699ed24cd0d6a47d7664715dc25e295870d
4
- data.tar.gz: dd2bcd1439eedfd64b9c672a058982a68332ee3e
3
+ metadata.gz: abcf2f3a3fea0a5ff7a89fa8364f083c948fe8d0
4
+ data.tar.gz: a9cea4a94f6790316fae6a9843bf8e088a01f762
5
5
  SHA512:
6
- metadata.gz: 7612ca40dce54f6be375ece36aa3ab28dda8cba3788c545a24ef30fc00575b14df317d3912b410d2d25557631822dddb74722205025f4f82c85838f3e1f1da0c
7
- data.tar.gz: 0a1626023ad6cb728aa880d581bfd23d953bd60688efa14f425c8b69b4b6daf6658200c9e9b99e6c89f105605c72fb91e1b8e7f2294d4ae516a11adaed4b90b5
6
+ metadata.gz: 7349c0efcab0845f8358291a103043059a46ca7314fecb33fc3ed5f092b27a209187f041f2fcb4648c9bf0745fa6ae6cea27227c6f1c71d10bcb96c73b69ed55
7
+ data.tar.gz: 3c4df6d375c5cac2ca2f9b2f8e48c8ba73d8756e6145b58f6f4044685d79e00b130842f801bf215a362ba8367b9ee772be6969bfb64aa4b5e460c9356d74874b
@@ -3,7 +3,19 @@ module Concerns
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
+ serialize :seo_locales, Array
6
7
  has_many :meta, as: :sluggable, dependent: :destroy
8
+
9
+ after_save do
10
+ locales = Meta.where(
11
+ sluggable_type: self.class.to_s,
12
+ sluggable_id: self.id
13
+ ).where('slug IS NOT NULL OR slug != ""').pluck(:locale).uniq
14
+
15
+ update_column :seo_locales, locales
16
+ end
17
+
18
+ scope :with_seo, ->(locale) { where('seo_locales LIKE ?', "%#{locale}%")}
7
19
  end
8
20
 
9
21
  module ClassMethods
data/changelog.md CHANGED
@@ -1,3 +1,12 @@
1
+ 7.0.0 - 2017-07-28
2
+ --
3
+ * It's now possible to use the scope .with_seo(:nl) to fetch models that actually
4
+ have a slug in that locale. You used to have to do some nasty manual things to
5
+ work around this issue, but no more!
6
+ * After being deprecated for some time, ```ContentImage``` has finally been
7
+ removed from the system.
8
+
9
+
1
10
  6.6.3 - 2017-07-27
2
11
  --
3
12
  * Bugfix: the cacheable concern #find_in_cache method has been tweaked to make
@@ -140,7 +149,7 @@
140
149
  without flexible content without getting an unknown method error.
141
150
  * The column widths for flexible content are displayed in percentages.
142
151
  * An extra widget ```ContentPicture``` has been added. This is the replacement
143
- for the ````ContentImage```` which has now been deprecated.
152
+ for the ```ContentImage``` which has now been deprecated.
144
153
 
145
154
 
146
155
  5.7.0 - 2017-03-22
@@ -0,0 +1,6 @@
1
+ class AddSeoLocalesToModelsWithSeo < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :pages, :seo_locales, :text, after: 'locales'
4
+ add_column :articles, :seo_locales, :text, after: 'locales'
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class RemoveContentImages < ActiveRecord::Migration[5.0]
2
+ def change
3
+ drop_table :content_images
4
+ end
5
+ end
@@ -13,18 +13,6 @@ namespace :udongo do
13
13
  end
14
14
  end
15
15
 
16
- namespace :content_images do
17
- desc 'Regenerate all the image versions.'
18
- task regenerate: :environment do
19
- ContentImage.find_each do |i|
20
- if i.file?
21
- i.file.recreate_versions!
22
- i.save!
23
- end
24
- end
25
- end
26
- end
27
-
28
16
  namespace :queue do
29
17
  desc 'Checks the queue for tasks and executes at most 3 of them'
30
18
  task process: :environment do
@@ -6,7 +6,7 @@ module Udongo
6
6
  BREAKPOINTS = %w(xs sm md lg xl)
7
7
  DEFAULT_BREAKPOINT = 'md'
8
8
 
9
- attribute :types, Array, default: %w(text picture video slideshow form image)
9
+ attribute :types, Array, default: %w(text picture video slideshow form)
10
10
  attribute :picture_caption_editor, Axiom::Types::Boolean, default: false
11
11
  attribute :video_caption_editor, Axiom::Types::Boolean, default: false
12
12
 
@@ -1,3 +1,3 @@
1
1
  module Udongo
2
- VERSION = '6.6.3'
2
+ VERSION = '7.0.0'
3
3
  end
data/readme.md CHANGED
@@ -173,6 +173,22 @@ class Document < ApplicationRecord
173
173
  end
174
174
  ```
175
175
 
176
+ It also allows you to do something like this ```Page.with_locale(:nl)``` which
177
+ will then fetch all pages that have the translatable fields in :nl avaialble.
178
+
179
+ ## Seo concern
180
+ This concern is used if you want to attach (seo) meta details to your model. In
181
+ order to use this, you need to add a text colun 'seo_locales' to your model.
182
+
183
+ ```ruby
184
+ class Document < ApplicationRecord
185
+ include Concerns::Seo
186
+ end
187
+ ```
188
+
189
+ This will then allow you to fetch all documents that have seo (with slug!) in
190
+ a certain locale. ```Document.with_seo(:nl)```
191
+
176
192
  ## Searchable concern
177
193
  Include this in your model if you want its records to appear in search autocompletes.
178
194
 
@@ -5,6 +5,28 @@ shared_examples_for :seo do
5
5
  let(:klass) { model.to_s.underscore.to_sym }
6
6
  let(:instance) { create(klass) }
7
7
 
8
+ describe '#seo_locales' do
9
+ it 'defaults to an empty array' do
10
+ expect(build(klass).seo_locales.class).to eq Array
11
+ end
12
+
13
+ it 'updates when a slug is present' do
14
+ object = create(klass)
15
+ object.seo(:nl).slug = 'foo'
16
+ object.save
17
+
18
+ expect(object.seo_locales).to include 'nl'
19
+ end
20
+
21
+ it 'does not update unless a slug is present' do
22
+ object = create(klass)
23
+ object.seo(:nl).slug = nil
24
+ object.save
25
+
26
+ expect(object.seo_locales).to eq []
27
+ end
28
+ end
29
+
8
30
  describe '#seo' do
9
31
  it 'always returns a meta object' do
10
32
  expect(instance.seo(:nl).class).to eq Meta
@@ -22,6 +44,31 @@ shared_examples_for :seo do
22
44
  end
23
45
  end
24
46
 
47
+ describe 'scopes' do
48
+ describe '.with_seo' do
49
+ it 'no results' do
50
+ expect(model.with_seo(:nl)).to eq []
51
+ end
52
+
53
+ it 'dutch only' do
54
+ object = create(klass)
55
+ object.seo(:nl).slug = 'foo'
56
+ object.save
57
+
58
+ expect(model.with_seo(:nl)).to eq [object]
59
+ end
60
+
61
+ it 'dutch and english' do
62
+ object = create(klass)
63
+ object.seo(:nl).slug = 'foo'
64
+ object.seo(:en).slug = 'foo'
65
+ object.save
66
+
67
+ expect(model.with_seo(:nl)).to eq [object]
68
+ end
69
+ end
70
+ end
71
+
25
72
  describe '.find_by_slug' do
26
73
  it :result do
27
74
  instance.meta.create!(locale: 'nl', slug: 'test')
@@ -49,6 +96,6 @@ shared_examples_for :seo do
49
96
  end
50
97
 
51
98
  it '.respond_to?' do
52
- expect(model).to respond_to(:find_by_slug, :find_by_slug!)
99
+ expect(model).to respond_to(:find_by_slug, :find_by_slug!, :with_seo)
53
100
  end
54
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: udongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.6.3
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Davy Hellemans
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-27 00:00:00.000000000 Z
12
+ date: 2017-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -464,7 +464,6 @@ files:
464
464
  - app/controllers/backend/base_controller.rb
465
465
  - app/controllers/backend/content/rows/columns_controller.rb
466
466
  - app/controllers/backend/content/rows/forms_controller.rb
467
- - app/controllers/backend/content/rows/images_controller.rb
468
467
  - app/controllers/backend/content/rows/pictures_controller.rb
469
468
  - app/controllers/backend/content/rows/slideshows_controller.rb
470
469
  - app/controllers/backend/content/rows/texts_controller.rb
@@ -504,7 +503,6 @@ files:
504
503
  - app/controllers/redirects_controller.rb
505
504
  - app/decorators/application_decorator.rb
506
505
  - app/decorators/content_form_decorator.rb
507
- - app/decorators/content_image_decorator.rb
508
506
  - app/decorators/content_picture_decorator.rb
509
507
  - app/decorators/content_row_decorator.rb
510
508
  - app/decorators/content_slideshow_decorator.rb
@@ -576,7 +574,6 @@ files:
576
574
  - app/models/concerns/visible.rb
577
575
  - app/models/content_column.rb
578
576
  - app/models/content_form.rb
579
- - app/models/content_image.rb
580
577
  - app/models/content_picture.rb
581
578
  - app/models/content_row.rb
582
579
  - app/models/content_slideshow.rb
@@ -611,7 +608,6 @@ files:
611
608
  - app/uploaders/asset_uploader.rb
612
609
  - app/uploaders/ckeditor_attachment_file_uploader.rb
613
610
  - app/uploaders/ckeditor_picture_uploader.rb
614
- - app/uploaders/content_image_uploader.rb
615
611
  - app/validators/email_validator.rb
616
612
  - app/validators/url_validator.rb
617
613
  - app/views/backend/_breadcrumbs.html.erb
@@ -639,7 +635,6 @@ files:
639
635
  - app/views/backend/assets/index.html.erb
640
636
  - app/views/backend/assets/new.html.erb
641
637
  - app/views/backend/content/_form.html.erb
642
- - app/views/backend/content/_image.html.erb
643
638
  - app/views/backend/content/_picture.html.erb
644
639
  - app/views/backend/content/_rows.html.erb
645
640
  - app/views/backend/content/_slideshow.html.erb
@@ -651,7 +646,6 @@ files:
651
646
  - app/views/backend/content/rows/columns/new.html.erb
652
647
  - app/views/backend/content/rows/edit.html.erb
653
648
  - app/views/backend/content/rows/forms/edit.html.erb
654
- - app/views/backend/content/rows/images/edit.html.erb
655
649
  - app/views/backend/content/rows/pictures/_filter.html.erb
656
650
  - app/views/backend/content/rows/pictures/edit.html.erb
657
651
  - app/views/backend/content/rows/pictures/link_or_upload.html.erb
@@ -858,6 +852,8 @@ files:
858
852
  - db/migrate/20170616114757_add_external_ref_to_form_field.rb
859
853
  - db/migrate/20170623121241_add_no_gutters_to_content_row.rb
860
854
  - db/migrate/20170623124218_add_caption_to_content_video.rb
855
+ - db/migrate/20170728094909_add_seo_locales_to_models_with_seo.rb
856
+ - db/migrate/20170728125838_remove_content_images.rb
861
857
  - lib/tasks/task_extras.rb
862
858
  - lib/tasks/udongo_tasks.rake
863
859
  - lib/udongo.rb
@@ -912,7 +908,6 @@ files:
912
908
  - spec/factories/comments.rb
913
909
  - spec/factories/content_columns.rb
914
910
  - spec/factories/content_forms.rb
915
- - spec/factories/content_images.rb
916
911
  - spec/factories/content_pictures.rb
917
912
  - spec/factories/content_rows.rb
918
913
  - spec/factories/content_slideshows.rb
@@ -1,6 +0,0 @@
1
- class Backend::Content::Rows::ImagesController < Backend::BaseController
2
- include Concerns::Backend::ContentTypeController
3
-
4
- model ContentImage
5
- allowed_params :file, :caption, :url
6
- end
@@ -1,3 +0,0 @@
1
- class ContentImageDecorator < ApplicationDecorator
2
- delegate_all
3
- end
@@ -1,9 +0,0 @@
1
- class ContentImage < ApplicationRecord
2
- include Concerns::ContentType
3
-
4
- mount_uploader :file, ContentImageUploader
5
-
6
- def content_type
7
- :image
8
- end
9
- end
@@ -1,52 +0,0 @@
1
- class ContentImageUploader < CarrierWave::Uploader::Base
2
- include CarrierWave::RMagick
3
-
4
- storage :file
5
-
6
- def filename
7
- @name ||= "#{secure_token}-#{model.id}.#{file.extension.downcase}" if original_filename
8
- end
9
-
10
- private
11
-
12
- def secure_token
13
- ivar = "@#{mounted_as}_secure_token"
14
- token = model.instance_variable_get(ivar)
15
- token ||= model.instance_variable_set(ivar, SecureRandom.hex(4))
16
- end
17
-
18
- def store_dir
19
- main_dir = Digest::MD5.hexdigest(model.id.to_s)[0,2]
20
- "uploads/flexible_content/images/#{main_dir}"
21
- end
22
-
23
- def extension_white_list
24
- %w(jpg jpeg gif png)
25
- end
26
-
27
- process resize_to_limit: [2560, 1440]
28
-
29
- version :size_800x600 do
30
- process resize_to_limit: [800, 600]
31
- end
32
-
33
- version :size_1024x640 do
34
- process resize_to_limit: [1024, 640]
35
- end
36
-
37
- version :size_1280x800 do
38
- process resize_to_limit: [1280, 800]
39
- end
40
-
41
- version :size_1440x900 do
42
- process resize_to_limit: [1440, 900]
43
- end
44
-
45
- version :size_1680x1050 do
46
- process resize_to_limit: [1680, 1050]
47
- end
48
-
49
- version :size_1920x1200 do
50
- process resize_to_limit: [1920, 1200]
51
- end
52
- end
@@ -1,10 +0,0 @@
1
- <% if object.present? && object.file.present? %>
2
-
3
- <%= image_tag object.file.size_1024x640.url, alt: '', class: 'img-fluid' %>
4
-
5
- <% if object.caption.present? %>
6
- <div class="text-xs-center">
7
- <%= object.caption.html_safe %>
8
- </div>
9
- <% end %>
10
- <% end %>
@@ -1,16 +0,0 @@
1
- <%= render 'backend/general_form_error', object: @model %>
2
-
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>
8
- </div>
9
- <% end %>
10
-
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,9 +0,0 @@
1
- FactoryGirl.define do
2
- factory :content_image do
3
- file { fixture_file_upload 'spec/fixtures/files/example.jpg', 'application/jpeg' }
4
-
5
- after(:create) do |file, proxy|
6
- proxy.file.close
7
- end
8
- end
9
- end