comfortable_mexican_sofa 2.0.17 → 2.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -1
  3. data/.travis.yml +4 -3
  4. data/app/controllers/comfy/admin/base_controller.rb +1 -1
  5. data/app/controllers/comfy/admin/cms/categories_controller.rb +1 -1
  6. data/app/controllers/comfy/admin/cms/layouts_controller.rb +1 -1
  7. data/app/controllers/comfy/admin/cms/sites_controller.rb +1 -1
  8. data/app/controllers/comfy/admin/cms/snippets_controller.rb +1 -1
  9. data/app/controllers/comfy/admin/cms/translations_controller.rb +1 -1
  10. data/app/controllers/comfy/cms/assets_controller.rb +1 -1
  11. data/app/controllers/comfy/cms/base_controller.rb +1 -1
  12. data/app/controllers/comfy/cms/content_controller.rb +6 -11
  13. data/app/models/comfy/cms/file.rb +8 -7
  14. data/app/models/comfy/cms/page.rb +10 -3
  15. data/app/views/comfy/admin/cms/files/_file.html.haml +1 -1
  16. data/app/views/comfy/admin/cms/fragments/_form_fragment_attachments.html.haml +1 -1
  17. data/app/views/kaminari/comfy/_first_page.html.haml +1 -1
  18. data/comfortable_mexican_sofa.gemspec +1 -1
  19. data/config/environments/test.rb +4 -0
  20. data/config/initializers/comfortable_mexican_sofa.rb +10 -1
  21. data/config/locales/pl.yml +20 -20
  22. data/db/cms_seeds/sample-site/pages/index/cms logo.png +0 -0
  23. data/db/cms_seeds/sample-site/pages/index/content.html +1 -0
  24. data/lib/comfortable_mexican_sofa/configuration.rb +25 -14
  25. data/lib/comfortable_mexican_sofa/content/tags/file.rb +2 -0
  26. data/lib/comfortable_mexican_sofa/content/tags/file_link.rb +2 -0
  27. data/lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb +16 -11
  28. data/lib/comfortable_mexican_sofa/content/tags/page_file_link.rb +2 -0
  29. data/lib/comfortable_mexican_sofa/engine.rb +9 -1
  30. data/lib/comfortable_mexican_sofa/extensions/has_revisions.rb +1 -1
  31. data/lib/comfortable_mexican_sofa/render_methods.rb +2 -0
  32. data/lib/comfortable_mexican_sofa/seeds.rb +6 -4
  33. data/lib/comfortable_mexican_sofa/seeds/page/importer.rb +1 -1
  34. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  35. data/lib/generators/comfy/scaffold/templates/controller.rb.tt +1 -1
  36. data/lib/tasks/cms_seeds.rake +8 -6
  37. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1de2082d0f04ab3482b9ca303ce5cb2a0742c931
4
- data.tar.gz: 353bdb2b41ec035eb182d8fd96eaba92c2cf1e29
2
+ SHA256:
3
+ metadata.gz: e514b33709fbc091e1fd7d85698df4aca91754f9534e846b0d3c9fd01b5ceec2
4
+ data.tar.gz: 9e3a60b2ac680e17bdc69e8f4d544dffcb433537b957e51e2bf155a10f2e3f17
5
5
  SHA512:
6
- metadata.gz: d1a02dc6c122018580e2653b062ab52c2d1c3085652f60477a47ec0c8706ffe1a65bd9d698fd25a36cca4592fc581ec0460551250bca66b44c60b7b2c4171428
7
- data.tar.gz: e668efc2fb6e753fe786bf73f33ee5a4ce7a5562a2ef70f93fec110328b3696dacde1652e39914f8cbf4a7599bb297e93058733e4c15fae2fb4cc92c0b0b492c
6
+ metadata.gz: af4880c26e4a7e7cac684928a01630727b0fb1cb038a1222352850e6c77efbc48aeee95887e7d447f16d8409fe0dec3ec51dc9ab49e4a1b4ab756a4a60be26ad
7
+ data.tar.gz: f2cc0e1ac9c9d1b1f4dc9542f9f1b5be37d17dbc2f1273eb43c69db0fbb1b8ad42c5f611f135e11e5412622a68d9aa20f79e47b49000644f096d4273734d000d
data/.gitignore CHANGED
@@ -16,4 +16,5 @@ Gemfile.lock
16
16
  /.sass-cache
17
17
  coverage/
18
18
  /storage
19
- db/cms_fixtures/test-site/
19
+ db/cms_fixtures/test-site/
20
+ .idea
@@ -1,8 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.3.7
4
- - 2.4.4
5
- - 2.5.1
3
+ - 2.3.8
4
+ - 2.4.5
5
+ - 2.5.5
6
+ - 2.6.2
6
7
  - ruby-head
7
8
  gemfile:
8
9
  - test/gemfiles/5.2.gemfile
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Comfy::Admin::BaseController < ComfortableMexicanSofa.config.base_controller.to_s.constantize
3
+ class Comfy::Admin::BaseController < ComfortableMexicanSofa.config.admin_base_controller.to_s.constantize
4
4
 
5
5
  include Comfy::Paginate
6
6
 
@@ -16,7 +16,7 @@ class Comfy::Admin::Cms::CategoriesController < Comfy::Admin::Cms::BaseControlle
16
16
  end
17
17
 
18
18
  def update
19
- @category.update_attributes!(category_params)
19
+ @category.update!(category_params)
20
20
  rescue ActiveRecord::RecordInvalid
21
21
  head :ok
22
22
  end
@@ -32,7 +32,7 @@ class Comfy::Admin::Cms::LayoutsController < Comfy::Admin::Cms::BaseController
32
32
  end
33
33
 
34
34
  def update
35
- @layout.update_attributes!(layout_params)
35
+ @layout.update!(layout_params)
36
36
  flash[:success] = I18n.t("comfy.admin.cms.layouts.updated")
37
37
  redirect_to action: :edit, id: @layout
38
38
  rescue ActiveRecord::RecordInvalid
@@ -33,7 +33,7 @@ class Comfy::Admin::Cms::SitesController < Comfy::Admin::Cms::BaseController
33
33
  end
34
34
 
35
35
  def update
36
- @site.update_attributes!(site_params)
36
+ @site.update!(site_params)
37
37
  flash[:success] = I18n.t("comfy.admin.cms.sites.updated")
38
38
  redirect_to action: :edit, id: @site
39
39
  rescue ActiveRecord::RecordInvalid
@@ -32,7 +32,7 @@ class Comfy::Admin::Cms::SnippetsController < Comfy::Admin::Cms::BaseController
32
32
  end
33
33
 
34
34
  def update
35
- @snippet.update_attributes!(snippet_params)
35
+ @snippet.update!(snippet_params)
36
36
  flash[:success] = I18n.t("comfy.admin.cms.snippets.updated")
37
37
  redirect_to action: :edit, id: @snippet
38
38
  rescue ActiveRecord::RecordInvalid
@@ -28,7 +28,7 @@ class Comfy::Admin::Cms::TranslationsController < Comfy::Admin::Cms::BaseControl
28
28
  end
29
29
 
30
30
  def update
31
- @translation.update_attributes!(translation_params)
31
+ @translation.update!(translation_params)
32
32
  flash[:success] = I18n.t("comfy.admin.cms.translations.updated")
33
33
  redirect_to action: :edit, id: @translation
34
34
  rescue ActiveRecord::RecordInvalid
@@ -2,7 +2,7 @@
2
2
 
3
3
  class Comfy::Cms::AssetsController < Comfy::Cms::BaseController
4
4
 
5
- skip_before_action :verify_authenticity_token
5
+ skip_before_action :verify_authenticity_token, raise: false
6
6
 
7
7
  before_action :load_cms_layout,
8
8
  :use_null_session
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Comfy::Cms::BaseController < ApplicationController
3
+ class Comfy::Cms::BaseController < ComfortableMexicanSofa.config.public_base_controller.to_s.constantize
4
4
 
5
5
  before_action :load_cms_site
6
6
 
@@ -21,11 +21,11 @@ class Comfy::Cms::ContentController < Comfy::Cms::BaseController
21
21
  respond_to do |format|
22
22
  format.html { render_page }
23
23
  format.json do
24
- json_page = @cms_page.as_json(except: [:content_cache])
25
- json_page[:content] = render_to_string(
24
+ @cms_page.content = render_to_string(
26
25
  inline: @cms_page.content_cache,
27
26
  layout: false
28
27
  )
28
+ json_page = @cms_page.as_json(ComfortableMexicanSofa.config.page_to_json_options)
29
29
  render json: json_page
30
30
  end
31
31
  end
@@ -44,7 +44,7 @@ protected
44
44
  # it's possible to control mimetype of a page by creating a `mime_type` field
45
45
  def mime_type
46
46
  mime_block = @cms_page.fragments.detect { |f| f.identifier == "mime_type" }
47
- mime_block&.content || "text/html"
47
+ mime_block&.content&.strip || "text/html"
48
48
  end
49
49
 
50
50
  def app_layout
@@ -73,15 +73,10 @@ protected
73
73
  # Getting page and setting content_cache and fragments data if we need to
74
74
  # serve translation data
75
75
  def find_cms_page_by_full_path(full_path)
76
- @cms_page = @cms_site.pages.published.find_by!(full_path: full_path)
77
- @cms_layout = @cms_page.layout
76
+ @cms_page = @cms_site.pages.published.find_by!(full_path: full_path)
78
77
 
79
- # There are translations for this page and locale is not the default site
80
- # locale, so we need to grab translation data.
81
- if @cms_page.translations.any? && @cms_site.locale != I18n.locale.to_s
82
- @cms_page.translate!(I18n.locale)
83
- @cms_layout = @cms_page.layout
84
- end
78
+ @cms_page.translate!
79
+ @cms_layout = @cms_page.layout
85
80
 
86
81
  @cms_page
87
82
 
@@ -21,10 +21,12 @@ class Comfy::Cms::File < ActiveRecord::Base
21
21
  belongs_to :site
22
22
 
23
23
  # -- Callbacks ---------------------------------------------------------------
24
+ before_validation :assign_label, on: :create
24
25
  before_create :assign_position
25
26
  after_save :process_attachment
26
27
 
27
28
  # -- Validations -------------------------------------------------------------
29
+ validates :label, presence: true
28
30
  validates :file, presence: true, on: :create
29
31
 
30
32
  # -- Scopes ------------------------------------------------------------------
@@ -34,13 +36,6 @@ class Comfy::Cms::File < ActiveRecord::Base
34
36
  where("active_storage_blobs.content_type LIKE 'image/%'").references(:blob)
35
37
  }
36
38
 
37
- # -- Instance Methods --------------------------------------------------------
38
- def label
39
- l = read_attribute(:label)
40
- return l if l.present?
41
- attachment.attached? ? attachment.filename.to_s : nil
42
- end
43
-
44
39
  protected
45
40
 
46
41
  def assign_position
@@ -48,6 +43,12 @@ protected
48
43
  self.position = max ? max + 1 : 0
49
44
  end
50
45
 
46
+ # TODO: Change db schema not to set blank string
47
+ def assign_label
48
+ return if label.present?
49
+ self.label = file&.original_filename
50
+ end
51
+
51
52
  def process_attachment
52
53
  return if @file.blank?
53
54
  attachment.attach(@file)
@@ -7,9 +7,11 @@ class Comfy::Cms::Page < ActiveRecord::Base
7
7
  include Comfy::Cms::WithFragments
8
8
  include Comfy::Cms::WithCategories
9
9
 
10
- cms_acts_as_tree counter_cache: :children_count
10
+ cms_acts_as_tree counter_cache: :children_count, order: :position
11
11
  cms_has_revisions_for :fragments_attributes
12
12
 
13
+ attr_accessor :content
14
+
13
15
  # -- Relationships -----------------------------------------------------------
14
16
  belongs_to :site
15
17
  belongs_to :target_page,
@@ -88,8 +90,13 @@ class Comfy::Cms::Page < ActiveRecord::Base
88
90
 
89
91
  # This method will mutate page object by transfering attributes from translation
90
92
  # for a given locale.
91
- def translate!(locale)
92
- translation = translations.published.find_by!(locale: locale)
93
+ def translate!
94
+ # If site locale same as page's or there's no translastions, we do nothing
95
+ if site.locale == I18n.locale.to_s || translations.blank?
96
+ return
97
+ end
98
+
99
+ translation = translations.published.find_by!(locale: I18n.locale)
93
100
  self.layout = translation.layout
94
101
  self.label = translation.label
95
102
  self.content_cache = translation.content_cache
@@ -1,7 +1,7 @@
1
1
  %li{data: {id: file.id}}
2
2
  :ruby
3
3
  file_tag = cms_file_link_tag(file)
4
- thumb_url = url_for(file.attachment.variant(combine_options: Comfy::Cms::File::VARIANT_SIZE[:thumb])) if file.attachment.image?
4
+ thumb_url = url_for(file.attachment.variant(combine_options: Comfy::Cms::File::VARIANT_SIZE[:thumb])) if file.attachment.variable?
5
5
  .row
6
6
  .col-md-5.item
7
7
  .item-controls.d-none.d-lg-block
@@ -1,7 +1,7 @@
1
1
  .fragment-attachments
2
2
  - attachments.each do |attachment|
3
3
  :ruby
4
- thumb_url = if attachment.image?
4
+ thumb_url = if attachment.variable?
5
5
  url_for(attachment.variant(combine_options: Comfy::Cms::File::VARIANT_SIZE[:thumb]))
6
6
  end
7
7
  filename = attachment.filename.to_s
@@ -1,3 +1,3 @@
1
1
  - unless current_page.first?
2
2
  %li.page-item
3
- = link_to_unless current_page.first?, raw(t 'views.pagination.first'), url, class: 'page-link', remote: remote
3
+ = link_to_unless current_page.first?, raw(t 'views.pagination.first'), url, class: 'page-link', remote: remote
@@ -28,5 +28,5 @@ Gem::Specification.new do |s|
28
28
  s.add_dependency "mini_magick", ">= 4.8.0"
29
29
  s.add_dependency "rails", ">= 5.2.0"
30
30
  s.add_dependency "rails-i18n", ">= 5.0.0"
31
- s.add_dependency "sass-rails", ">= 5.0.0"
31
+ s.add_dependency "sassc-rails", ">= 2.0.0"
32
32
  end
@@ -48,4 +48,8 @@ defined?(ComfortableMexicanSofa::Application) && ComfortableMexicanSofa::Applica
48
48
  config.active_job.queue_adapter = :inline
49
49
 
50
50
  config.action_view.raise_on_missing_translations = true
51
+
52
+ # TODO: This is temporary fix so TravisCI runs until Rails 5.2.3 is out.
53
+ # See: https://github.com/rails/rails/pull/35607
54
+ config.secret_key_base = SecureRandom.hex(64)
51
55
  end
@@ -5,7 +5,10 @@ ComfortableMexicanSofa.configure do |config|
5
5
  # config.cms_title = 'ComfortableMexicanSofa CMS Engine'
6
6
 
7
7
  # Controller that is inherited from CmsAdmin::BaseController
8
- # config.base_controller = 'ApplicationController'
8
+ # config.admin_base_controller = 'ApplicationController'
9
+
10
+ # Controller that Comfy::Cms::BaseController will inherit from
11
+ # config.public_base_controller = 'ApplicationController'
9
12
 
10
13
  # Module responsible for authentication. You can replace it with your own.
11
14
  # It simply needs to have #authenticate method. See http_auth.rb for reference.
@@ -77,6 +80,12 @@ ComfortableMexicanSofa.configure do |config|
77
80
  # Reveal partials that can be overwritten in the admin area.
78
81
  # Default is false.
79
82
  # config.reveal_cms_partials = false
83
+ #
84
+ # Customize the returned content json data
85
+ # include fragments in content json
86
+ # config.content_json_options = {
87
+ # include: [:fragments]
88
+ # }
80
89
  end
81
90
 
82
91
  # Default credentials for ComfortableMexicanSofa::AccessControl::AdminAuthentication
@@ -6,7 +6,7 @@ pl:
6
6
  comfy/cms/page: Strona
7
7
  comfy/cms/snippet: Snippet
8
8
  comfy/cms/file: Plik
9
- comfy/cms/translation: Translation
9
+ comfy/cms/translation: Tłumaczenie
10
10
 
11
11
  attributes:
12
12
  comfy/cms/site:
@@ -41,10 +41,10 @@ pl:
41
41
  label: Tytuł
42
42
  content: Zawartość
43
43
  comfy/cms/translation:
44
- locale: Language
45
- label: Label
46
- layout_id: Layout
47
- is_published: Published
44
+ locale: Język
45
+ label: Nazwa
46
+ layout_id: Szablon
47
+ is_published: Opublikowano
48
48
 
49
49
  comfy:
50
50
  cms:
@@ -144,7 +144,7 @@ pl:
144
144
  create: Utwórz stronę
145
145
  cancel: Anuluj
146
146
  update: Uaktualnij stronę
147
- choose_link: Select page...
147
+ choose_link: Wybierz stronę...
148
148
 
149
149
  fragments:
150
150
  form_fragments:
@@ -153,25 +153,25 @@ pl:
153
153
  Dodaj do jego treści tag strony lub pola, np. <code>{{cms:wysiwyg content}}</code>
154
154
 
155
155
  translations:
156
- created: Translation created
157
- creation_failure: Failed to create translation
158
- updated: Translation updated
159
- update_failure: Failed to update translation
160
- deleted: Translation deleted
161
- not_found: Translation not found
156
+ created: Tłumaczenie zostało utworzone
157
+ creation_failure: Błąd przy tworzeniu tlumaczenia
158
+ updated: Tłumaczenie zostało uaktualnione
159
+ update_failure: Błąd przy uaktualnianiu tłumaczenia
160
+ deleted: Tłumaczenie zostało usunięte
161
+ not_found: Nie znaleziono tłumaczenia
162
162
 
163
163
  new:
164
- title: New Translation
164
+ title: Nowe tłumaczenie
165
165
  edit:
166
- title: Editing Translation
166
+ title: Edytuj tłumaczenie
167
167
  form:
168
- preview: Preview
169
- create: Create
170
- update: Update
171
- cancel: Return to Page
168
+ preview: Podgląd
169
+ create: Utwórz tłumaczenie
170
+ update: Uaktualnij tłumaczenie
171
+ cancel: Anuluj
172
172
  sidebar:
173
- new: New Translation
174
- confirm: Are you sure?
173
+ new: Nowe tłumaczenie
174
+ confirm: Jesteś pewien?
175
175
 
176
176
  snippets:
177
177
  created: Snippet został utworzony
@@ -22,3 +22,4 @@ true
22
22
  [files attachments]
23
23
  header.png
24
24
  footer.png
25
+ cms logo.png
@@ -7,7 +7,11 @@ class ComfortableMexicanSofa::Configuration
7
7
 
8
8
  # Controller that is inherited from CmsAdmin::BaseController
9
9
  # 'ApplicationController' is the default
10
- attr_accessor :base_controller
10
+ attr_accessor :admin_base_controller
11
+
12
+ # Controller that Comfy::Cms::BaseController will inherit from
13
+ # 'ApplicationController' is the default
14
+ attr_accessor :public_base_controller
11
15
 
12
16
  # Module that will handle authentication to access cms-admin area
13
17
  attr_accessor :admin_auth
@@ -76,21 +80,27 @@ class ComfortableMexicanSofa::Configuration
76
80
  # Auto-setting parameter derived from the routes
77
81
  attr_accessor :public_cms_path
78
82
 
83
+ # Customize returned content from `page.to_json`
84
+ # Default is set to `methods: [:content], except: [:content_cache]`
85
+ # For example: include fragments into json data with `config.page_to_json_options = { include: [:fragments] }`
86
+ attr_accessor :page_to_json_options
87
+
79
88
  # Configuration defaults
80
89
  def initialize
81
- @cms_title = "ComfortableMexicanSofa CMS Engine"
82
- @base_controller = "ApplicationController"
83
- @admin_auth = "ComfortableMexicanSofa::AccessControl::AdminAuthentication"
84
- @admin_authorization = "ComfortableMexicanSofa::AccessControl::AdminAuthorization"
85
- @public_auth = "ComfortableMexicanSofa::AccessControl::PublicAuthentication"
86
- @public_authorization = "ComfortableMexicanSofa::AccessControl::PublicAuthorization"
87
- @seed_data_path = nil
88
- @admin_route_redirect = ""
89
- @enable_sitemap = true
90
- @enable_seeds = false
91
- @seeds_path = File.expand_path("db/cms_seeds", Rails.root)
92
- @revisions_limit = 25
93
- @locales = {
90
+ @cms_title = "ComfortableMexicanSofa CMS Engine"
91
+ @admin_base_controller = "ApplicationController"
92
+ @public_base_controller = "ApplicationController"
93
+ @admin_auth = "ComfortableMexicanSofa::AccessControl::AdminAuthentication"
94
+ @admin_authorization = "ComfortableMexicanSofa::AccessControl::AdminAuthorization"
95
+ @public_auth = "ComfortableMexicanSofa::AccessControl::PublicAuthentication"
96
+ @public_authorization = "ComfortableMexicanSofa::AccessControl::PublicAuthorization"
97
+ @seed_data_path = nil
98
+ @admin_route_redirect = ""
99
+ @enable_sitemap = true
100
+ @enable_seeds = false
101
+ @seeds_path = File.expand_path("db/cms_seeds", Rails.root)
102
+ @revisions_limit = 25
103
+ @locales = {
94
104
  "ca" => "Català",
95
105
  "cs" => "Česky",
96
106
  "da" => "Dansk",
@@ -122,6 +132,7 @@ class ComfortableMexicanSofa::Configuration
122
132
  @hostname_aliases = nil
123
133
  @reveal_cms_partials = false
124
134
  @public_cms_path = nil
135
+ @page_to_json_options = { methods: [:content], except: [:content_cache] }
125
136
  end
126
137
 
127
138
  end
@@ -11,6 +11,7 @@ require_relative "./mixins/file_content"
11
11
  # `resize` - imagemagic option. For example: "100x50>"
12
12
  # `gravity` - imagemagic option. For example: "center"
13
13
  # `crop` - imagemagic option. For example: "100x50+0+0"
14
+ # `class` - any html classes that you want on the result link or image tag. For example "class1 class2"
14
15
  #
15
16
  class ComfortableMexicanSofa::Content::Tag::File < ComfortableMexicanSofa::Content::Tag::Fragment
16
17
 
@@ -27,6 +28,7 @@ class ComfortableMexicanSofa::Content::Tag::File < ComfortableMexicanSofa::Conte
27
28
  super
28
29
  @as = options["as"] || "url"
29
30
  @label = options["label"]
31
+ @class = options["class"]
30
32
  @variant_attrs = options.slice("resize", "gravity", "crop")
31
33
  end
32
34
 
@@ -11,6 +11,7 @@ require_relative "./mixins/file_content"
11
11
  # `resize` - imagemagic option. For example: "100x50>"
12
12
  # `gravity` - imagemagic option. For example: "center"
13
13
  # `crop` - imagemagic option. For example: "100x50+0+0"
14
+ # `class` - any html classes that you want on the result link or image tag. For example "class1 class2"
14
15
  #
15
16
  class ComfortableMexicanSofa::Content::Tag::FileLink < ComfortableMexicanSofa::Content::Tag
16
17
 
@@ -31,6 +32,7 @@ class ComfortableMexicanSofa::Content::Tag::FileLink < ComfortableMexicanSofa::C
31
32
  options = params.extract_options!
32
33
  @identifier = params[0]
33
34
  @as = options["as"] || "url"
35
+ @class = options["class"]
34
36
  @variant_attrs = options.slice("resize", "gravity", "crop")
35
37
 
36
38
  unless @identifier.present?
@@ -12,26 +12,31 @@ module ComfortableMexicanSofa::Content::Tag::Mixins
12
12
  def content(file: self.file, as: self.as, variant_attrs: self.variant_attrs, label: self.label)
13
13
  return "" unless file
14
14
 
15
- if variant_attrs.present? && attachment.image?
16
- file = file.variant(combine_options: variant_attrs)
17
- end
15
+ url_helpers = Rails.application.routes.url_helpers
18
16
 
19
- url = rails_blob_path(file)
17
+ attachment_url =
18
+ if variant_attrs.present? && file.image?
19
+ variant = file.variant(combine_options: variant_attrs)
20
+ url_helpers.rails_representation_path(variant, only_path: true)
21
+ else
22
+ url_helpers.rails_blob_path(file, only_path: true)
23
+ end
20
24
 
21
25
  case as
22
26
  when "link"
23
- "<a href='#{url}' target='_blank'>#{label}</a>"
27
+ "<a href='#{attachment_url}'#{html_class_attribute} target='_blank'>#{label}</a>"
24
28
  when "image"
25
- "<img src='#{url}' alt='#{label}'/>"
29
+ "<img src='#{attachment_url}'#{html_class_attribute} alt='#{label}'/>"
26
30
  else
27
- url
31
+ attachment_url
28
32
  end
29
33
  end
30
34
 
31
- # @param [ActiveStorage::Blob]
32
- # @return [String]
33
- def rails_blob_path(blob)
34
- Rails.application.routes.url_helpers.rails_blob_path(blob, only_path: true)
35
+ private
36
+
37
+ def html_class_attribute
38
+ return if @class.blank?
39
+ " class='#{@class}'"
35
40
  end
36
41
 
37
42
  end
@@ -20,6 +20,7 @@ require_relative "./mixins/file_content"
20
20
  # `resize` - imagemagick option. For example: "100x50>"
21
21
  # `gravity` - imagemagick option. For example: "center"
22
22
  # `crop` - imagemagick option. For example: "100x50+0+0"
23
+ # `class` - any html classes that you want on the result link or image tag. For example "class1 class2"
23
24
  #
24
25
  class ComfortableMexicanSofa::Content::Tag::PageFileLink < ComfortableMexicanSofa::Content::Tag
25
26
 
@@ -44,6 +45,7 @@ class ComfortableMexicanSofa::Content::Tag::PageFileLink < ComfortableMexicanSof
44
45
  options = params.extract_options!
45
46
  @identifier = params[0]
46
47
  @as = options["as"] || "url"
48
+ @class = options["class"]
47
49
  @variant_attrs = options.slice("resize", "gravity", "crop")
48
50
  @filename = options["filename"]
49
51
 
@@ -8,11 +8,19 @@ require "active_link_to"
8
8
  require "kramdown"
9
9
  require "jquery-rails"
10
10
  require "haml-rails"
11
- require "sass-rails"
11
+ require "sassc-rails"
12
12
 
13
13
  module ComfortableMexicanSofa
14
14
  class Engine < ::Rails::Engine
15
15
 
16
+ initializer "comfortable_mexican_sofa.setup_assets" do
17
+ ::ComfortableMexicanSofa::Engine.config.assets.precompile += %w[
18
+ comfy/admin/cms/application.js
19
+ comfy/admin/cms/application.css
20
+ comfy/admin/cms/lib/redactor-font.eot
21
+ ]
22
+ end
23
+
16
24
  config.to_prepare do
17
25
  Dir.glob(Rails.root + "app/decorators/comfortable_mexican_sofa/*_decorator*.rb").each do |c|
18
26
  require_dependency(c)
@@ -60,7 +60,7 @@ module ComfortableMexicanSofa::HasRevisions
60
60
  # Assigning whatever is found in revision data and attempting to save the object
61
61
  def restore_from_revision(revision)
62
62
  return unless revision.record == self
63
- update_attributes!(revision.data)
63
+ update!(revision.data)
64
64
  end
65
65
 
66
66
  end
@@ -67,6 +67,8 @@ module ComfortableMexicanSofa::RenderMethods
67
67
  raise ComfortableMexicanSofa::MissingPage, path
68
68
  end
69
69
 
70
+ @cms_page.translate!
71
+
70
72
  @cms_layout = @cms_page.layout
71
73
  if (cms_fragments = options.delete(:cms_fragments)).present?
72
74
  cms_fragments.each do |identifier, value|
@@ -2,6 +2,8 @@
2
2
 
3
3
  module ComfortableMexicanSofa::Seeds
4
4
 
5
+ SEED_CLASSES = %w[Layout Page Snippet File].freeze
6
+
5
7
  class Error < StandardError; end
6
8
 
7
9
  require "mimemagic"
@@ -26,8 +28,8 @@ module ComfortableMexicanSofa::Seeds
26
28
  end
27
29
  end
28
30
 
29
- def import!
30
- %w[Layout Page Snippet File].each do |klass|
31
+ def import!(classes = SEED_CLASSES)
32
+ classes.each do |klass|
31
33
  klass = "ComfortableMexicanSofa::Seeds::#{klass}::Importer"
32
34
  klass.constantize.new(from, to).import!
33
35
  end
@@ -78,8 +80,8 @@ module ComfortableMexicanSofa::Seeds
78
80
  self.site = Comfy::Cms::Site.where(identifier: from).first!
79
81
  end
80
82
 
81
- def export!
82
- %w[Layout Page Snippet File].each do |klass|
83
+ def export!(classes = SEED_CLASSES)
84
+ classes.each do |klass|
83
85
  klass = "ComfortableMexicanSofa::Seeds::#{klass}::Exporter"
84
86
  klass.constantize.new(from, to).export!
85
87
  end
@@ -187,7 +187,7 @@ module ComfortableMexicanSofa::Seeds::Page
187
187
  # ActiveStorage and a list of ids of old attachements to destroy
188
188
  def files_content(record, identifier, path, frag_content)
189
189
  # preparing attachments
190
- files = frag_content.split.collect do |filename|
190
+ files = frag_content.split("\n").collect do |filename|
191
191
  file_handler = File.open(File.join(path, filename))
192
192
  {
193
193
  io: file_handler,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ComfortableMexicanSofa
4
4
 
5
- VERSION = "2.0.17"
5
+ VERSION = "2.0.18"
6
6
 
7
7
  end
@@ -29,7 +29,7 @@ class Admin::<%= class_name.pluralize %>Controller < Comfy::Admin::BaseControlle
29
29
  end
30
30
 
31
31
  def update
32
- @<%= file_name %>.update_attributes!(<%= file_name %>_params)
32
+ @<%= file_name %>.update!(<%= file_name %>_params)
33
33
  flash[:success] = '<%= class_name.titleize %> updated'
34
34
  redirect_to action: :show, id: @<%= file_name %>
35
35
  rescue ActiveRecord::RecordInvalid
@@ -2,11 +2,12 @@
2
2
 
3
3
  namespace :comfy do
4
4
  namespace :cms_seeds do
5
- desc "Import CMS Seed data into database (from: folder name, to: site identifier)"
5
+ desc "Import CMS Seed data into database (from: folder name, to: site identifier, klasses: class name[s])"
6
6
 
7
- task :import, %i[from to] => [:environment] do |_t, args|
7
+ task :import, %i[from to klasses] => [:environment] do |_t, args|
8
8
  from = args[:from]
9
9
  to = args[:to] || from
10
+ klasses = args[:klasses].nil? ? nil : args[:klasses].split
10
11
 
11
12
  puts "Importing CMS Seed data from Folder [#{from}] to Site [#{to}] ..."
12
13
 
@@ -14,15 +15,16 @@ namespace :comfy do
14
15
  logger = ComfortableMexicanSofa.logger
15
16
  ComfortableMexicanSofa.logger = Logger.new(STDOUT)
16
17
 
17
- ComfortableMexicanSofa::Seeds::Importer.new(from, to).import!
18
+ ComfortableMexicanSofa::Seeds::Importer.new(from, to).import!(klasses)
18
19
 
19
20
  ComfortableMexicanSofa.logger = logger
20
21
  end
21
22
 
22
- desc "Export database data into CMS Seed files (from: site identifier, to: folder name)"
23
- task :export, %i[from to] => [:environment] do |_t, args|
23
+ desc "Export database data into CMS Seed files (from: site identifier, to: folder name, klasses: class name[s])"
24
+ task :export, %i[from to klasses] => [:environment] do |_t, args|
24
25
  from = args[:from]
25
26
  to = args[:to] || from
27
+ classes = args[:classes]&.split
26
28
 
27
29
  puts "Exporting CMS data from Site [#{from}] to Folder [#{to}] ..."
28
30
 
@@ -30,7 +32,7 @@ namespace :comfy do
30
32
  logger = ComfortableMexicanSofa.logger
31
33
  ComfortableMexicanSofa.logger = Logger.new(STDOUT)
32
34
 
33
- ComfortableMexicanSofa::Seeds::Exporter.new(from, to).export!
35
+ ComfortableMexicanSofa::Seeds::Exporter.new(from, to).export!(classes)
34
36
 
35
37
  ComfortableMexicanSofa.logger = logger
36
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comfortable_mexican_sofa
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.17
4
+ version: 2.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Khabarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-12 00:00:00.000000000 Z
11
+ date: 2019-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_link_to
@@ -137,19 +137,19 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: 5.0.0
139
139
  - !ruby/object:Gem::Dependency
140
- name: sass-rails
140
+ name: sassc-rails
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: 5.0.0
145
+ version: 2.0.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 5.0.0
152
+ version: 2.0.0
153
153
  description: ComfortableMexicanSofa is a powerful Rails 5.2+ CMS Engine
154
154
  email:
155
155
  - oleg@khabarov.ca
@@ -536,6 +536,7 @@ files:
536
536
  - db/cms_seeds/sample-site/layouts/default/nested/content.html
537
537
  - db/cms_seeds/sample-site/pages/index/child_a/content.html
538
538
  - db/cms_seeds/sample-site/pages/index/child_b/content.html
539
+ - db/cms_seeds/sample-site/pages/index/cms logo.png
539
540
  - db/cms_seeds/sample-site/pages/index/content.es.html
540
541
  - db/cms_seeds/sample-site/pages/index/content.fr.html
541
542
  - db/cms_seeds/sample-site/pages/index/content.html
@@ -633,8 +634,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
633
634
  - !ruby/object:Gem::Version
634
635
  version: '0'
635
636
  requirements: []
636
- rubyforge_project:
637
- rubygems_version: 2.5.1
637
+ rubygems_version: 3.0.3
638
638
  signing_key:
639
639
  specification_version: 4
640
640
  summary: Rails 5.2+ CMS Engine