/// <summary> /// Will expand the input into the appropriate content based on scope. /// </summary> /// <param name="scopeName">The scope name.</param> /// <param name="input">The input to be expanded.</param> /// <param name="htmlEncode">Function that will html encode the output.</param> /// <param name="attributeEncode">Function that will html attribute encode the output.</param> /// <returns>The expanded content.</returns> protected override string PerformExpand(string scopeName, string input, Func <string, string> htmlEncode, Func <string, string> attributeEncode) { if (scopeName == ScopeName.InvalidVideo) { throw new ArgumentException("Invalid video type.", "type"); } string[] parameters = input.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string url = Parameters.ExtractUrl(parameters); WikiPlex.Legacy.HorizontalAlign align = Parameters.ExtractAlign(parameters, WikiPlex.Legacy.HorizontalAlign.Center); IVideoRenderer videoRenderer = GetVideoRenderer(scopeName); videoRenderer.Dimensions = Parameters.ExtractDimensions(parameters, 285, 320); var content = new StringBuilder(); using (var tw = new StringWriter(content)) using (var writer = new WikiPlex.Legacy.HtmlTextWriter(tw, string.Empty)) { writer.NewLine = string.Empty; writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "video"); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Style, string.Format("text-align:{0}", align)); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Div); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "player"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Span); videoRenderer.Render(url, writer); writer.RenderEndTag(); // </span> writer.Write("<br />"); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "external"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Span); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Href, url); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Target, "_blank"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.A); writer.Write("Launch in another window"); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); // </div> } return(content.ToString()); }
/// <summary> /// Handles rendering the accent bar. /// </summary> /// <param name="writer">The text writer to write to.</param> /// <param name="title">The title to write.</param> protected static void RenderAccentBar(WikiPlex.Legacy.HtmlTextWriter writer, string title) { writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "accentbar"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Div); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "left"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Span); writer.Write(" "); writer.RenderEndTag(); // span writer.Write(title + " News Feed"); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "right"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Span); writer.Write(" "); writer.RenderEndTag(); // span writer.RenderEndTag(); // div }
public void AddDownloadLink(WikiPlex.Legacy.HtmlTextWriter writer) { writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.P); writer.Write("You need to install Microsoft Silverlight to view this content. "); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Href, DownloadUrl, false); writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.TextDecoration, "none"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.A); writer.Write("Get Silverlight!<br />"); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Src, "http://go.microsoft.com/fwlink/?LinkID=108181", false); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Alt, "Get Microsoft Silverlight"); writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.BorderStyle, "none"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Img); writer.RenderEndTag(); // img writer.RenderEndTag(); // a writer.RenderEndTag(); // p }
/// <summary> /// Handles rendering a feed. /// </summary> /// <param name="url">The url to read the feed from.</param> /// <param name="titlesOnly">Indicates if only titles should be displayed.</param> /// <param name="max">The maximum number of entries to display.</param> /// <param name="writer">The text writer to write to.</param> protected virtual void RenderFeed(string url, bool titlesOnly, int max, WikiPlex.Legacy.HtmlTextWriter writer) { XmlDocument xdoc = xmlDocumentReader.Read(url); Guard.NotNull(xdoc, "url"); SyndicationFeed feed = syndicationReader.Read(xdoc); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "rss"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Div); RenderAccentBar(writer, feed.Title); for (int i = 0; i < feed.Items.Count(); i++) { if (i >= max) { break; } SyndicationItem item = feed.Items.ElementAt(i); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "entry"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Div); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "title"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Div); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Href, item.Link, false); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.A); writer.Write(item.Title); writer.RenderEndTag(); //a writer.RenderEndTag(); // div writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "moreinfo"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Div); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "date"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Span); writer.Write(item.Date); writer.RenderEndTag(); // span writer.Write(" | "); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "source"); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Span); writer.Write("From "); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Target, "_blank"); writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Href, url, false); writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.A); writer.Write(feed.Title); writer.RenderEndTag(); // a writer.RenderEndTag(); // span writer.RenderEndTag(); // div if (!titlesOnly) { writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.P); writer.Write(item.Description); writer.RenderEndTag(); // p } writer.RenderEndTag(); // div } RenderAccentBar(writer, feed.Title); writer.RenderEndTag(); // div }