spree_page_builder 5.3.4 → 5.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.
- checksums.yaml +4 -4
- data/LICENSE.md +13 -0
- data/README.md +2 -0
- data/Rakefile +15 -9
- data/app/models/concerns/spree/has_one_link.rb +42 -0
- data/app/models/concerns/spree/linkable.rb +9 -0
- data/app/models/concerns/spree/previewable.rb +17 -0
- data/app/models/concerns/spree/stores/socials.rb +72 -0
- data/app/models/spree/page_builder/store_decorator.rb +55 -0
- data/app/models/spree/page_section.rb +4 -0
- data/app/models/spree/page_sections/announcement_bar.rb +6 -0
- data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +4 -2
- data/app/views/spree/admin/page_sections/edit.html.erb +6 -0
- data/app/views/spree/admin/page_sections/update.turbo_stream.erb +6 -0
- data/app/views/spree/admin/shared/_page_section_logo.html.erb +1 -0
- data/app/views/spree/admin/stores/form/_checkout_links.html.erb +28 -0
- data/config/locales/en.yml +1 -0
- data/lib/generators/spree/page_builder/install/install_generator.rb +1 -0
- data/lib/spree/page_builder/engine.rb +6 -0
- data/lib/spree/page_builder.rb +1 -0
- metadata +44 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1c0a0d6b849ba77a6f5aa00ed5572f1a809fd6fe5ded28c74346b2b09cbc71b1
|
|
4
|
+
data.tar.gz: 91fb84c175c3be58f23bcb9e7b3fecf8280058c7386aa8fd9d0c0b614a3291dc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4b9c2e47346c889a289013e88a3205041c83982afbf9953a48d2de3ed60898ecd468a00d9ef25659fa51f404276f9bf5d2586cf546cccf4d5b1445673fb76780
|
|
7
|
+
data.tar.gz: cc30a24e1116a56ed833ab0455d4d2f96a4fab6e85d7bfed7985fc0452d8d7c5349b55bc2e3d3a9e5c7ed24ee233e92d2761687fdec58e285b1089b45087cefe
|
data/LICENSE.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-present, Vendo Connect Inc., Vendo Sp z o.o.
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
6
|
+
|
|
7
|
+
This program is distributed in the hope that it will be useful,
|
|
8
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
9
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
10
|
+
GNU Affero General Public License for more details.
|
|
11
|
+
|
|
12
|
+
You should have received a copy of the GNU Affero General Public License
|
|
13
|
+
along with this program. If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/).
|
data/README.md
CHANGED
data/Rakefile
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
require 'bundler'
|
|
2
|
+
Bundler::GemHelper.install_tasks
|
|
3
|
+
|
|
4
4
|
require 'rspec/core/rake_task'
|
|
5
|
-
require 'spree/testing_support/
|
|
5
|
+
require 'spree/testing_support/extension_rake'
|
|
6
6
|
|
|
7
7
|
RSpec::Core::RakeTask.new
|
|
8
8
|
|
|
9
|
-
task default
|
|
9
|
+
task :default do
|
|
10
|
+
if Dir['spec/dummy'].empty?
|
|
11
|
+
Rake::Task[:test_app].invoke
|
|
12
|
+
Dir.chdir('../../')
|
|
13
|
+
end
|
|
14
|
+
Rake::Task[:spec].invoke
|
|
15
|
+
end
|
|
10
16
|
|
|
11
|
-
desc
|
|
17
|
+
desc 'Generates a dummy app for testing'
|
|
12
18
|
task :test_app do
|
|
13
19
|
ENV['LIB_NAME'] = 'spree/page_builder'
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
install_admin: true,
|
|
20
|
+
Rake::Task['extension:test_app'].execute(
|
|
21
|
+
install_admin: true
|
|
17
22
|
)
|
|
23
|
+
system({ 'BUNDLE_GEMFILE' => File.expand_path('Gemfile', __dir__) }, 'bundle exec rails g spree_posts:install')
|
|
18
24
|
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module HasOneLink
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do
|
|
6
|
+
has_one :link, ->(ps) { ps.links }, class_name: 'Spree::PageLink', as: :parent, dependent: :destroy, inverse_of: :parent
|
|
7
|
+
accepts_nested_attributes_for :link
|
|
8
|
+
|
|
9
|
+
def allowed_linkable_types
|
|
10
|
+
[
|
|
11
|
+
[Spree.t(:page), 'Spree::Page'],
|
|
12
|
+
[Spree.t(:product), 'Spree::Product'],
|
|
13
|
+
[Spree.t(:post), 'Spree::Post'],
|
|
14
|
+
[Spree.t(:taxon), 'Spree::Taxon'],
|
|
15
|
+
[Spree.t(:policy), 'Spree::Policy'],
|
|
16
|
+
[Spree.t(:url), nil]
|
|
17
|
+
]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def default_linkable_type
|
|
21
|
+
'Spree::Page'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def default_linkable_resource
|
|
25
|
+
@default_linkable_resource ||= theme_or_parent.pages.find_by(type: 'Spree::Pages::Homepage')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def default_links
|
|
29
|
+
@default_links.presence || [
|
|
30
|
+
Spree::PageLink.new(
|
|
31
|
+
label: Spree.t(:shop_all),
|
|
32
|
+
linkable: theme_or_parent.pages.find_by(type: 'Spree::Pages::ShopAll')
|
|
33
|
+
)
|
|
34
|
+
]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def theme_or_parent
|
|
38
|
+
theme.preview? ? theme.parent : theme
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Previewable
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do |base|
|
|
6
|
+
belongs_to :parent, class_name: base.name, optional: true, foreign_key: :parent_id
|
|
7
|
+
has_many :previews, class_name: base.name, dependent: :destroy_async, foreign_key: :parent_id
|
|
8
|
+
|
|
9
|
+
scope :without_previews, -> { where(parent_id: nil) }
|
|
10
|
+
scope :only_previews, -> { where.not(parent_id: nil) }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def preview?
|
|
14
|
+
parent.present?
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Stores
|
|
3
|
+
module Socials
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
SUPPORTED_SOCIAL_NETWORKS = %w[instagram facebook twitter pinterest tiktok youtube spotify discord].freeze
|
|
7
|
+
|
|
8
|
+
SOCIAL_NETWORKS_CONFIG = {
|
|
9
|
+
twitter: {
|
|
10
|
+
input_placeholder: 'https://twitter.com/your_handle',
|
|
11
|
+
profile_link: 'https://twitter.com/your_handle'
|
|
12
|
+
},
|
|
13
|
+
instagram: {
|
|
14
|
+
input_placeholder: 'https://www.instagram.com/your_handle',
|
|
15
|
+
profile_link: 'https://www.instagram.com/your_handle'
|
|
16
|
+
},
|
|
17
|
+
facebook: {
|
|
18
|
+
input_placeholder: 'https://www.facebook.com/your_page',
|
|
19
|
+
profile_link: 'https://www.facebook.com/your_page'
|
|
20
|
+
},
|
|
21
|
+
youtube: {
|
|
22
|
+
input_placeholder: 'https://www.youtube.com/@your_channel',
|
|
23
|
+
profile_link: 'https://www.youtube.com/@your_channel'
|
|
24
|
+
},
|
|
25
|
+
pinterest: {
|
|
26
|
+
input_placeholder: 'https://pinterest.com/your_handle',
|
|
27
|
+
profile_link: 'https://pinterest.com/your_handle'
|
|
28
|
+
},
|
|
29
|
+
tiktok: {
|
|
30
|
+
input_placeholder: 'your_handle',
|
|
31
|
+
profile_link: 'https://www.tiktok.com/@your_handle'
|
|
32
|
+
},
|
|
33
|
+
spotify: {
|
|
34
|
+
input_placeholder: 'https://open.spotify.com/user/your_handle',
|
|
35
|
+
profile_link: 'https://open.spotify.com/user/your_handle'
|
|
36
|
+
},
|
|
37
|
+
discord: {
|
|
38
|
+
input_placeholder: 'https://discord.com/invite/your_handle',
|
|
39
|
+
profile_link: 'https://discord.com/invite/your_handle'
|
|
40
|
+
}
|
|
41
|
+
}.freeze
|
|
42
|
+
|
|
43
|
+
included do
|
|
44
|
+
# generate methods for social links
|
|
45
|
+
SUPPORTED_SOCIAL_NETWORKS.each do |social|
|
|
46
|
+
# store the social handle in the public metadata
|
|
47
|
+
store_accessor :public_metadata, social
|
|
48
|
+
|
|
49
|
+
define_method "#{social}_link" do
|
|
50
|
+
return if send(social).blank?
|
|
51
|
+
|
|
52
|
+
send(social).match(/http/) ? send(social) : SOCIAL_NETWORKS_CONFIG[social.to_sym][:profile_link].gsub(/your_handle|your_page|your_channel/, send(social).sub(/^\//, '').sub(/^@/, ''))
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
define_method "#{social}_handle" do
|
|
56
|
+
return if send(social).blank?
|
|
57
|
+
|
|
58
|
+
(send(social).match(/http/) ? send(social).split('/').last : send(social)).sub(/^\//, '').gsub('@', '').split('?').first
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def social_handle
|
|
64
|
+
@social_handle ||= instagram_handle || youtube_handle || tiktok_handle
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def social_links
|
|
68
|
+
@social_links ||= [instagram_link, facebook_link, twitter_link, pinterest_link, youtube_link, tiktok_link, spotify_link, discord_link].compact_blank
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -3,6 +3,7 @@ module Spree
|
|
|
3
3
|
module StoreDecorator
|
|
4
4
|
def self.prepended(base)
|
|
5
5
|
base.include Spree::HasPageLinks
|
|
6
|
+
base.include Spree::Stores::Socials
|
|
6
7
|
|
|
7
8
|
# Page Builder associations
|
|
8
9
|
base.has_many :themes, -> { without_previews }, class_name: 'Spree::Theme', dependent: :destroy, inverse_of: :store
|
|
@@ -21,17 +22,71 @@ module Spree
|
|
|
21
22
|
base.has_many :page_previews, class_name: 'Spree::Pages::Custom', through: :pages, as: :pageable, source: :previews
|
|
22
23
|
|
|
23
24
|
base.after_create :create_default_theme
|
|
25
|
+
|
|
26
|
+
base.has_rich_text :checkout_message
|
|
27
|
+
|
|
28
|
+
# Storefront-specific attachments
|
|
29
|
+
base.has_one_attached :favicon_image, service: Spree.public_storage_service_name
|
|
30
|
+
base.has_one_attached :social_image, service: Spree.public_storage_service_name
|
|
31
|
+
|
|
32
|
+
base.validates :favicon_image, :social_image, content_type: Rails.application.config.active_storage.web_image_content_types
|
|
33
|
+
|
|
34
|
+
base.preference :index_in_search_engines, :boolean, default: false
|
|
35
|
+
base.preference :password_protected, :boolean, default: false
|
|
36
|
+
base.store_accessor :private_metadata, :storefront_password
|
|
37
|
+
|
|
38
|
+
base.translates(:facebook, :twitter, :instagram, column_fallback: !Spree.always_use_translations?)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def favicon
|
|
42
|
+
return unless favicon_image.attached? && favicon_image.variable?
|
|
43
|
+
|
|
44
|
+
favicon_image.variant(resize_to_limit: [32, 32])
|
|
24
45
|
end
|
|
25
46
|
|
|
26
47
|
private
|
|
27
48
|
|
|
28
49
|
def create_default_theme
|
|
50
|
+
ensure_default_taxonomies
|
|
51
|
+
ensure_default_automatic_taxons
|
|
52
|
+
|
|
29
53
|
themes.find_or_initialize_by(default: true) do |theme|
|
|
30
54
|
theme.name = Spree.t(:default_theme_name)
|
|
31
55
|
theme.save!
|
|
32
56
|
end
|
|
33
57
|
end
|
|
34
58
|
|
|
59
|
+
def ensure_default_taxonomies
|
|
60
|
+
[
|
|
61
|
+
Spree.t(:taxonomy_categories_name),
|
|
62
|
+
Spree.t(:taxonomy_brands_name),
|
|
63
|
+
Spree.t(:taxonomy_collections_name)
|
|
64
|
+
].each do |taxonomy_name|
|
|
65
|
+
next if taxonomies.with_matching_name(taxonomy_name).exists?
|
|
66
|
+
|
|
67
|
+
taxonomies.create(name: taxonomy_name)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def ensure_default_automatic_taxons
|
|
72
|
+
collections_taxonomy = taxonomies.with_matching_name(Spree.t(:taxonomy_collections_name)).first
|
|
73
|
+
return unless collections_taxonomy.present?
|
|
74
|
+
|
|
75
|
+
[
|
|
76
|
+
{ name: Spree.t('automatic_taxon_names.on_sale'), rule_type: 'Spree::TaxonRules::Sale', rule_value: 'true' },
|
|
77
|
+
{ name: Spree.t('automatic_taxon_names.new_arrivals'), rule_type: 'Spree::TaxonRules::AvailableOn', rule_value: 30 }
|
|
78
|
+
].each do |config|
|
|
79
|
+
next if collections_taxonomy.taxons.automatic.with_matching_name(config[:name]).exists?
|
|
80
|
+
|
|
81
|
+
collections_taxonomy.taxons.create!(
|
|
82
|
+
name: config[:name],
|
|
83
|
+
automatic: true,
|
|
84
|
+
parent: collections_taxonomy.root,
|
|
85
|
+
taxon_rules: [Spree::TaxonRule.new(type: config[:rule_type], value: config[:rule_value])]
|
|
86
|
+
)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
35
90
|
def create_default_policies
|
|
36
91
|
super
|
|
37
92
|
|
|
@@ -8,10 +8,16 @@ module Spree
|
|
|
8
8
|
BOTTOM_PADDING_DEFAULT = 8
|
|
9
9
|
TOP_BORDER_WIDTH_DEFAULT = 0
|
|
10
10
|
|
|
11
|
+
preference :visible, :boolean, default: true
|
|
12
|
+
|
|
11
13
|
def self.role
|
|
12
14
|
'header'
|
|
13
15
|
end
|
|
14
16
|
|
|
17
|
+
def can_be_hidden?
|
|
18
|
+
true
|
|
19
|
+
end
|
|
20
|
+
|
|
15
21
|
def icon_name
|
|
16
22
|
'speakerphone'
|
|
17
23
|
end
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
<% if section.persisted? %>
|
|
2
|
+
<% section_hidden = section.can_be_hidden? && !section.preferred_visible %>
|
|
2
3
|
<%= turbo_frame_tag dom_id(section), class: 'list-group-item py-0 border-0 sidebar-page-section draggable rounded-sm',
|
|
3
4
|
data: { sortable_update_url: spree.admin_page_section_path(section, format: :turbo_stream) } do %>
|
|
4
|
-
<div class="flex items-center justify-between sidebar-section-title py-1 rounded-xl"
|
|
5
|
+
<div class="flex items-center justify-between sidebar-section-title py-1 rounded-xl <%= 'opacity-50' if section_hidden %>"
|
|
5
6
|
data-action="mouseover->page-builder#toggleHighlightElement mouseout->page-builder#toggleHighlightElement"
|
|
6
7
|
data-page-builder-editor-id-param="section-<%= section.id %>">
|
|
7
8
|
<div class="flex items-center flex-1 py-1 px-2">
|
|
8
9
|
<%= icon("#{section.icon_name}", height: 18, class: 'mr-2') if section.icon_name.present? %>
|
|
9
10
|
<%= link_to section.display_name, spree.edit_admin_page_section_path(section),
|
|
10
|
-
class:
|
|
11
|
+
class: "section-edit-link flex-1 font-bold #{section_hidden ? 'text-gray-400' : 'text-gray-900'}",
|
|
11
12
|
data: {
|
|
12
13
|
turbo_frame: :page_sidebar,
|
|
13
14
|
action: 'click->page-builder#makeOverlayActive',
|
|
14
15
|
page_builder_editor_id_param: "section-#{section.id}"
|
|
15
16
|
}
|
|
16
17
|
%>
|
|
18
|
+
<%= icon('eye-off', height: 14, class: 'ml-1 text-gray-400') if section_hidden %>
|
|
17
19
|
</div>
|
|
18
20
|
<div class="flex items-center hidden">
|
|
19
21
|
<button class="btn btn-sm pr-0 handle hover:bg-gray-100 h-full mr-1 px-1 handle-section shadow-none">
|
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
</li>
|
|
19
19
|
</ul>
|
|
20
20
|
<div data-tabs-target="panel" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" class="animate-fade-in" <%= 'hidden' unless tab_selected == :content %>>
|
|
21
|
+
<% if @page_section.can_be_hidden? %>
|
|
22
|
+
<div class="form-group">
|
|
23
|
+
<%= f.check_box :preferred_visible, class: "checkbox-input", data: { action: 'auto-submit#submit' } %>
|
|
24
|
+
<%= f.label :preferred_visible, Spree.t('admin.page_builder.visible') %>
|
|
25
|
+
</div>
|
|
26
|
+
<% end %>
|
|
21
27
|
<%= render "spree/admin/page_sections/forms/#{@page_section.type.demodulize.underscore}", f: f %>
|
|
22
28
|
<%= render 'spree/admin/page_sections/form_tab_buttons', tab: :content %>
|
|
23
29
|
</div>
|
|
@@ -8,3 +8,9 @@
|
|
|
8
8
|
<%= render 'spree/admin/page_links/linkable_type_dropdown', page_link: @page_section.link, form_name: 'page_section[link_attributes]' %>
|
|
9
9
|
<% end %>
|
|
10
10
|
<% end %>
|
|
11
|
+
<% if @page_section.can_be_hidden? && @page_section.saved_change_to_preferences? &&
|
|
12
|
+
@page_section.saved_change_to_preferences[0][:visible] != @page_section.saved_change_to_preferences[1][:visible] %>
|
|
13
|
+
<%= turbo_stream.replace dom_id(@page_section) do %>
|
|
14
|
+
<%= render 'spree/admin/page_builder/sidebar_section', section: @page_section %>
|
|
15
|
+
<% end %>
|
|
16
|
+
<% end %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= f.spree_file_field :asset, width: 400, height: 128, auto_submit: true, label: Spree.t(:logo) %>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<div id="checkout_links">
|
|
2
|
+
<% if current_store.links.any? %>
|
|
3
|
+
<ul class="list-group rounded-lg mb-6 border-gray-200"
|
|
4
|
+
data-controller="sortable"
|
|
5
|
+
data-sortable-handle-value=".handle"
|
|
6
|
+
data-sortable-resource-name-value="page_link"
|
|
7
|
+
data-sortable-response-kind-value="turbo-stream">
|
|
8
|
+
<% current_store.links.each do |link| %>
|
|
9
|
+
<li class="list-group-item p-0 hover:bg-gray-25"
|
|
10
|
+
data-sortable-update-url="<%= spree.admin_page_link_path(link, sorting_only: true, format: :turbo_stream) %>"
|
|
11
|
+
>
|
|
12
|
+
<%= turbo_frame_tag spree_dom_id(link), class: 'flex items-center w-full py-2 pl-6 pr-2' do %>
|
|
13
|
+
<%= link_to link.label, spree.edit_admin_page_link_path(link), class: 'block text-gray-900 flex-1 no-underline' %>
|
|
14
|
+
<span class="btn btn-sm handle shadow-none hover:bg-gray-100 px-1 cursor-move ml-4">
|
|
15
|
+
<%= icon 'grip-vertical', class: 'mr-0' %>
|
|
16
|
+
</span>
|
|
17
|
+
<% end %>
|
|
18
|
+
</li>
|
|
19
|
+
<% end %>
|
|
20
|
+
</ul>
|
|
21
|
+
<% else %>
|
|
22
|
+
<p class="text-gray-600 text-center p-12">
|
|
23
|
+
<%= Spree.t(:no_resource_found, resource: Spree::PageLink.model_name.human) %>
|
|
24
|
+
</p>
|
|
25
|
+
<% end %>
|
|
26
|
+
|
|
27
|
+
<%= link_to_with_icon 'plus', Spree.t(:add_link), spree.admin_store_links_path(current_store), class: 'btn btn-primary w-full', data: { turbo_method: :post } %>
|
|
28
|
+
</div>
|
data/config/locales/en.yml
CHANGED
|
@@ -136,6 +136,12 @@ module Spree
|
|
|
136
136
|
Rails.application.config.spree.page_blocks = value
|
|
137
137
|
end
|
|
138
138
|
|
|
139
|
+
mattr_accessor :screenshot_api_token
|
|
140
|
+
|
|
141
|
+
def self.screenshot_api_token
|
|
142
|
+
@@screenshot_api_token
|
|
143
|
+
end
|
|
144
|
+
|
|
139
145
|
# Page Builder configuration accessor (groups all page builder config)
|
|
140
146
|
def self.page_builder
|
|
141
147
|
@page_builder ||= PageBuilderConfig.new
|
data/lib/spree/page_builder.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_page_builder
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vendo Connect Inc.
|
|
@@ -15,34 +15,63 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 5.
|
|
18
|
+
version: 5.4.0
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 5.
|
|
25
|
+
version: 5.4.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: spree_admin
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 5.
|
|
32
|
+
version: 5.4.0
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 5.
|
|
39
|
+
version: 5.4.0
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: spree_posts
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: spree_dev_tools
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
40
68
|
description: Visual page builder and theme management for Spree Commerce storefronts
|
|
41
69
|
email: hello@spreecommerce.org
|
|
42
70
|
executables: []
|
|
43
71
|
extensions: []
|
|
44
72
|
extra_rdoc_files: []
|
|
45
73
|
files:
|
|
74
|
+
- LICENSE.md
|
|
46
75
|
- README.md
|
|
47
76
|
- Rakefile
|
|
48
77
|
- app/controllers/concerns/spree/admin/page_builder_concern.rb
|
|
@@ -58,7 +87,11 @@ files:
|
|
|
58
87
|
- app/jobs/spree/page_builder/products/touch_taxons_job_decorator.rb
|
|
59
88
|
- app/jobs/spree/themes/duplicate_components_job.rb
|
|
60
89
|
- app/jobs/spree/themes/screenshot_job.rb
|
|
90
|
+
- app/models/concerns/spree/has_one_link.rb
|
|
61
91
|
- app/models/concerns/spree/has_page_links.rb
|
|
92
|
+
- app/models/concerns/spree/linkable.rb
|
|
93
|
+
- app/models/concerns/spree/previewable.rb
|
|
94
|
+
- app/models/concerns/spree/stores/socials.rb
|
|
62
95
|
- app/models/spree/page.rb
|
|
63
96
|
- app/models/spree/page_block.rb
|
|
64
97
|
- app/models/spree/page_blocks/buttons.rb
|
|
@@ -236,7 +269,9 @@ files:
|
|
|
236
269
|
- app/views/spree/admin/pages/filters.html.erb
|
|
237
270
|
- app/views/spree/admin/pages/index.html.erb
|
|
238
271
|
- app/views/spree/admin/pages/new.html.erb
|
|
272
|
+
- app/views/spree/admin/shared/_page_section_logo.html.erb
|
|
239
273
|
- app/views/spree/admin/storefront/edit.html.erb
|
|
274
|
+
- app/views/spree/admin/stores/form/_checkout_links.html.erb
|
|
240
275
|
- app/views/spree/admin/themes/_theme.html.erb
|
|
241
276
|
- app/views/spree/admin/themes/_theme_preview_image.html.erb
|
|
242
277
|
- app/views/spree/admin/themes/edit.html.erb
|
|
@@ -264,10 +299,10 @@ homepage: https://getvendo.com
|
|
|
264
299
|
licenses:
|
|
265
300
|
- AGPL-3.0-or-later
|
|
266
301
|
metadata:
|
|
267
|
-
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
268
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.
|
|
302
|
+
bug_tracker_uri: https://github.com/spree/spree-rails-storefront/issues
|
|
303
|
+
changelog_uri: https://github.com/spree/spree-rails-storefront/releases/tag/v5.4.0
|
|
269
304
|
documentation_uri: https://docs.spreecommerce.org/
|
|
270
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.
|
|
305
|
+
source_code_uri: https://github.com/spree/spree-rails-storefront/tree/v5.4.0
|
|
271
306
|
rdoc_options: []
|
|
272
307
|
require_paths:
|
|
273
308
|
- lib
|
|
@@ -282,7 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
282
317
|
- !ruby/object:Gem::Version
|
|
283
318
|
version: '0'
|
|
284
319
|
requirements: []
|
|
285
|
-
rubygems_version: 4.0.
|
|
320
|
+
rubygems_version: 4.0.2
|
|
286
321
|
specification_version: 4
|
|
287
322
|
summary: Visual Page Builder for Spree Commerce
|
|
288
323
|
test_files: []
|