private static void ComposePage(XDocument pageRoot, XmlNamespaceManager xmlNamespaceManager, PageInformation pageInformation)
{
XElement scriptNode = pageRoot.XPathSelectElement("/xhtml:html/xhtml:head/xhtml:script[@id='constants']", xmlNamespaceManager);
scriptNode.Value = "var constants = { " +
"analyticsId: \"" + pageInformation.AnalyticsServiceId + "\", " +
"airbrakeProjectId: \"" + pageInformation.AirbrakeProjectId + "\", " +
"airbrakeProjectKey: \"" + pageInformation.AirbrakeProjectKey + "\", " +
"airbrakeEnvironmentName: \"" + pageInformation.AirbrakeEnvironmentName + "\", " +
"onedriveClientId: \"" + pageInformation.OneDriveClientID + "\", " +
"cssFileVersion: \"" + pageInformation.CSSFileVersion + "\", " +
"jsFileVersion: \"" + pageInformation.JSFileVersion + "\", " +
"environment: \"" + CurrentEnvironment.ToString() + "\" " +
"};";
if (!string.IsNullOrEmpty(pageInformation.Title))
{
XElement titleNode = pageRoot.XPathSelectElement("/xhtml:html/xhtml:head/xhtml:title", xmlNamespaceManager);
titleNode.Value = string.Format(CultureInfo.InvariantCulture, "{0} - ChronoZoom", pageInformation.Title);
}
if (!string.IsNullOrEmpty(pageInformation.Description))
{
XElement metaDescription = pageRoot.XPathSelectElement("/xhtml:html/xhtml:head/xhtml:meta[@name='Description']", xmlNamespaceManager);
XName contentAttribute = "content";
metaDescription.SetAttributeValue(contentAttribute, pageInformation.Description);
}
XElement lastMetaTag = pageRoot.XPathSelectElement("/xhtml:html/xhtml:head/xhtml:meta[@name='viewport']", xmlNamespaceManager);
int imageCount = 0;
foreach (string image in pageInformation.Images)
{
if (++imageCount > 3) break;
XName metaNode = "meta";
XName linkNode = "link";
lastMetaTag.AddAfterSelf(
new XElement(
linkNode,
new XAttribute("rel", "image_src"),
new XAttribute("href", image)
),
new XElement(
metaNode,
new XAttribute("property", "og:image"),
new XAttribute("content", image)
)
);
}
}
}