Ejemplo n.º 1
0
        public void Render(string url, WikiPlex.Legacy.HtmlTextWriter writer)
        {
            if (Dimensions.Height.Value.Type != WikiPlex.Legacy.UnitType.Pixel)
            {
                throw new WikiPlex.Common.RenderException(string.Format(DimensionErrorText, "height"));
            }
            if (Dimensions.Width.Value.Type != WikiPlex.Legacy.UnitType.Pixel)
            {
                throw new WikiPlex.Common.RenderException(string.Format(DimensionErrorText, "width"));
            }

            var actualUri = new System.Uri(url);

            url = actualUri.GetLeftPart(System.UriPartial.Path);

            if (url[url.Length - 1] != '/')
            {
                url += "/";
            }
            if (!url.EndsWith("/player/", System.StringComparison.OrdinalIgnoreCase))
            {
                url += "player";
            }

            writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Src,
                                url + "?h=" + Dimensions.Height.Value.Value + "&w=" + Dimensions.Width.Value.Value, false);
            writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Width, Dimensions.Width.ToString());
            writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Height, Dimensions.Height.ToString());
            writer.AddAttribute("scrolling", "no");
            writer.AddAttribute("frameborder", "0");
            writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Iframe);
            writer.RenderEndTag();
        }
Ejemplo n.º 2
0
 protected void AddParameter(string name, string value, WikiPlex.Legacy.HtmlTextWriter writer)
 {
     writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Name, name);
     writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Value, value);
     writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Param);
     writer.RenderEndTag();
 }
Ejemplo n.º 3
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)
        {
            string[] parameters = input.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            string url = Parameters.ExtractUrl(parameters, false);
            string maxParameter, titlesOnlyParameter;
            int    max        = 20;
            bool   titlesOnly = false;

            if (Parameters.TryGetValue(parameters, "max", out maxParameter) &&
                (!int.TryParse(maxParameter, out max) || max <= 0 || max > 20))
            {
                throw new ArgumentException("Invalid parameter.", "max");
            }

            if (Parameters.TryGetValue(parameters, "titlesOnly", out titlesOnlyParameter) &&
                !bool.TryParse(titlesOnlyParameter, out titlesOnly))
            {
                throw new ArgumentException("Invalid parameter.", "titlesOnly");
            }

            var content = new StringBuilder();

            using (var tw = new StringWriter(content))
                using (var writer = new WikiPlex.Legacy.HtmlTextWriter(tw, string.Empty))
                {
                    writer.NewLine = string.Empty;
                    RenderFeed(url, titlesOnly, max, writer);
                }

            return(content.ToString());
        }
Ejemplo n.º 4
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
                                                , System.Func <string, string> htmlEncode
                                                , System.Func <string, string> attributeEncode)
        {
            string[] parameters = input.Split(new[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries);
            string   url        = WikiPlex.Common.Parameters.ExtractUrl(parameters);

            WikiPlex.Common.Dimensions dimensions = WikiPlex.Common.Parameters.ExtractDimensions(parameters, 200, 200);
            bool gpuAcceleration = WikiPlex.Common.Parameters.ExtractBool(parameters, "gpuAcceleration", false);

            string versionValue;
            int    version = 5;

            if (WikiPlex.Common.Parameters.TryGetValue(parameters, "version", out versionValue) && int.TryParse(versionValue, out version))
            {
                if (version < 2 || version > 5)
                {
                    version = 5;
                }
            }

            if (version == 2 && gpuAcceleration)
            {
                throw new WikiPlex.Common.RenderException("Cannot resolve silverlight macro, 'gpuAcceleration' cannot be enabled with version 2 of Silverlight.");
            }

            string[]             initParams = GetInitParams(parameters);
            ISilverlightRenderer renderer   = GetRenderer(version);

            System.Text.StringBuilder content = new System.Text.StringBuilder();
            using (var tw = new System.IO.StringWriter(content))
                using (var writer = new WikiPlex.Legacy.HtmlTextWriter(tw, string.Empty))
                {
                    writer.NewLine = string.Empty;

                    renderer.AddObjectTagAttributes(writer);
                    writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.Height, dimensions.Height.ToString());
                    writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.Width, dimensions.Width.ToString());
                    writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Object);

                    renderer.AddParameterTags(url, gpuAcceleration, initParams, writer);
                    renderer.AddDownloadLink(writer);

                    writer.RenderEndTag(); // object

                    writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.Visibility, "hidden");
                    writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.Height, "0");
                    writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.Width, "0");
                    writer.AddStyleAttribute(WikiPlex.Legacy.HtmlTextWriterStyle.BorderWidth, "0");
                    writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Iframe);
                    writer.RenderEndTag();
                }

            return(content.ToString());
        }
Ejemplo n.º 5
0
        public virtual void AddParameterTags(string url, bool gpuAcceleration, string[] initParams,
                                             WikiPlex.Legacy.HtmlTextWriter writer)
        {
            AddParameter("source", url, writer);
            AddParameter(gpuAcceleration ? "enableGPUAcceleration" : "windowless", "true", writer);

            if (initParams.Length > 0)
            {
                AddParameter("initParams", string.Join(",", initParams), writer);
            }
        }
Ejemplo n.º 6
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());
        }
Ejemplo n.º 7
0
 /// <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
 }
Ejemplo n.º 8
0
        public void Render(string url, WikiPlex.Legacy.HtmlTextWriter writer)
        {
            this.writer = writer;

            AddObjectTagAttributes(url);
            writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Object);

            AddParameterTags(url);

            AddEmbedTagAttributes(url);
            writer.RenderBeginTag(WikiPlex.Legacy.HtmlTextWriterTag.Embed);
            writer.RenderEndTag();

            writer.RenderEndTag(); // </object>
            this.writer = null;
        }
Ejemplo n.º 9
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
        }
        public override void AddParameterTags(string url, bool gpuAcceleration, string[] initParams, WikiPlex.Legacy.HtmlTextWriter writer)
        {
            base.AddParameterTags(url, gpuAcceleration, initParams, writer);

            AddParameter("minRuntimeVersion", Version, writer);
            AddParameter("autoUpgrade", "true", writer);
        }
Ejemplo n.º 11
0
 public void AddObjectTagAttributes(WikiPlex.Legacy.HtmlTextWriter writer)
 {
     writer.AddAttribute("data", DataMimeType);
     writer.AddAttribute(WikiPlex.Legacy.HtmlTextWriterAttribute.Type, ObjectType);
 }
Ejemplo n.º 12
0
        /// <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
        }