class Jekyll::AttendeasePlugin::BlockRendererTag

Public Class Methods

new(tag_name, url_override, tokens) click to toggle source
Calls superclass method
# File lib/jekyll/attendease_plugin/tags.rb, line 146
def initialize(tag_name, url_override, tokens)
  super
  @url_override = url_override
end

Public Instance Methods

render(context) click to toggle source
# File lib/jekyll/attendease_plugin/tags.rb, line 151
      def render(context)
        config = context.registers[:site].config['attendease']
        site_settings = context.registers[:site].data['site_settings'].clone
        analytics = site_settings.delete 'analytics'
        site_settings.delete_if {|key, value| ['analytics', 'meta', 'general'].include? key }

        organization_site_settings = {}
        if context.registers[:site].data['organization_site_settings']
          organization_site_settings = context.registers[:site].data['organization_site_settings'].clone
          organization_site_settings.delete_if {|key, value| ['analytics', 'meta', 'general'].include? key }
        end

        parent_pages_are_clickable = config['parent_pages_are_clickable']

        pages = Helpers.public_pages(context.registers[:site].data['pages'])

        portal_pages = Helpers.public_pages(context.registers[:site].data['portal_pages']) || []
        env = config['environment']

        # IMPORTANT NOTE: The script variables below must NOT be changed without making sure that blockrenderer.js and other
        # related code in the platform is backwards-compatible.

        if config['mode'] == 'organization'
          constants = {
            'locale' => 'en',
            'siteName' => config['organization_name'],
            'orgURL' => config['api_host'],
            'orgId' => config['source_id'],
            'privateSite' => config['private_site'],
            'authApiEndpoint' => "#{config['auth_host']}api",
            'orgLocales' => config['available_portal_locales'],
            'features' => config['features'],
            'pages' => pages,
            'settings' => { parentPagesAreClickable: !!parent_pages_are_clickable },
            'siteSettings' => site_settings,
            'analytics' => analytics,
            'basePath' => config['base_path']
          }
        else
          constants = {
            'locale' => config['locale'],
            'siteName' => config['data']['event_name'],
            'eventApiEndpoint' => "#{config['api_host']}api",
            'eventId' => config['source_id'],
            'orgURL' => config['organization_url'],
            'orgId' => config['organization_id'],
            'privateSite' => config['private_site'],
            'authApiEndpoint' => "#{config['auth_host']}api",
            'features' => config['features'],
            'pages' => pages,
            'portalPages' => portal_pages,
            'settings' => { parentPagesAreClickable: !!parent_pages_are_clickable },
            'siteSettings' => site_settings,
            'organizationSiteSettings' => organization_site_settings,
            'analytics' => analytics,
            'basePath' => config['base_path']
        }
        end

        script = <<_EOT
<script type="text/javascript">
(function(w) {
  w.AttendeaseConstants = {
#{ constants.map{ |k, v| "    #{k}: #{v.to_json}," }.join("\n") }
  }
})(window)
</script>

_EOT

        if @url_override.match(/^(https:)?\/\/.+/)
          url = @url_override
        else
          case env
          when 'development'
            url = '//dashboard.localhost.attendease.com/webpack_assets/blockrenderer.bundle.js'
          when 'prerelease'
            url = '//pre-attendease-aws-ecs-f-attendeaseawsecsfargateb-1h2p9edu0fy26.s3.us-west-2.amazonaws.com/blockrenderer/latest.js'
          when 'staging'
            url = '//stg-attendease-aws-ecs-f-attendeaseawsecsfargateb-gzsa0k25dvzq.s3.us-west-2.amazonaws.com/blockrenderer/latest.js'
          when 'sandbox'
            #TODO update Sandbox blockrenderer when we move Sandbox to ECS
            url = '//sbx-attendease-aws-ecs-f-attendeaseawsecsfargateb-1c7flm8y8j77m.s3.us-west-2.amazonaws.com/blockrenderer/latest.js'
          else
            url = '//cdn.attendease.com/blockrenderer/latest.js'
          end
        end

        script << <<_EOT
<script type="text/javascript" src="#{ url }"></script>
_EOT

        script
      end