public FileResult ContentExport(Guid? id, Guid? node, bool? comment, string datebegin, string dateend, string exportwhat) {
Guid guidContentID = id ?? Guid.Empty;
Guid guidNodeID = node ?? Guid.Empty;
bool bExportComments = comment ?? false;
DateTime dateBegin = DateTime.MinValue;
DateTime dateEnd = DateTime.MaxValue;
SiteExport.ExportType ExportWhat = SiteExport.ExportType.AllData;
if (!String.IsNullOrEmpty(datebegin)) {
dateBegin = Convert.ToDateTime(datebegin).Date;
}
if (!String.IsNullOrEmpty(dateend)) {
dateEnd = Convert.ToDateTime(dateend).Date;
}
if (!String.IsNullOrEmpty(exportwhat)) {
ExportWhat = (SiteExport.ExportType)Enum.Parse(typeof(SiteExport.ExportType), exportwhat, true);
}
string theXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
string fileName = "export.xml";
if (guidContentID != Guid.Empty) {
ContentPageExport content = ContentImportExportUtils.GetExportPage(SiteData.CurrentSiteID, guidContentID);
theXML = ContentImportExportUtils.GetExportXML<ContentPageExport>(content);
fileName = String.Format("page_{0}_{1}", content.ThePage.NavMenuText, guidContentID);
} else {
SiteExport site = ContentImportExportUtils.GetExportSite(SiteData.CurrentSiteID, ExportWhat);
site.ThePages.RemoveAll(x => x.ThePage.GoLiveDate < dateBegin);
site.ThePages.RemoveAll(x => x.ThePage.GoLiveDate > dateEnd);
if (guidNodeID != Guid.Empty) {
List<Guid> lst = pageHelper.GetPageHierarchy(SiteData.CurrentSiteID, guidNodeID);
site.ThePages.RemoveAll(x => !lst.Contains(x.OriginalRootContentID) && x.ThePage.ContentType == ContentPageType.PageType.ContentEntry);
}
if (ExportWhat == SiteExport.ExportType.BlogData) {
site.ThePages.RemoveAll(x => x.ThePage.ContentType == ContentPageType.PageType.ContentEntry);
}
if (ExportWhat == SiteExport.ExportType.ContentData) {
site.ThePages.RemoveAll(x => x.ThePage.ContentType == ContentPageType.PageType.BlogEntry);
}
if (bExportComments) {
site.LoadComments();
}
theXML = ContentImportExportUtils.GetExportXML<SiteExport>(site);
fileName = String.Format("site_{0}_{1}", site.TheSite.SiteName, site.TheSite.SiteID);
}
fileName = String.Format("{0}-{1:yyyy-MM-dd}.xml", fileName, SiteData.CurrentSite.Now).Replace(" ", "_");
return File(Encoding.UTF8.GetBytes(theXML), "application/octet-stream", fileName);
}