Esempio n. 1
0
 /// <summary>
 /// Setup RequireJS to be used in layouts
 /// </summary>
 /// <example>
 /// @Html.RenderRequireJsSetup(Url.Content("~/Scripts"), Url.Content("~/Scripts/require.js"), "~/RequireJS.release.config")
 /// </example>
 /// <param name="baseUrl">Scrips folder</param>
 /// <param name="requireUrl">requirejs.js url</param>
 /// <param name="configPath">RequireJS.config server local path</param>
 public static MvcHtmlString RenderRequireJsSetup(this HtmlHelper html, string baseUrl, string requireUrl,
                                                  string configPath = "", IRequireJsLogger logger = null)
 {
     return(html.RenderRequireJsSetup(baseUrl, requireUrl, new List <string> {
         configPath
     }, logger));
 }
Esempio n. 2
0
        /// <summary>
        /// Setup RequireJS to be used in layouts
        /// </summary>
        /// <param name="baseUrl">Scrips folder</param>
        /// <param name="requireUrl">requirejs.js url</param>
        /// <param name="configsList">RequireJS.config files path</param>
        public static MvcHtmlString RenderRequireJsSetup(this HtmlHelper html, string baseUrl, string requireUrl,
                                                         IList <string> configsList, IRequireJsLogger logger = null)
        {
            var entryPointPath = html.RequireJsEntryPoint();

            if (entryPointPath == null)
            {
                return(new MvcHtmlString(string.Empty));
            }

            if (!configsList.Any())
            {
                throw new Exception("No config files to load.");
            }
            var processedConfigs = configsList.Select(r =>
            {
                var resultingPath = html.ViewContext.HttpContext.MapPath(r);
                PathHelpers.VerifyFileExists(resultingPath);
                return(resultingPath);
            }).ToList();

            var loader          = new ConfigLoader(processedConfigs, logger);
            var resultingConfig = loader.Get();
            var outputConfig    = new JsonConfig
            {
                BaseUrl = baseUrl,
                Locale  = html.CurrentCulture(),
                Paths   = resultingConfig.Paths.PathList.ToDictionary(r => r.Key, r => r.Value),
                Shim    = resultingConfig.Shim.ShimEntries.ToDictionary(r => r.For, r => new JsonRequireDeps
                {
                    Dependencies = r.Dependencies.Select(x => x.Dependency).ToList(),
                    Exports      = r.Exports
                }),
                Map = resultingConfig.Map.MapElements.ToDictionary(r => r.For,
                                                                   r => r.Replacements.ToDictionary(x => x.OldKey, x => x.NewKey))
            };

            var options = new JsonRequireOptions
            {
                Locale         = html.CurrentCulture(),
                PageOptions    = html.ViewBag.PageOptions,
                WebsiteOptions = html.ViewBag.GlobalOptions
            };

            var configBuilder = new JavaScriptBuilder();

            configBuilder.AddStatement(JavaScriptHelpers.SerializeAsVariable(options, "requireConfig"));
            configBuilder.AddStatement(JavaScriptHelpers.SerializeAsVariable(outputConfig, "require"));

            var requireRootBuilder = new JavaScriptBuilder();

            requireRootBuilder.AddAttributesToStatement("data-main", entryPointPath.ToString());
            requireRootBuilder.AddAttributesToStatement("src", requireUrl);

            return(new MvcHtmlString(configBuilder.Render() + requireRootBuilder.Render()));
        }
 /// <summary>
 /// Setup RequireJS to be used in layouts
 /// </summary>
 /// <param name="html">
 /// The html.
 /// </param>
 /// <param name="baseUrl">
 /// scripts base url
 /// </param>
 /// <param name="requireUrl">
 /// requirejs.js url
 /// </param>
 /// <param name="configsList">
 /// RequireJS.config files path
 /// </param>
 /// <param name="entryPointRoot">
 /// Scripts folder relative path ex. ~/Scripts/
 /// </param>
 /// <param name="logger">
 /// The logger.
 /// </param>
 /// <returns>
 /// The <see cref="MvcHtmlString"/>.
 /// </returns>
 public static MvcHtmlString RenderRequireJsSetup(
     this HtmlHelper html,
     string baseUrl,
     string requireUrl,
     IList <string> configsList,
     string entryPointRoot   = "~/Scripts/",
     IRequireJsLogger logger = null,
     bool loadOverrides      = true)
 {
     return(html.RenderRequireJsSetup(baseUrl, requireUrl, null, configsList, entryPointRoot, logger, loadOverrides));
 }
        /// <summary>
        /// Setup RequireJS to be used in layouts
        /// </summary>
        /// <example>
        /// @Html.RenderRequireJsSetup(Url.Content("~/Scripts"), Url.Content("~/Scripts/require.js"), "~/RequireJS.release.config")
        /// </example>
        /// <param name="html">
        /// HtmlHelper instance
        /// </param>
        /// <param name="baseUrl">
        /// scripts base url
        /// </param>
        /// <param name="requireUrl">
        /// requirejs.js url
        /// </param>
        /// <param name="urlArgs">
        /// url arguments
        /// </param>
        /// <param name="configPath">
        /// RequireJS.config server local path
        /// </param>
        /// <param name="entryPointRoot">
        /// Scripts folder relative path ex. ~/Scripts/
        /// </param>
        /// <param name="logger">
        /// Logger to output errors
        /// </param>
        /// <returns>
        /// The resulting <see cref="MvcHtmlString"/>.
        /// </returns>
        public static MvcHtmlString RenderRequireJsSetup(
            this HtmlHelper html,
            string baseUrl,
            string requireUrl,
            string urlArgs          = "",
            string configPath       = "",
            string entryPointRoot   = "~/Scripts/",
            IRequireJsLogger logger = null,
            bool loadOverrides      = true)
        {
            if (string.IsNullOrEmpty(configPath))
            {
                configPath = DefaultConfigPath;
            }

            return(html.RenderRequireJsSetup(baseUrl, requireUrl, urlArgs, new List <string> {
                configPath
            }, entryPointRoot, logger, loadOverrides));
        }
Esempio n. 5
0
 public ConfigLoader(IList <string> paths, IRequireJsLogger logger)
 {
     this.paths  = paths;
     this.logger = logger ?? new ExceptionThrowingLogger();
 }
 public ConfigLoader(IList<string> paths, IRequireJsLogger logger)
 {
     this.paths = paths;
     this.logger = logger ?? new ExceptionThrowingLogger();
 }
Esempio n. 7
0
 public ConfigLoader(List<string> paths, IRequireJsLogger logger, ConfigLoaderOptions options = null)
 {
     this.paths = paths;
     this.logger = logger ?? new ExceptionThrowingLogger();
     this.options = options ?? new ConfigLoaderOptions();
 }
Esempio n. 8
0
 public ConfigLoader(List <string> paths, IRequireJsLogger logger, ConfigLoaderOptions options = null)
 {
     this.paths   = paths;
     this.logger  = logger ?? new ExceptionThrowingLogger();
     this.options = options ?? new ConfigLoaderOptions();
 }