public IEnumerable <Models.Page> ByHtmlBlock(HtmlBlock htmlBlock) { return(AllPagesNested(htmlBlock.Site).Select(it => it.AsActual()) .Where(it => it.PagePositions != null && it.PagePositions.Any(p => p is HtmlBlockPosition && ((HtmlBlockPosition)p).BlockName.EqualsOrNullEmpty(htmlBlock.Name, StringComparison.CurrentCultureIgnoreCase))) .ToArray()); }
private IEnumerable <View> Render(HtmlBlock block) { if (block.Type == HtmlBlockType.NonInterruptingBlock || block.Type == HtmlBlockType.Comment) { var tag = block.Lines.Lines.FirstOrDefault().Slice.ToString(); if (tag == "<!--br-->" || tag == "<br>") { var label = new Label { Text = "\n", }; return(new View[] { label }); } else { // ? } } else { // ? } // ? return(null); }
public void HtmlBlockNoTitle() { var block = new HtmlBlock(); var title = block.GetTitle(); Assert.Equal("Empty", title); }
public virtual ActionResult Versions(string uuid) { var htmlBlock = new HtmlBlock(Site, uuid); var model = VersionManager.AllVersions <HtmlBlock>(htmlBlock); return(View(model)); }
public virtual ActionResult PreviewVersion(string uuid, int version) { var htmlBlock = new HtmlBlock(Site, uuid); var model = VersionManager.GetVersion <HtmlBlock>(htmlBlock, version); return(View(model)); }
public virtual ActionResult PreviewVersion(string name, int version) { var page = new HtmlBlock(Site, name); var model = Manager.VersiongLogger.GetVersion(page, version); return(View(model)); }
public virtual ActionResult Version(string name) { var htmlBlock = new HtmlBlock(Site, name); var model = Manager.VersiongLogger.AllVersions(htmlBlock); return(View(model)); }
public void Localize(HtmlBlock o, Site targetSite) { var htmlBlock = Get(o); htmlBlock.Site = targetSite; InsertOrUpdate(htmlBlock, htmlBlock); }
public Task <Either <ActionResult, IContentBlockViewModel> > UpdateTextBasedContentBlock( Guid releaseId, Guid contentSectionId, Guid contentBlockId, ContentBlockUpdateRequest request) { return(CheckContentSectionExists(releaseId, contentSectionId) .OnSuccess(CheckCanUpdateRelease) .OnSuccess(async tuple => { var(_, section) = tuple; var blockToUpdate = section.Content.Find(block => block.Id == contentBlockId); if (blockToUpdate == null) { return NotFound <IContentBlockViewModel>(); } return blockToUpdate switch { MarkDownBlock markDownBlock => await UpdateMarkDownBlock(markDownBlock, request.Body), HtmlBlock htmlBlock => await UpdateHtmlBlock(htmlBlock, request.Body), DataBlock _ => ValidationActionResult(IncorrectContentBlockTypeForUpdate), _ => throw new ArgumentOutOfRangeException() }; })); }
private void InsertOrUpdate(HtmlBlock @new, HtmlBlock old) { ((IPersistable)@new).OnSaving(); DataHelper.StoreObject(@new, @new.UUID, ModelExtensions.HtmlBlockDataType); ((IPersistable)@new).OnSaved(); }
/// <summary> /// Returns a new <c>HtmlBlock</c> which generates a "<td>" element for use within /// the toolbar. /// </summary> /// /// <param name="htmlTextWriter">The <c>HtmlTextWriter</c> to write to.</param> /// private static HtmlBlock GetTd(HtmlTextWriter htmlTextWriter) { htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Class, Constants.ToolbarClass); htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Nowrap, "1"); HtmlBlock block = new HtmlBlock(HtmlTextWriterTag.Td, 0, htmlTextWriter); return(block); }
public Search.Models.IndexObject GetIndexObject(object o) { IndexObject indexObject = null; Page page = (Page)o; NameValueCollection storeFields = new NameValueCollection(); NameValueCollection sysFields = new NameValueCollection(); sysFields.Add("SiteName", page.Site.FullName); sysFields.Add("PageName", page.FullName); string title = ""; StringBuilder body = new StringBuilder(); if (page.HtmlMeta != null && !string.IsNullOrEmpty(page.HtmlMeta.HtmlTitle)) { title = page.HtmlMeta.HtmlTitle; } if (!string.IsNullOrEmpty(page.ContentTitle)) { body.AppendFormat(title); title = page.ContentTitle; } if (page.PagePositions != null) { foreach (var item in page.PagePositions.Where(it => (it is HtmlBlockPosition) || (it is HtmlPosition))) { if (item is HtmlBlockPosition) { HtmlBlockPosition htmlBlockPosition = (HtmlBlockPosition)item; var htmlBlock = new HtmlBlock(page.Site, htmlBlockPosition.BlockName).LastVersion().AsActual(); if (htmlBlock != null) { body.Append(" " + Kooboo.Extensions.StringExtensions.StripAllTags(htmlBlock.Body)); } } else { HtmlPosition htmlPosition = (HtmlPosition)item; body.Append(" " + Kooboo.Extensions.StringExtensions.StripAllTags(htmlPosition.Html)); } } } indexObject = new IndexObject() { Title = title, Body = body.ToString(), StoreFields = storeFields, SystemFields = sysFields, NativeType = typeof(Page).AssemblyQualifiedNameWithoutVersion() }; return(indexObject); }
public HtmlBlock(HtmlBlock b, bool isInAnchor, double pos) { if (isInAnchor) { numTokensInsideAnchors = b.numTokensInsideAnchors; } textClass = b.textClass; relPosition = pos; }
private void AddCoreCss(HtmlTextWriter writer, int lcid) { writer.AddAttribute(HtmlTextWriterAttribute.Rel, "stylesheet"); writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/css"); string cssUrl = String.Format(CultureInfo.InvariantCulture, "/_layouts/{0}/styles/core.css", lcid); writer.AddAttribute(HtmlTextWriterAttribute.Href, cssUrl); HtmlBlock.WriteFullTag(HtmlTextWriterTag.Link, 1, writer); }
public static void WriteHtml(HtmlBlock html) { if (html.Type != HtmlBlockType.InterruptingBlock && html.Type != HtmlBlockType.NonInterruptingBlock) { return; } MarkdownConsole.WriteHtml(GetTextFromInlineContainer(html.Inline)); }
public static Match parseMatchJSON(JSONNode json) { List <Team> teams = Team.parseTeamsJSON(json["teams"].AsArray); List <Player> players = Player.parsePlayersJSON(json["players"].AsArray); List <ScheduleItem> scheduleItems = ScheduleItem.parseScheduleItemsJSON(json["scheduleItems"].AsArray); List <GameIdMapping> gameIdMappings = GameIdMapping.parseGameIdMappingsJSON(json["gameIdMappings"].AsArray); List <Video> videos = Video.parseVideosJSON(json["videos"].AsArray); List <HtmlBlock> htmlBlocks = HtmlBlock.parseHtmlBlocksJSON(json["htmlBlocks"].AsArray); return(new Match(teams, players, scheduleItems, gameIdMappings, videos, htmlBlocks)); }
public virtual ActionResult Revert(string uuid, int version, string @return) { var data = new JsonResultData(ModelState); var htmlBlock = new HtmlBlock(Site, uuid); data.RunWithTry((resultData) => { VersionManager.Revert <HtmlBlock>(htmlBlock, version); data.RedirectUrl = @return; }); return(Json(data)); }
private bool TryScriptBlockRenderer(HtmlRenderer renderer, HtmlBlock block) { if (block.Lines.Lines.Any(l => l.Slice.Text.Contains("script"))) { foreach (var line in block.Lines.Lines) { renderer.WriteEscape(line.Slice); } return(true); } return(false); }
private void CalcBlockFeatures(HtmlBlock b, HtmlBlock prevB) { if (b.Empty) { b.linkDensity = 0.0; b.textDensity = 0.0; b.numWords = 0; return; } b.linkDensity = b.numTokensInsideAnchors / (double)b.tokenCount; if (b.linkDensity > 1.0) { b.linkDensity = 1.0; } int lines = b.charCount / 80; if (lines <= 1) { b.textDensity = b.tokenCount; } else { b.textDensity = b.tokenCount / (double)(lines - 1); } b.textDensityQuotPC = prevB.textDensity / b.textDensity; if (b.numWords > 0) { b.avgWordLen = b.wordLengthSum / (double)b.numWords; b.capitalWordsRatio = b.numCapitalWords / (double)b.numWords; b.capitalStartWordsRatio = b.numCapitalStartWords / (double)b.numWords; b.numWordsQuotPC = prevB.numWords / (double)b.numWords; b.capitalWordsRatio = b.numCapitalWords / (double)b.numWords; } else { b.avgWordLen = 0; b.fullstopRatio = 0; b.capitalWordsRatio = 0; b.capitalStartWordsRatio = 0; b.numWordsQuotPC = 0; b.capitalWordsRatio = 0; } b.text = GetTextBlock(b.startListIdx, b.endListIdx, /*decode=*/ true, /*compact=*/ true); int indx = -1; while ((indx = b.text.IndexOf(".", indx + 1)) != -1) { b.numFullstops++; } b.fullstopRatio = b.numFullstops / (double)b.numWords; }
public void EnsureChildrenAreWritten() { string text = "some text"; HtmlBlock block = new HtmlBlock(new HtmlBlockParser()) { Inline = new ContainerInline().AppendChild(new LiteralInline(text)) }; renderer.Write(pdfBuilder, block); Assert.AreEqual(1, document.LastSection.Elements.Count); Assert.AreEqual(text, ((Paragraph)document.LastSection.Elements[0]).GetRawText()); }
public override ActionResult Create(HtmlBlock model) { ViewBag.ExternalCssSetting = this.GetExternalCssSetting(); if (model == null) { model = new HtmlBlock(); } string name = Request.RequestContext.GetRequestValue("ns"); name = !string.IsNullOrEmpty(name) ? name + "." : null; model.Name = name; return(base.Create(model)); }
private static IEnumerable <Tag> Convert(HtmlBlock block) { var lines = block.Lines; for (var i = 0; i < lines.Count; i++) { var line = lines.Lines[i]; foreach (var tag in Convert(line) ?? Enumerable.Empty <Tag>()) { yield return(tag); } } }
public void HtmlBlockHasTitle() { var block = new HtmlBlock() { Body = new Extend.Fields.HtmlField { Value = "<p>Lorem ipsum</p>" } }; var title = block.GetTitle(); Assert.Equal("Lorem ipsum", title); }
public void SearchHtmlBlock() { var block = new HtmlBlock { Body = new HtmlField { Value = "<p>Lorem ipsum</p>" } }; var search = block.GetIndexedContent(); Assert.Equal(block.Body.Value, search); }
public void ExportHtmlBlocksToDisk(Site site) { IHtmlBlockProvider fileHtmlProvider = new Kooboo.CMS.Sites.Persistence.FileSystem.HtmlBlockProvider(); //remove the pages folder to clear all old pages. var dummy = new HtmlBlock(site, "Dummy"); Kooboo.IO.IOUtility.DeleteDirectory(dummy.BasePhysicalPath, true); foreach (var item in QueryBySite(site)) { fileHtmlProvider.Add(item); } }
/// <summary> /// Returns a new <c>HtmlBlock</c> which generates a "<img>" element for use within /// the toolbar. This is the icon-like image. /// </summary> /// /// <param name="htmlTextWriter">The <c>HtmlTextWriter</c> to write to.</param> /// private HtmlBlock GetImage(HtmlTextWriter htmlTextWriter) { htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Src, ImageUrl); if (ToolTip.Length != 0) { htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Alt, ToolTip); } htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Style, "border-width:0px;"); htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Width, "16"); htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Height, "16"); HtmlBlock block = new HtmlBlock(HtmlTextWriterTag.Img, 0, htmlTextWriter); return(block); }
public Task <string> RenderAsync(RenderContext context, ComponentSetting settings) { if (settings != null && !string.IsNullOrEmpty(settings.NameOrId)) { HtmlBlock htmlBlock = context.WebSite.SiteDb().HtmlBlocks.GetByNameOrId(settings.NameOrId); if (htmlBlock != null) { return(Task.FromResult(htmlBlock.GetValue(context.Culture).ToString())); } } return(Task.FromResult(string.Empty)); }
public void HtmlBlockHasLongTitle() { var block = new HtmlBlock() { Body = new Extend.Fields.HtmlField { Value = "<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis interdum. Donec id elit non mi porta gravida at eget metus. Nulla vitae elit libero, a pharetra augue. Sed posuere consectetur est at lobortis. Etiam porta sem malesuada magna mollis euismod.</p>" } }; var title = block.GetTitle(); Assert.Equal(43, title.Length); Assert.EndsWith("...", title); }
public TextClass Predict(HtmlBlock prevB, HtmlBlock curB, HtmlBlock nextB) { Features features = new Features(); prevB.GetFeatures(features, HtmlBlock.Precedence.Previous); curB.GetFeatures(features, HtmlBlock.Precedence.Current); nextB.GetFeatures(features, HtmlBlock.Precedence.Next); string trace; curB.textClass = Predict(features, out trace); curB.trace = trace; return(curB.textClass); }
public virtual ActionResult UpdateHtmlBlock(string blockName, string value) { var data = new JsonResultData(ModelState); data.RunWithTry((resultData) => { var manager = ServiceFactory.GetService <HtmlBlockManager>(); var old = manager.Get(this.Site, blockName); var @new = new HtmlBlock(this.Site, blockName) { Body = value }; manager.Update(this.Site, @new, old); }); return(Json(data)); }
private void CalcBlockFeatures(HtmlBlock b, HtmlBlock prevB) { if (b.Empty) { b.linkDensity = 0.0; b.textDensity = 0.0; b.numWords = 0; return; } b.linkDensity = b.numTokensInsideAnchors / (double)b.tokenCount; if (b.linkDensity > 1.0) b.linkDensity = 1.0; int lines = b.charCount / 80; if (lines <= 1) b.textDensity = b.tokenCount; else b.textDensity = b.tokenCount / (double)(lines - 1); b.textDensityQuotPC = prevB.textDensity / b.textDensity; if (b.numWords > 0) { b.avgWordLen = b.wordLengthSum / (double)b.numWords; b.capitalWordsRatio = b.numCapitalWords / (double)b.numWords; b.capitalStartWordsRatio = b.numCapitalStartWords / (double)b.numWords; b.numWordsQuotPC = prevB.numWords / (double)b.numWords; b.capitalWordsRatio = b.numCapitalWords / (double)b.numWords; } else { b.avgWordLen = 0; b.fullstopRatio = 0; b.capitalWordsRatio = 0; b.capitalStartWordsRatio = 0; b.numWordsQuotPC = 0; b.capitalWordsRatio = 0; } b.text = GetTextBlock(b.startListIdx, b.endListIdx, /*decode=*/true, /*compact=*/true); int indx = -1; while ((indx = b.text.IndexOf(".", indx + 1)) != -1) b.numFullstops++; b.fullstopRatio = b.numFullstops / (double)b.numWords; }
public HtmlBlock(HtmlBlock b, bool isInAnchor, double pos) { if (isInAnchor) numTokensInsideAnchors = b.numTokensInsideAnchors; textClass = b.textClass; relPosition = pos; }
public TextClass Predict(HtmlBlock prevB, HtmlBlock curB, HtmlBlock nextB) { Features features = new Features(); prevB.GetFeatures(features, HtmlBlock.Precedence.Previous); curB.GetFeatures(features, HtmlBlock.Precedence.Current); nextB.GetFeatures(features, HtmlBlock.Precedence.Next); string trace; curB.textClass = Predict(features, out trace); curB.trace = trace; return curB.textClass; }
private List<HtmlBlock> GetHtmlBlocks(TextReader reader, bool isAnnotated) { HtmlTokenizer.Enumerator tokensEnum = TokenizeHtml(reader); if (tokensEnum == null) return null; int pos = 0; bool isInAnchor = false; bool isInP = false; bool isInH = false; List<HtmlBlock> blocks = new List<HtmlBlock>(); HtmlBlock prevBlock = new HtmlBlock(pos, -1); blocks.Add(prevBlock); HtmlBlock currentBlock = new HtmlBlock(++pos, 0); Stack<TextClass> textClasses = new Stack<TextClass>(); textClasses.Push(TextClass.Boilerplate); TextClass currentClass = TextClass.Boilerplate; TextClass textClass = TextClass.Unknown; while (tokensEnum.MoveNext()) { string t = tokensEnum.Current; //Console.WriteLine(t + " " + tokensEnum.CurrentToken.TokenType); if (tokensEnum.CurrentToken.IsTag) { if (mIgnoreDecorativeTags && ignorableTags.Contains(tokensEnum.CurrentToken.TagName)) { continue; } if (IsTagOpening("a", tokensEnum.CurrentToken)) { isInAnchor = true; currentBlock.Add(t, tokensEnum.CurrentToken.TokenType, false, true); } else if (IsTagClosing("a", tokensEnum.CurrentToken)) { isInAnchor = false; currentBlock.Add(t, tokensEnum.CurrentToken.TokenType, false, true); } else { if (IsTagOpening("p", tokensEnum.CurrentToken)) { isInP = true; } else if (IsTagOpening("h", tokensEnum.CurrentToken)) { isInH = true; } if (isAnnotated) { SpanTagType spanType = GetSpanTagType(tokensEnum.CurrentToken, out textClass); if (spanType != SpanTagType.NotSpanTag && spanType != SpanTagType.OpeningAndClosingSpanTag) { if ((spanType == SpanTagType.ClosingSpanTag) && (textClasses.Count > 1)) textClasses.Pop(); else if (spanType != SpanTagType.ClosingSpanTag) textClasses.Push(textClass); foreach (TextClass c in textClasses) if (c != TextClass.Unknown) { currentClass = c; break; } continue; } } if (currentBlock.HasWords) { currentBlock.isInP = isInP; currentBlock.isInH = isInH; currentBlock.endListIdx = tokensEnum.CurrentTokenListIdx; CalcBlockFeatures(currentBlock, prevBlock); prevBlock = currentBlock; blocks.Add(currentBlock); currentBlock = new HtmlBlock(++pos, tokensEnum.CurrentTokenListIdx + 1); } else { currentBlock.startListIdx = tokensEnum.CurrentTokenListIdx + 1; currentBlock.endListIdx = -1; } if (IsTagClosing("p", tokensEnum.CurrentToken)) { isInP = false; } else if (IsTagClosing("h", tokensEnum.CurrentToken)) { isInH = false; } } } else { currentBlock.Add(t, tokensEnum.CurrentToken.TokenType, isInAnchor, false); if (isAnnotated) currentBlock.textClass = currentClass; } } // flush if (currentBlock.HasWords) { currentBlock.endListIdx = tokenizer.Tokens.Count; CalcBlockFeatures(currentBlock, prevBlock); blocks.Add(currentBlock); } // dummy blocks.Add(new HtmlBlock(++pos, -1)); // calc relative position foreach (HtmlBlock b in blocks) b.relPosition = b.relPosition / (double)(blocks.Count - 2); return blocks; }