Пример #1
0
        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);
        }
Пример #2
0
        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));
        }