module HtmlGrid::DojoToolkit::DojoTemplate

Constants

DOJO_BACK_BUTTON
DOJO_DEBUG
DOJO_ENCODING
DOJO_PARSE_ON_LOAD
DOJO_PREFIX
DOJO_REQUIRE

Public Instance Methods

dojo_parse_on_load() click to toggle source
# File lib/htmlgrid/dojotoolkit.rb, line 152
def dojo_parse_on_load
  self.class::DOJO_PARSE_ON_LOAD
end
dynamic_html_headers(context) click to toggle source
Calls superclass method
# File lib/htmlgrid/dojotoolkit.rb, line 89
      def dynamic_html_headers(context)
        headers = super
        encoding = self.class::DOJO_ENCODING
        encoding ||= Encoding.default_external
        dojo_path = @lookandfeel.resource_global(:dojo_js)
        dojo_path ||= "/resources/dojo/dojo/dojo.js"
        args = {"type" => "text/javascript"}
        packages = ""
        unless self.class::DOJO_PREFIX.empty?
          packages = self.class::DOJO_PREFIX.collect { |prefix, path|
            "{ name: '#{prefix}', location: '#{path}' }"
          }.join(",")
        end
        config = [
          "parseOnLoad:          #{self.class::DOJO_PARSE_ON_LOAD}",
          "isDebug:              #{self.class::DOJO_DEBUG}",
          "preventBackButtonFix: #{!self.class::DOJO_BACK_BUTTON}",
          "bindEncoding:         '#{encoding}'",
          "searchIds:            []",
          "urchin:               ''",
          "has: {
             'dojo-firebug':        #{self.class::DOJO_DEBUG},
             'dojo-debug-messages': #{self.class::DOJO_DEBUG}
          }",
          "packages: [ #{packages} ]"
        ].join(",")
        args.store("data-dojo-config", config)
        args.store("src", dojo_path)
        headers << context.script(args)
        args = {"type" => "text/javascript"}
        headers << context.script(args) {
          package_paths = self.class::DOJO_REQUIRE.map { |req|
            "'#{req}'"
          }.join(",")
          package_names = self.class::DOJO_REQUIRE.map { |req|
            req.split("/").last
          }.join(",")
          if @dojo_onloads
            onloads = ""
            @dojo_onloads.each { |onload|
              onloads << "#{onload}\n"
            }
            script =
              "require([#{package_paths}], function(#{package_names}) {" \
                "ready(function() {" \
                  "#{onloads}" \
                "});" \
              "});"
          else
            script = "require([#{package_paths}]);"
          end
          script
        }
        dojo_dir = File.dirname(dojo_path)
        headers << context.style(type: "text/css") {
          <<-EOS
          @import "#{File.join(dojo_dir, "/resources/dojo.css")}";
          @import "#{File.join(dojo_dir, "../dijit/themes/tundra/tundra.css")}";
          EOS
        }
        headers
      end
onload=(script) click to toggle source
# File lib/htmlgrid/dojotoolkit.rb, line 156
def onload=(script)
  (@dojo_onloads ||= []).push(script)
end