/// <summary> /// Prints the history. /// </summary> public void PrintHistory() { if (page == null) { return; } StringBuilder sb = new StringBuilder(); if (Request["Revision"] == null) { // Show version list List <int> revisions = Pages.GetBackups(page); revisions.Reverse(); List <RevisionRow> result = new List <RevisionRow>(revisions.Count + 1); result.Add(new RevisionRow(-1, Content.GetPageContent(page, false), false)); foreach (int rev in revisions) { PageContent content = Pages.GetBackupContent(page, rev); result.Add(new RevisionRow(rev, content, canRollback)); } rptHistory.DataSource = result; rptHistory.DataBind(); } else { int rev = -1; if (!int.TryParse(Request["Revision"], out rev)) { UrlTools.Redirect(page.FullName + Settings.PageExtension); } List <int> backups = Pages.GetBackups(page); if (!backups.Contains(rev)) { UrlTools.Redirect(page.FullName + Settings.PageExtension); return; } PageContent revision = Pages.GetBackupContent(page, rev); sb.Append(@"<table class=""box"" cellpadding=""0"" cellspacing=""0""><tr><td>"); sb.Append(@"<p style=""text-align: center;""><b>"); if (rev > 0) { sb.Append(@"<a href="""); UrlTools.BuildUrl(sb, "History.aspx?Page=", Tools.UrlEncode(page.FullName), "&Revision=", Tools.GetVersionString((int)(rev - 1))); sb.Append(@""">« "); sb.Append(Properties.Messages.OlderRevision); sb.Append("</a>"); } else { sb.Append("« "); sb.Append(Properties.Messages.OlderRevision); } sb.Append(@" - <a href="""); UrlTools.BuildUrl(sb, "History.aspx?Page=", Tools.UrlEncode(page.FullName)); sb.Append(@""">"); sb.Append(Properties.Messages.BackToHistory); sb.Append("</a> - "); if (rev < backups.Count - 1) { sb.Append(@"<a href="""); UrlTools.BuildUrl(sb, "History.aspx?Page=", Tools.UrlEncode(page.FullName), "&Revision=", Tools.GetVersionString((int)(rev + 1))); sb.Append(@""">"); sb.Append(Properties.Messages.NewerRevision); sb.Append(" »</a>"); } else { sb.Append(@"<a href="""); UrlTools.BuildUrl(sb, Tools.UrlEncode(page.FullName), Settings.PageExtension); sb.Append(@""">"); sb.Append(Properties.Messages.CurrentRevision); sb.Append("</a>"); } sb.Append("</b></p></td></tr></table><br />"); sb.Append(@"<h3 class=""separator"">"); sb.Append(Properties.Messages.PageRevision); sb.Append(": "); sb.Append(Preferences.AlignWithTimezone(revision.LastModified).ToString(Settings.DateTimeFormat)); sb.Append("</h3><br />"); sb.Append(FormattingPipeline.FormatWithPhase3(FormattingPipeline.FormatWithPhase1And2(revision.Content, false, FormattingContext.PageContent, page).Replace(Formatter.EditSectionPlaceHolder, ""), FormattingContext.PageContent, page)); } lblHistory.Text = sb.ToString(); }