private bool UpdateSummaryPage(IEnumerable<IProjectPage> pages, PageSummary summary) { var updated = new PageDocument(); var tbody = new XElement( "tbody", new XElement( "tr", new XElement("th", "Area"), new XElement("th", "Project"), new XElement("th", "Type"), new XElement("th", ".NET"), new XElement("th", "Owner"), new XElement("th", "Status"))); foreach (var page in pages.OrderBy(p => p.OrderKey)) { tbody.Add(page.RenderSummaryRow(false)); } updated.Root.Add( new XElement( "table", tbody)); var content = updated.Render(); var existing = m_confluence.GetCachedPage(summary); var before = NormalizeForComparison(existing.Content); var after = NormalizeForComparison(content); if (after == before) return false; existing.Content = content; m_confluence.UpdatePage(existing); return true; }
private string NormalizeForComparison(string content) { var doc = new PageDocument(content); var macros = doc.Root.XElements("//ac:structured-macro").ToList(); foreach (var macro in macros) { macro.XAttribute("ac:macro-id").RemoveIfExists(); macro.XAttribute("ac:schema-version").RemoveIfExists(); } return doc.Render(); }