private void WriteCharacterWithCheck(char ch)
        {
            if (Settings.ExtractLinks && Char.IsLetter(ch) && (
                    _input.Match("http://") || _input.Match("https://") ||
                    _input.Match("ftp://") || _input.Match("mailto:") ||
                    _input.Match("www.")))
            {
                StringBuilder lb = new StringBuilder();
                string        url;

                // едим все до пробела, или до конца строки
                do
                {
                    if (Char.IsWhiteSpace(_input.Current))
                    {
                        _input.Position--;
                        break;
                    }
                    lb.Append(_input.Current);
                }while (_input.Read());

                // отдаем обратно не буквы-цифры и слеши
                while (lb.Length > 0 && Char.IsPunctuation(lb[lb.Length - 1]))
                {
                    lb.Length--;
                    _input.Position--;
                }

                url = (lb[0] == 'w') ? "http://" + lb.ToString() : lb.ToString();
                Uri uri;
                if (Uri.TryCreate(url, UriKind.Absolute, out uri))
                {
                    if (String.Equals(uri.Scheme, "mailto", StringComparison.OrdinalIgnoreCase))
                    {
                        lb.Remove(0, 7);
                    }

                    HtmlElementBuilder tag = new HtmlElementBuilder("a");
                    tag.Attributes["href"] = uri.OriginalString;
                    tag.InnerHtml          = SecurityElement.Escape(lb.ToString());

                    Write(FormatElement(tag, HtmlElementRenderMode.Normal));
                }
                else
                {
                    _output.Append(lb.ToString());
                }
            }
            else if (Char.IsWhiteSpace(ch))
            {
                CloseNoBreak();
                Write(ch);
            }
            else
            {
                Write(ch);
            }
        }
		public HtmlFormatterFilter(HtmlFilterSettings settings, 
			HtmlElementRule container, HtmlElementBuilder element, 
			StringWriter output)
			: base(TextReader.Null, output, settings)
		{
			_contents = output.GetStringBuilder();
			_container = container;
			_element = element;
		}
 public HtmlFormatterFilter(HtmlFilterSettings settings,
                            HtmlElementRule container, HtmlElementBuilder element,
                            StringWriter output)
     : base(TextReader.Null, output, settings)
 {
     _contents  = output.GetStringBuilder();
     _container = container;
     _element   = element;
 }
Beispiel #4
0
        protected virtual void Dispose(bool disposing)
        {
            if (disposing && !_disposed)
            {
                _disposed = true;

                HtmlElementBuilder builder = new HtmlElementBuilder("form");
                _response.Write(builder.ToString(HtmlElementRenderMode.EndTag));
            }
        }
        protected virtual string FormatElement(HtmlElementBuilder element,
                                               HtmlElementRenderMode mode)
        {
            Precondition.Require(element, () => Error.ArgumentNull("element"));

            if (Formatter == null)
            {
                return(element.ToString(mode));
            }

            return(Formatter(element, mode));
        }
Beispiel #6
0
        protected string FormatElement(HtmlElementRule parent,
                                       HtmlElementBuilder element, HtmlElementRenderMode renderMode)
        {
            using (StringWriter writer = new StringWriter())
            {
                HtmlFormatterFilter filter = new HtmlFormatterFilter(
                    _settings, parent, element, writer);

                filter.RenderMode = renderMode;
                filter.Parameters = Parameters;
                filter.Execute();

                return(writer.ToString());
            }
        }
		public static string Serialize(this HtmlHelper helper, 
			string name, object data, SerializationMode mode)
		{
			Precondition.Require(helper, () => Error.ArgumentNull("helper"));
			Precondition.Defined(name, () => Error.ArgumentNull("name"));

			ModelStateSerializer serializer = new ModelStateSerializer();
			string elementName = helper.Context.ViewData.Template.GetHtmlElementName(name);
			string value = serializer.Serialize(data ?? helper.Context.ViewData.Model, mode);

			HtmlElementBuilder builder = new HtmlElementBuilder("input");
			builder.Attributes["type"] = "hidden";
			builder.Attributes["name"] = elementName;
			builder.Attributes["value"] = value;

			return builder.ToString();
		}
 public string Tag(string tagName, object attributes, params string[] content)
 {
     HtmlElementBuilder builder = new HtmlElementBuilder(tagName, attributes, 
         (content == null) ? null : String.Join("", content));
     return builder.ToString();
 }
 public string Tag(string tagName, object attributes)
 {
     HtmlElementBuilder builder = new HtmlElementBuilder(tagName, attributes, null);
     return builder.ToString();
 }
        /// <summary>
        /// Returns the string for a hidden input containing a 
        /// token used to prevent CSRF attacks.
        /// </summary>
        /// <param name="value">An extended value to store in the token.</param>
        public string Token(string value)
        {
            RequestValidationToken token = RequestValidationToken.Create(Context.Context);

            HtmlElementBuilder builder = new HtmlElementBuilder("input");
            builder.Attributes.Add("type", "hidden");
            builder.Attributes.Add("name", ValidateRequestTokenAttribute.ValidationFieldName);
            builder.Attributes.Add("value", token.Serialize());

            return builder.ToString();
        }
		protected string FormatElement(HtmlElementRule parent,
			HtmlElementBuilder element, HtmlElementRenderMode renderMode)
		{
			using (StringWriter writer = new StringWriter())
			{
				HtmlFormatterFilter filter = new HtmlFormatterFilter(
					_settings, parent, element, writer);
				
				filter.RenderMode = renderMode;
				filter.Parameters = Parameters;
				filter.Execute();

				return writer.ToString();
			}
		}
        /// <summary>
        /// Renders the ScriptManager to the page.
        /// </summary>
        public void Render()
        {
            TextWriter writer = _context.Context.Response.Output;
            HtmlElementBuilder builder = new HtmlElementBuilder("script", 
				new { Type = "text/javascript" }, String.Empty);

            foreach (string path in _includes.Values)
            {
                builder.Attributes.Merge("src", path, true);
                writer.WriteLine(builder.ToString());
            }

            if (_blocks.Values.Any(b => !b.IsEmpty))
            {
                builder.Attributes.Remove("src");
                writer.WriteLine(builder.ToString(HtmlElementRenderMode.StartTag));
                writer.WriteLine("//<![CDATA[");

                foreach (ScriptBlock script in _blocks.Values)
                    script.Render(writer);

                writer.WriteLine("//]]>");
                writer.WriteLine(builder.ToString(HtmlElementRenderMode.EndTag));
            }
            _blocks.Clear();
            _includes.Clear();
        }
        private void WriteCharacterWithCheck(char ch)
        {
            if (Settings.ExtractLinks && Char.IsLetter(ch) && (
                _input.Match("http://") || _input.Match("https://") ||
                _input.Match("ftp://") || _input.Match("mailto:") ||
                _input.Match("www.")))
            {
                StringBuilder lb = new StringBuilder();
                string url;

                // едим все до пробела, или до конца строки
                do
                {
                    if (Char.IsWhiteSpace(_input.Current))
                    {
                        _input.Position--;
                        break;
                    }
                    lb.Append(_input.Current);
                }
                while (_input.Read());

                // отдаем обратно не буквы-цифры и слеши
                while (lb.Length > 0 && Char.IsPunctuation(lb[lb.Length - 1]))
                {
                    lb.Length--;
                    _input.Position--;
                }

                url = (lb[0] == 'w') ? "http://" + lb.ToString() : lb.ToString();
                Uri uri;
				if (Uri.TryCreate(url, UriKind.Absolute, out uri))
				{
					if (String.Equals(uri.Scheme, "mailto", StringComparison.OrdinalIgnoreCase))
						lb.Remove(0, 7);

					HtmlElementBuilder tag = new HtmlElementBuilder("a");
					tag.Attributes["href"] = uri.OriginalString;
					tag.InnerHtml = SecurityElement.Escape(lb.ToString());

					Write(FormatElement(tag, HtmlElementRenderMode.Normal));
				}
				else
					_output.Append(lb.ToString());
            }
            else if (Char.IsWhiteSpace(ch))
            {
                CloseNoBreak();
                Write(ch);
            }
            else
                Write(ch);
        }
        protected virtual string FormatElement(HtmlElementBuilder element,
            HtmlElementRenderMode mode)
        {
            Precondition.Require(element, () => Error.ArgumentNull("element"));

            if (Formatter == null)
                return element.ToString(mode);
            
			return Formatter(element, mode);
        }