Example #1
0
        public ScriptTag(string mode, Func<string, string> toFullUrl, Asset asset, string defaultUrl = null)
            : base("script")
        {
            // http://stackoverflow.com/a/1288319/75194 
            Attr("type", "text/javascript");

            if (asset == null)
            {
                Attr("src", toFullUrl(defaultUrl));
                return;
            }

            if (asset.CdnUrl.IsNotEmpty())
            {
                Attr("src", asset.CdnUrl);
                if (asset.FallbackTest.IsNotEmpty() && asset.File != null)
                {
                    Next = new HtmlTag("script");
                    var text = "if ({0}) document.write(unescape(\"%3Cscript src='{1}' type='text/javascript'%3E%3C/script%3E\"));".ToFormat(asset.FallbackTest, asset.Url);

                    Next.Encoded(false);
                    Next.Text(text);
                }

                return;
            }

            var url = asset.Url;
            if (mode.InDevelopment() && asset.File != null)
            {
                url += "?Etag=" + asset.File.Etag();
            }

            Attr("src", toFullUrl(url));
        }
        public DashboardModel get__fubu()
        {
            var files = _files.FindFiles(FileSet.Deep("fubu-diagnostics/*.html"));
            var htmlTags = files.Select(x => {
                var contents = x.ReadContents();
                var tag = new HtmlTag("div").Id(Path.GetFileNameWithoutExtension(x.Path));
                tag.Encoded(false);
                tag.Text(contents);
                tag.Hide();
                tag.AddClass("left-content");

                return tag;
            }).ToArray();

            var allJS = findAssets(MimeType.Javascript).ToArray();
            var javascript = allJS.Where(x => !x.Filename.Contains(".jsx."));
            var react = allJS.Where(x => x.Filename.Contains(".jsx."));

            return new DashboardModel
            {
                StyleTags = findAssets(MimeType.Css).Select(x => new StylesheetLinkTag(_request.ToFullUrl(x.Url))).ToArray().ToTagList(),
                ScriptTags = javascript.Select(x => new ScriptTag(_ => _request.ToFullUrl(_), x)).ToArray().ToTagList(),
                Router = _routeWriter.WriteJavascriptRoutes("FubuDiagnostics.routes", _routes),
                ReactTags = react.Select(x => new ScriptTag(_ => _request.ToFullUrl(_), x).Attr("type", "text/jsx")).ToArray().ToTagList(),
                HtmlTags = htmlTags.ToTagList()
            };
        }