async Task SendPage(String pageContent) { AppTitleModel appTitle = await _dbContext.LoadAsync <AppTitleModel>(_host.CatalogDataSource, "a2ui.[AppTitle.Load]"); StringBuilder layout = new StringBuilder(_localizer.Localize(null, ResourceHelper.InitLayoutHtml)); layout.Replace("$(Lang)", CurrentLang); layout.Replace("$(Build)", _host.AppBuild); layout.Replace("$(AssetsStyleSheets)", _host.AppStyleSheetsLink("applink")); layout.Replace("$(LayoutHead)", _host.CustomAppHead()); layout.Replace("$(LayoutScripts)", _host.CustomAppScripts()); layout.Replace("$(Partial)", pageContent); layout.Replace("$(Title)", appTitle.AppTitle); layout.Replace("$(Description)", _host.AppDescription); StringBuilder script = new StringBuilder(ResourceHelper.AppLinksScript); script.Replace("$(PageData)", $"{{ version: '{_host.AppVersion}', title: '{appTitle?.AppTitle}', subtitle: '{appTitle?.AppSubTitle}', multiTenant: false, registation: false }}"); script.Replace("$(Locale)", ResourceHelper.Locale); script.Replace("$(Utils)", ResourceHelper.PageUtils); script.Replace("$(AppLinks)", _localizer.Localize(null, _host.AppLinks())); layout.Replace("$(PageScript)", script.ToString()); Response.Write(layout.ToString()); }
public static void ReplaceMacros(this IApplicationHost host, StringBuilder sb) { sb.Replace("$(Build)", host.AppBuild); sb.Replace("$(LayoutHead)", host.CustomAppHead()); sb.Replace("$(AppleTouchIcon)", host.AppleTouchIcon()); sb.Replace("$(LayoutManifest)", host.CustomManifest()); sb.Replace("$(AssetsStyleSheets)", host.AppStyleSheetsLink("applink")); sb.Replace("$(HelpUrl)", host.HelpUrl); sb.Replace("$(Description)", host.AppDescription); var theme = host.Theme; sb.Replace("$(ColorScheme)", theme?.ColorScheme ?? null); sb.Replace("$(Theme)", theme?.FileName ?? null); }
void SendPage(String rsrcHtml, String rsrcScript, String serverInfo = null, String errorMessage = null) { try { AntiForgery.GetTokens(null, out String cookieToken, out String formToken); AppTitleModel appTitle = _dbContext.Load <AppTitleModel>(_host.CatalogDataSource, "a2ui.[AppTitle.Load]"); var layoutHtml = _host.Mobile ? ResourceHelper.InitLayoutMobileHtml : ResourceHelper.InitLayoutHtml; StringBuilder layout = new StringBuilder(_localizer.Localize(null, GetRedirectedPage("layout", layoutHtml))); layout.Replace("$(Lang)", CurrentLang); layout.Replace("$(Build)", _host.AppBuild); layout.Replace("$(AssetsStyleSheets)", _host.AppStyleSheetsLink("applink")); StringBuilder html = new StringBuilder(rsrcHtml); layout.Replace("$(Partial)", html.ToString()); layout.Replace("$(Title)", appTitle?.AppTitle); layout.Replace("$(HelpUrl)", _host.HelpUrl); layout.Replace("$(Description)", _host.AppDescription); layout.Replace("$(ErrorMessage)", _localizer.Localize(null, errorMessage)); layout.Replace("$(SiteMeta)", Request.GetSiteMetaTags(_host)); layout.Replace("$(LayoutManifest)", _host.CustomManifest()); String mtMode = _host.IsMultiTenant.ToString().ToLowerInvariant(); String regMode = _host.IsRegistrationEnabled.ToString().ToLowerInvariant(); StringBuilder script = new StringBuilder(rsrcScript); script.Replace("$(Utils)", ResourceHelper.PageUtils); script.Replace("$(Locale)", ResourceHelper.Locale); script.Replace("$(Mask)", ResourceHelper.Mask); script.Replace("$(PageData)", $"{{ version: '{_host.AppVersion}', title: '{appTitle?.AppTitle}', subtitle: '{appTitle?.AppSubTitle}', multiTenant: {mtMode}, registration: {regMode} }}"); script.Replace("$(AppLinks)", _localizer.Localize(null, _host.AppLinks())); script.Replace("$(ServerInfo)", serverInfo ?? "null"); script.Replace("$(Token)", formToken); layout.Replace("$(PageScript)", script.ToString()); Response.Cookies.Add(new HttpCookie(AntiForgeryConfig.CookieName, cookieToken)); Response.Write(layout.ToString()); } catch (Exception ex) { Response.Write(ex.Message); } }