public string _OutputForPageFilter_Old() { string cacheTimestamp = getOutputCacheTimestamp(); StringBuilder html = new StringBuilder(); string EOL = Environment.NewLine; // A: put CSS files and style statements first so that scripts can reference them: http://code.google.com/speed/page-speed/docs/rendering.html#PutCSSInHead // -- 1: CSS Files // note: do NOT use @import rule foreach (CSSGroup cssGroup in Enum.GetValues(typeof(CSSGroup))) { foreach (string css in cssFilePaths_Aggregate[cssGroup]) { html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + getOutputUrl(css, cacheTimestamp) + "\" />" + EOL); } } // -- 2: Style statements if (styleStatements.Count > 0) { html.Append("<style type=\"text/css\">" + EOL); foreach (string s in styleStatements) { html.Append(s + EOL); } html.Append(EOL + "</style>" + EOL); } // B: Javascript files should be placed before javascript statements (http://code.google.com/speed/page-speed/docs/rtt.html#PutStylesBeforeScripts) // -- 3: Javascript files foreach (JavascriptGroup jsGroup in Enum.GetValues(typeof(JavascriptGroup))) { foreach (string js in jsFilePaths_Aggregate[jsGroup]) { html.Append("<script src=\"" + getOutputUrl(js, cacheTimestamp) + "\" type=\"text/javascript\"></script>" + EOL); } } bool scriptTagStarted = false; // -- 4: Javascript Statements if (jsStatements.Count > 0) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; foreach (string js in jsStatements) { html.Append(js + EOL + EOL); } // foreach } // -- 5: Javascript On Ready if (jqueryIsIncluded() && jsOnReadyStatements.Count > 0) { if (!scriptTagStarted) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; } html.Append("$(document).ready(function() {" + EOL); foreach (string js in jsOnReadyStatements) { html.Append(js + EOL + EOL); } // foreach html.Append("});" + EOL); } else if (mooToolsIsIncluded() && jsOnReadyStatements.Count > 0) { // window.addEvent('domready', function(){ if (!scriptTagStarted) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; } html.Append("window.addEvent('domready', function(){" + EOL); foreach (string js in jsOnReadyStatements) { html.Append(js + EOL + EOL); } // foreach html.Append("});" + EOL); } else if (jsOnReadyStatements.Count > 0) { string onLoadFunctionName = "hatCms_pageLoad"; if (!scriptTagStarted) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; } html.Append("function " + onLoadFunctionName + "() {" + EOL); foreach (string js in jsOnReadyStatements) { html.Append(js + EOL + EOL); } // foreach html.Append("} // " + onLoadFunctionName + "()" + EOL); html.Append(CmsPageHeadSection.getOnloadJavascript(onLoadFunctionName)); html.Append(EOL); } if (scriptTagStarted) { html.Append("</script>" + EOL); } html.Append("</head>" + EOL); return(html.ToString()); } // ToHtml
private string _OutputForPageFilter() { StringBuilder html = new StringBuilder(); string EOL = Environment.NewLine; string fileTimestamp = getOutputCacheTimestamp(); // -- 1: output CSS files Array enumVals = Enum.GetValues(typeof(CSSGroup)); // this returns an unsorted list. Array.Sort(enumVals); foreach (CSSGroup cssGroup in enumVals) { // - first: external CSS files string[] externalCssUrls = getExternalUrls(cssFilePaths_Aggregate[cssGroup]); foreach (string externalCssUrl in externalCssUrls) { html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + externalCssUrl + "\" />" + EOL); } // - second: internal (combined) CSS files string localCssUrl = combineInternalCssFiles(cssGroup, cssFilePaths_Aggregate[cssGroup], this.cssEmbeddedResources[cssGroup]); if (localCssUrl != "") { html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + localCssUrl + "\" />" + EOL); } // - third: non-combined CSS files foreach (string rawCssUrl in cssFilePaths_DoNotAggregate[cssGroup]) { html.Append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + getOutputUrl(rawCssUrl, fileTimestamp) + "\" />" + EOL); } } // -- Style statements // Q: should style statements be combined into the CSSGroup.FrontEnd file? if (styleStatements.Count > 0) { html.Append("<style type=\"text/css\">" + EOL); foreach (string s in styleStatements) { html.Append(s + EOL); } html.Append(EOL + "</style>" + EOL); } // -- output Javascript files Array jsEnumVals = Enum.GetValues(typeof(JavascriptGroup)); // this returns an unsorted list. Array.Sort(jsEnumVals); foreach (JavascriptGroup jsGroup in jsEnumVals) { // - first: external JS files string[] externalJsUrls = getExternalUrls(jsFilePaths_Aggregate[jsGroup]); foreach (string externalJsUrl in externalJsUrls) { html.Append("<script src=\"" + externalJsUrl + "\" type=\"text/javascript\"></script>" + EOL); } // - second: internal (combined) JS files string localJsUrl = combineInternalJsFiles(jsGroup, jsFilePaths_Aggregate[jsGroup], this.jsEmbeddedResources[jsGroup]); if (localJsUrl != "") { html.Append("<script src=\"" + localJsUrl + "\" type=\"text/javascript\"></script>" + EOL); } // - third: non-combined JS files foreach (string rawJsUrl in jsFilePaths_DoNotAggregate[jsGroup]) { html.Append("<script src=\"" + getOutputUrl(rawJsUrl, fileTimestamp) + "\" type=\"text/javascript\"></script>" + EOL); } } bool scriptTagStarted = false; // -- 4: Javascript Statements if (jsStatements.Count > 0) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; foreach (string js in jsStatements) { html.Append(js + EOL + EOL); } // foreach } // -- 5: Javascript On Ready if (jqueryIsIncluded() && jsOnReadyStatements.Count > 0) { if (!scriptTagStarted) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; } html.Append("$(document).ready(function() {" + EOL); foreach (string js in jsOnReadyStatements) { html.Append(js + EOL + EOL); } // foreach html.Append("});" + EOL); } else if (mooToolsIsIncluded() && jsOnReadyStatements.Count > 0) { // window.addEvent('domready', function(){ if (!scriptTagStarted) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; } html.Append("window.addEvent('domready', function(){" + EOL); foreach (string js in jsOnReadyStatements) { html.Append(js + EOL + EOL); } // foreach html.Append("});" + EOL); } else if (jsOnReadyStatements.Count > 0) { string onLoadFunctionName = "hatCms_pageLoad"; if (!scriptTagStarted) { html.Append("<script type=\"text/javascript\">" + EOL); scriptTagStarted = true; } html.Append("function " + onLoadFunctionName + "() {" + EOL); foreach (string js in jsOnReadyStatements) { html.Append(js + EOL + EOL); } // foreach html.Append("} // " + onLoadFunctionName + "()" + EOL); html.Append(CmsPageHeadSection.getOnloadJavascript(onLoadFunctionName)); html.Append(EOL); } if (scriptTagStarted) { html.Append("</script>" + EOL); } html.Append("</head>" + EOL); return(html.ToString()); }