Module: Mosaico

Defined in:
lib/mosaico.rb,
lib/mosaico/engine.rb,
lib/mosaico/version.rb,
lib/mosaico/template.rb,
app/models/mosaico/image.rb,
lib/mosaico/local_backend.rb,
app/models/mosaico/project.rb,
lib/mosaico/versafix_template.rb,
lib/mosaico/local_image_backend.rb,
app/models/mosaico/uploaded_image.rb,
app/models/mosaico/placeholder_image.rb,
lib/mosaico/local_placeholder_backend.rb,
app/helpers/mosaico/application_helper.rb,
app/controllers/mosaico/images_controller.rb,
app/controllers/mosaico/projects_controller.rb,
app/controllers/mosaico/templates_controller.rb,
app/controllers/mosaico/application_controller.rb

Defined Under Namespace

Modules: ApplicationHelper Classes: ApplicationController, Engine, Image, ImagesController, LocalBackend, LocalImageBackend, LocalPlaceholderBackend, PlaceholderImage, Project, ProjectsController, Template, TemplatesController, UploadedImage, VersafixTemplate

Constant Summary collapse

DEFAULT_LOCALE =
:en
VERSION =
'1.0.0'
MOSAICO_VERSION =
'0.16.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.default_localeObject



96
97
98
# File 'lib/mosaico.rb', line 96

def default_locale
  @default_locale ||= DEFAULT_LOCALE
end

Class Method Details

.available_localesObject



74
75
76
77
78
79
80
81
82
# File 'lib/mosaico.rb', line 74

def available_locales
  @available_locales ||= begin
    Dir.chdir(vendor_lang_root) do
      Dir.glob('*.json').map do |file|
        file.chomp(File.extname(file)).sub('mosaico-', '').to_sym
      end
    end
  end
end

.find_template(name) ⇒ Object



22
23
24
# File 'lib/mosaico.rb', line 22

def find_template(name)
  templates[name]
end

.localeObject



84
85
86
# File 'lib/mosaico.rb', line 84

def locale
  @locale ||= default_locale
end

.locale=(new_locale) ⇒ Object



88
89
90
91
92
93
94
# File 'lib/mosaico.rb', line 88

def locale=(new_locale)
  @locale = if available_locales.include?(new_locale.to_sym)
    new_locale.to_sym
  else
    default_locale
  end
end

.register_template(name, dir, subdirs: ['edres', 'img'], template_class: Template) ⇒ Object



18
19
20
# File 'lib/mosaico.rb', line 18

def register_template(name, dir, subdirs: ['edres', 'img'], template_class: Template)
  templates[name] = template_class.new(name, dir, subdirs).tap(&:register!)
end

.resolve_asset(asset_path) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/mosaico.rb', line 60

def resolve_asset(asset_path)
  if Rails.application.config.assets.compile
    asset = Rails.application.assets.find_asset(asset_path)

    if Rails.application.config.assets.digest
      asset.try(&:digest_path)
    else
      asset.try(&:logical_path)
    end
  else
    Rails.application.assets_manifest.assets[asset_path]
  end
end

.templatesObject



26
27
28
# File 'lib/mosaico.rb', line 26

def templates
  @templates ||= {}
end

.url_join(*segments) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/mosaico.rb', line 50

def url_join(*segments)
  segments.compact!

  # this regex strips off leading and trailing forward slashes
  joined = segments.map { |p| p.sub(/\A\/?(.*?)\/?\z/, "\\1") }.join('/')

  # handle absolute URLs
  segments.first.start_with?('/') ? "/#{joined}" : joined
end

.vendor_asset_rootObject



30
31
32
33
34
# File 'lib/mosaico.rb', line 30

def vendor_asset_root
  @vendor_asset_root ||= Mosaico::Engine.root.join(
    'vendor', 'assets', "mosaico-#{Mosaico::MOSAICO_VERSION}"
  )
end

.vendor_font_rootObject



44
45
46
47
48
# File 'lib/mosaico.rb', line 44

def vendor_font_root
  @vendor_font_root ||= Mosaico::Engine.root.join(
    'vendor', 'assets', 'fonts'
  )
end

.vendor_lang_rootObject



40
41
42
# File 'lib/mosaico.rb', line 40

def vendor_lang_root
  @vendor_lang_root ||= vendor_asset_root.join('mosaico', 'dist', 'lang')
end

.vendor_template_rootObject



36
37
38
# File 'lib/mosaico.rb', line 36

def vendor_template_root
  @vendor_template_root ||= vendor_asset_root.join('mosaico', 'templates')
end