Example #1
0
        /// <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("&nbsp;");
     writer.RenderEndTag(); // span
     writer.Write(title + " News Feed");
     writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Class, "right");
     writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Span);
     writer.Write("&nbsp;");
     writer.RenderEndTag(); // span
     writer.RenderEndTag(); // div
 }
Example #3
0
        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(" &nbsp;|&nbsp; ");
                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
        }