Module: Spree::Admin::PageBuilderHelper

Defined in:
app/helpers/spree/admin/page_builder_helper.rb

Instance Method Summary collapse

Instance Method Details

#all_fonts_optionsObject



78
79
80
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 78

def all_fonts_options
  @all_fonts_options ||= system_fonts_list + google_fonts_list
end

#all_linkable_pagesObject



82
83
84
85
86
87
88
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 82

def all_linkable_pages
  @all_linkable_pages ||= Spree::Page.
                          without_previews.
                          where(pageable: [@theme, current_store]).
                          select(&:linkable?).
                          map { |page| [page.display_name, page.id] }.sort_by(&:first)
end

#all_linkable_policiesObject



90
91
92
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 90

def all_linkable_policies
  @all_linkable_policies ||= current_store.policies.pluck(:name, :id)
end

#color_palette_active?(color_palette) ⇒ Boolean

Returns:

  • (Boolean)


70
71
72
73
74
75
76
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 70

def color_palette_active?(color_palette)
  @theme_preview&.primary_color&.downcase == color_palette[:primary_color].downcase &&
    @theme_preview&.text_color&.downcase == color_palette[:text_color].downcase &&
    @theme_preview&.border_color&.downcase == color_palette[:border_color].downcase &&
    @theme_preview&.button_text_color&.downcase == color_palette[:button_text_color].downcase &&
    @theme_preview&.background_color&.downcase == color_palette[:background_color].downcase
end

#color_palettesObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 23

def color_palettes
  [
    {
      primary_color: '#1e4bd1',
      text_color: '#000000',
      border_color: '#d1d5db',
      button_text_color: '#ffffff',
      background_color: '#F9FAFB'
    },
    {
      primary_color: '#e63946',
      text_color: '#1d3557',
      border_color: '#a8dadc',
      button_text_color: '#ffffff',
      background_color: '#f1faee'
    },
    {
      primary_color: '#264653',
      text_color: '#060C0E',
      border_color: '#2a9d8f',
      button_text_color: '#ffffff',
      background_color: '#e9c46a'
    },
    {
      primary_color: '#606c38',
      text_color: '#283618',
      border_color: '#dda15e',
      button_text_color: '#ffffff',
      background_color: '#fefae0'
    },
    {
      primary_color: '#FF961F',
      text_color: '#023047',
      border_color: '#219EBC',
      button_text_color: '#FFEEDA',
      background_color: '#DEF0F7'
    },
    {
      primary_color: '#181CF1',
      text_color: '#011627',
      border_color: '#7678ED',
      button_text_color: '#FFFFFF',
      background_color: '#FFF5D6'
    }
  ]
end

#google_fonts_listObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 8

def google_fonts_list
  ['Abel', 'Abril Fatface', 'Alegreya', 'Alegreya Sans', 'Alice', 'Amiri', 'Anonymous Pro', 'Arapey', 'Archivo', 'Archivo Narrow',
   'Arimo', 'Armata', 'Arvo', 'Asap', 'Assistant', 'Asul', 'Bitter', 'Cabin', 'Cardo', 'Catamaran', 'Chivo', 'Cormorant',
   'Crimson Text', 'DM Sans', 'Domine', 'Dosis', 'Eczar', 'Figtree', 'Fira Sans', 'Fjalla One', 'Glegoo', 'IBM Plex Sans', 'Inconsolata',
   'Inknut Antiqua', 'Inter', 'Josefin Sans', 'Josefin Slab', 'Kalam', 'Karla', 'Kreon', 'Lato', 'Libre Baskerville',
   'Libre Franklin', 'Lobster', 'Lobster Two', 'Lora', 'Maven Pro', 'Megrim', 'Merriweather Sans', 'Montserrat',
   'Mouse Memoirs', 'Muli', 'Neuton', 'News Cycle', 'Nobile', 'Noticia Text', 'Noto Serif', 'Nunito', 'Nunito Sans',
   'Old Standard TT', 'Open Sans', 'Oswald', 'Ovo', 'Oxygen', 'PT Mono', 'PT Sans', 'PT Sans Narrow', 'PT Serif',
   'Pacifico', 'Playball', 'Playfair Display', 'Poppins', 'Prata', 'Prompt', 'Quattrocento', 'Quattrocento Sans',
   'Questrial', 'Quicksand', 'Rajdhani', 'Raleway', 'Righteous', 'Roboto', 'Roboto Condensed', 'Roboto Mono', 'Roboto Slab',
   'Rubik', 'Shadows Into Light', 'Slabo 13px', 'Slabo 27px', 'Smooch', 'Source Code Pro', 'Source Sans Pro', 'Space Mono',
   'Syne', 'Tenor Sans', 'Tinos', 'Titillium Web', 'Ubuntu', 'Unica One', 'Unna', 'Varela', 'Varela Round', 'Vidaloka',
   'Volkhov', 'Vollkorn', 'Work Sans']
end

#page_preview_urlObject



117
118
119
120
121
122
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 117

def page_preview_url
  preview_url = @page.preview_url(@theme_preview, @page_preview)
  return if preview_url.blank?

  "#{preview_url}&page_builder=true"
end

#refresh_theme_preview(section = nil, block = nil) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 94

def refresh_theme_preview(section = nil, block = nil)
  reload_params = section.present? ? "{ frame: 'section-#{section.id}' }" : "{ action: 'replace' }"

  editor_id = if block.present?
                "block-#{block.id}"
              elsif section.present?
                "section-#{section.id}"
              end

  turbo_stream.replace :iframe_preview_scripts do
    turbo_frame_tag :iframe_preview_scripts do
      javascript_tag do
        raw <<~JS
          document.getElementById('page-builder-preview').contentWindow.window.Turbo.visit(
            document.getElementById('page-builder').dataset.pageBuilderPreviewUrlValue + '&editor_id=#{editor_id}',
            #{reload_params}
          )
        JS
      end
    end
  end
end

#system_fonts_listObject



4
5
6
# File 'app/helpers/spree/admin/page_builder_helper.rb', line 4

def system_fonts_list
  ['Sans-serif', 'Serif', 'Mono']
end