internal static TranslatedContent GetTranslatedContent(int bookId, string pCode, int pPos) { var context = ApplicationDbContext.Create(); TranslatedContent content = context.TranslatedContents.FirstOrDefault(x => x.BookId == bookId && x.Code == pCode && x.Location == pPos); return(content); }
public ActionResult Read(int Id, string code) { ContentViewModel c = UIHelper.GetContentView(Id, code); ContentViewModel prev = UIHelper.GetPrevContent(c); ContentViewModel next = UIHelper.GetNextContent(c); ViewBag.NextContent = next; ViewBag.PrevContent = prev; ViewBag.BookCSS = c.Book.CSSURL; ViewBag.BookCustomCss = c.Book.CustomCSS; ViewBag.BookId = c.BookId; c.HTML = CompressHelper.DecompressString(c.HTML); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(c.HTML); var ps = doc.DocumentNode.Descendants("p").Where(x => x.Id.Contains("|")); foreach (var p in ps.ToList()) { string pCode = p.Id.Split('|')[0]; int pPos = int.Parse(p.Id.Split('|')[1]); TranslatedContent translated = DBHelper.GetTranslatedContent(c.BookId, pCode, pPos); if (translated != null) { p.ParentNode.ReplaceChild(HtmlNode.CreateNode(translated.Data), p); } } c.HTML = Regex.Replace(doc.DocumentNode.OuterHtml, "href=\"(.+?)\\.(xhtml|html|htm)(#.+?)?\"", "href=\"" + Id + "?code=$1$3\""); return(View(c)); }