コード例 #1
0
 //     If the form action corresponds to a cross page post, render the referrer page in a post field.
 private void RenderReferrerPagePostField(WmlTextWriter writer)
 {
     if (Page.ContainsCrossPagePost)
     {
         writer.WritePostField(Page.previousPageID, Page.EncryptString(Page.Request.CurrentExecutionFilePath));
     }
 }
コード例 #2
0
 //     Render a postfield dictionary with variable values.
 private void RenderPostFieldVariableDictionary(WmlTextWriter writer, IDictionary postFieldDictionary)
 {
     foreach (DictionaryEntry entry in postFieldDictionary)
     {
         writer.WritePostFieldVariable((string)entry.Key, (string)entry.Value);
     }
 }
コード例 #3
0
        public virtual void RenderSelectOptionAsPostBack(WmlTextWriter writer, string text, String target, String argument)
        {
            if (writer.AnalyzeMode)
            {
                return;
            }

            writer.WriteFullBeginTag("option");
            writer.WriteBeginTag("onevent");
            writer.WriteAttribute("type", "onpick");
            writer.Write(">");
            writer.WriteBeginTag("go");
            writer.WriteAttribute("href", "#" + WmlTextWriter.PostBackWithVarsCardID);
            writer.Write(">");
            if (!String.IsNullOrEmpty(target))
            {
                writer.WriteBeginTag("setvar");
                writer.WriteAttribute("name", _postBackEventTargetVarName);
                writer.WriteAttribute("value", target);
                writer.Write(" />");
            }
            if (!String.IsNullOrEmpty(argument))
            {
                writer.WriteBeginTag("setvar");
                writer.WriteAttribute("name", _postBackEventArgumentVarName);
                writer.WriteAttribute("value", argument);
                writer.Write(" />");
            }
            writer.WriteEndTag("go");
            writer.WriteEndTag("onevent");
            writer.WriteEncodedText(text);
            writer.WriteEndTag("option");
            _writtenPostBack  = true;
            _usePostBackCards = true;
        }
コード例 #4
0
        protected internal override void Render(HtmlTextWriter markupWriter)
        {
            WmlTextWriter writer = (WmlTextWriter)markupWriter;

            // If control is not enabled, don't render it at
            // all for WML.
            if (!Control.Enabled)
            {
                RenderDisabled(writer);
                return;
            }

            ((WmlPageAdapter)PageAdapter).RegisterPostField(writer, Control);

            // determine if control is already checked.
            // if so, set initial value.
            _ivalue = Control.Checked ? "1" : String.Empty;

            ((WmlPageAdapter)PageAdapter).AddFormVariable(writer, Control.ClientID, _ivalue, false /* randomID */);
            // does not render __ivalue if null or form variables written.
            writer.WriteBeginSelect(null, null, Control.ClientID, _ivalue, Control.ToolTip, true /* multiselect*/);

            if (Control.AutoPostBack)
            {
                ((WmlPageAdapter)PageAdapter).RenderSelectOptionAsAutoPostBack(writer, Control.Text, null);
            }
            else
            {
                ((WmlPageAdapter)PageAdapter).RenderSelectOption(writer, Control.Text);
            }

            writer.WriteEndSelect();
        }
コード例 #5
0
        //     Render postfields for the event target and the event argument.
        private void RenderTargetAndArgumentPostFields(WmlTextWriter writer, string target, string argument, WmlPostFieldType postFieldType)
        {
            // Write the event target.
            if (target != null)
            {
                writer.WritePostField(Page.postEventSourceID, target);
            }
            else
            {
                // Target is null when the action is generated from a postback
                // card itself. In this case, set the event target to whatever
                // the original event target was.
                writer.WritePostFieldVariable(Page.postEventSourceID, _postBackEventTargetVarName);
            }

            // Write the event argument, if valid.

            if (argument != null)
            {
                if (postFieldType == WmlPostFieldType.Variable)
                {
                    writer.WritePostFieldVariable(Page.postEventArgumentID, argument);
                }
                else
                {
                    writer.WritePostField(Page.postEventArgumentID, argument);
                }
            }
        }
コード例 #6
0
 // Renders the end of the form.
 protected internal virtual void RenderEndForm(WmlTextWriter writer)
 {
     writer.CloseParagraph();
     writer.Indent--;
     writer.WriteEndTag("card");
     writer.WriteLine();
 }
コード例 #7
0
        protected internal override void Render(HtmlTextWriter markupWriter)
        {
            WmlTextWriter writer = (WmlTextWriter)markupWriter;
            String        source = Control.ImageUrl;
            String        text   = Control.AlternateText;

            writer.EnterStyle(Control.ControlStyle);

            // writer.EnterLayout(Style);

            if (source != null && source.Length == 0)
            {
                // Just write the alternate as text
                writer.WriteEncodedText(text);
            }
            else
            {
                String localSource;

                string symbolProtocol = "symbol:";
                if (StringUtil.StringStartsWith(source, symbolProtocol))
                {
                    localSource = source.Substring(symbolProtocol.Length);
                    source      = String.Empty;
                }
                else
                {
                    localSource = null;
                    // AUI 3652
                    source = Control.ResolveClientUrl(source);
                }
                writer.RenderImage(source, localSource, text);
            }
            writer.ExitStyle(Control.ControlStyle);
        }
コード例 #8
0
        protected internal override void Render(HtmlTextWriter markupWriter)
        {
            WmlTextWriter writer = (WmlTextWriter)markupWriter;

            string postUrl = Control.PostBackUrl;

            if (!String.IsNullOrEmpty(postUrl))
            {
                postUrl = Control.ResolveClientUrl(Control.PostBackUrl);
            }

            //
            if (Page != null && Page.Request != null && (String)Page.Request.Browser["supportsImageSubmit"] == "false")
            {
                writer.EnterStyle(Control.ControlStyle);

                PageAdapter.RenderPostBackEvent(writer, Control.UniqueID /* target */, "EA" /* argument, placeholder only */, Control.SoftkeyLabel, Control.AlternateText, postUrl, null /* accesskey */);
                writer.ExitStyle(Control.ControlStyle);
                return;
            }
            writer.EnterStyle(Control.ControlStyle);
            ((WmlPageAdapter)PageAdapter).RenderBeginPostBack(writer, Control.SoftkeyLabel /* maps to title attribute, Whidbey 10732 */, Control.AccessKey);
            base.Render(writer);
            ((WmlPageAdapter)PageAdapter).RenderEndPostBack(writer, Control.UniqueID, "EA" /* argument, placeholder only */, postUrl);
            writer.ExitStyle(Control.ControlStyle);
        }
コード例 #9
0
        public virtual void Render(WmlTextWriter writer)
        {
            LiteralMode mode = Control.Mode;

            if (mode == LiteralMode.PassThrough || mode == LiteralMode.Encode)
            {
                Style emptyStyle = new Style();
                writer.BeginRender();
                writer.EnterStyle(emptyStyle); // VSWhidbey 114083

                if (mode == LiteralMode.PassThrough)
                {
                    writer.Write(Control.Text);
                }
                else /* mode == LiteralMode.Encode */
                {
                    writer.WriteEncodedText(Control.Text);
                }

                writer.ExitStyle(emptyStyle);
                writer.EndRender();
                return;
            }

            /* mode == LiteralMode.Transform */
            ((WmlPageAdapter)PageAdapter).RenderTransformedText(writer, Control.Text);
        }
コード例 #10
0
        protected internal override void Render(HtmlTextWriter writer) {
            WmlTextWriter wmlWriter = (WmlTextWriter) writer;
            if (wmlWriter.AnalyzeMode) {
                return;
            }

            if (Control.DoPostCacheSubstitutionAsNeeded(writer)) {
                return;
            }

            // This is to work around the issue that WmlTextWriter has its
            // state info for rendering block level elements, such as <p> tag.
            // We keep the state info for subsequent PostCache Render call below.
            //
            // e.g. If the ad is at the beginning of the form, we need to
            // call the method below to explicitly write out a <p> tag for
            // a valid WML output.
            if (_wmlTopOfForm) {
                wmlWriter.BeginRender();
            }
            if (_firstTimeRender) {
                _wmlTopOfForm = wmlWriter.TopOfForm;
                _firstTimeRender = false;
            }

            RenderHyperLinkAsAd(writer);
        }
コード例 #11
0
 // Renders the TextBox.
 public virtual void RenderTextBox(WmlTextWriter writer, String id, String value, String format, String title, bool password, int size, int maxLength, bool generateRandomID) {
     if (!writer.AnalyzeMode) {
         // 
                         
         // VSWhidbey 147458.  Close any style tags.
         writer.CloseCurrentStyleTags();
         writer.WriteBeginTag("input");
         // Map the client ID to a short name. See
         // MapClientIDToShortName for details.
         writer.WriteAttribute("name", writer.MapClientIDToShortName(id, generateRandomID));
         if (password) {
             writer.WriteAttribute("type", "password");
         }
         if (!String.IsNullOrEmpty(format)) {
             writer.WriteAttribute("format", format);
         }
         if (!String.IsNullOrEmpty(title)) {
             writer.WriteAttribute("title", title, true);
         }
         if (size > 0) {
             writer.WriteAttribute("size", size.ToString(CultureInfo.InvariantCulture));
         }
         if (maxLength > 0) {
             writer.WriteAttribute("maxlength", maxLength.ToString(CultureInfo.InvariantCulture));
         }
         // We do not need a value attribute.  The Text value is populated by the client side var set in onenterforward.
         writer.WriteLine(" />");
         writer.OpenCurrentStyleTags();
     }
 }
コード例 #12
0
        // Renders the beginning of the form.
        //
        protected internal virtual void RenderBeginForm(WmlTextWriter writer)
        {
            RenderBeginCardTag(writer);

            // Write form variables.

            //


            _writtenFormVariables = true;
            if (_formVariables == null)
            {
                _formVariables = new ListDictionary();
            }
            _formVariables[_postBackEventTargetVarName]   = String.Empty; // Whidbey 18260
            _formVariables[_postBackEventArgumentVarName] = String.Empty;
            writer.Write("<onevent type=\"onenterforward\"><refresh>");
            RenderSetFormVariables(writer);
            RenderPostUrlFormVariable(writer);
            writer.WriteLine("</refresh></onevent>");
            writer.Write("<onevent type=\"onenterbackward\"><refresh>");
            RenderSetFormVariables(writer);
            RenderPostUrlFormVariable(writer);
            writer.WriteLine("</refresh></onevent>");
            //
            writer.BeginFormOrPanel();
        }
コード例 #13
0
        protected internal override void Render(HtmlTextWriter writer)
        {
            WmlTextWriter wmlWriter = (WmlTextWriter)writer;

            if (Page.Form == null)
            {
                throw new HttpException(SR.GetString(SR.PageAdapter_MustHaveFormRunatServer));
            }
            if (Page.HasRenderDelegate())
            {
                throw new HttpException(SR.GetString(SR.PageAdapter_RenderDelegateMustBeInServerForm));
            }
            if (RequiresUTF8ContentEncoding())
            {
                Page.Response.ContentEncoding = _utf8Encoding;
            }

            InitializeWriter(wmlWriter);
            RenderXmlHeader(wmlWriter);
            wmlWriter.WriteFullBeginTag("wml");
            RenderCacheExpiry(wmlWriter);
            HtmlForm form = Page.Form;

            AnalyzeAndRenderHtmlForm(wmlWriter, form);
            RenderPostBackCard(wmlWriter);
            wmlWriter.WriteEndTag("wml");
        }
コード例 #14
0
        private void RenderGoActionToPostbackCard(WmlTextWriter writer, String target, String argument, String postUrl)
        {
            // If using postback cards, render a go action to the given
            // postback card, along with setvars setting the target and
            // argument.
            writer.WriteBeginTag("go");
            writer.Write(" href=\"");
            _writtenPostBack = true;
            writer.Write("#");
            writer.Write(WmlTextWriter.PostBackWithVarsCardID);
            writer.Write("\">");
            writer.WriteBeginTag("setvar");
            writer.WriteAttribute("name", _postBackEventTargetVarName);
            writer.WriteAttribute("value", target);
            writer.Write("/>");
            writer.WriteBeginTag("setvar");
            writer.WriteAttribute("name", _postBackEventArgumentVarName);
            writer.Write(" value=\"");
            if (argument != null)
            {
                writer.WriteEncodedText(argument);
            }
            writer.Write("\"/>");

            if (!String.IsNullOrEmpty(postUrl))
            {
                writer.WriteBeginTag("setvar");
                writer.WriteAttribute("name", _postUrlVarName);
                writer.Write(" value=\"");
                writer.WriteEncodedUrl(postUrl);
                writer.Write("\"/>");
            }

            writer.WriteEndTag("go");
        }
コード例 #15
0
        // Renders the beginning of the form.
        // UNDONE: Remove internal modifier when method is completely removed from writer.
        protected internal virtual void RenderBeginForm(WmlTextWriter writer)
        {
            RenderBeginCardTag(writer);

            // Write form variables.

            // UNDONE: Move writer._provideBackButton to this adapter.
            // Review: In V1 we had a writer.ProvideBackButton property, is there any need for this with (more advanced)
            // whidbey devices?
            _writtenFormVariables = true;
            if (_formVariables == null)
            {
                _formVariables = new ListDictionary();
            }
            _formVariables[_postBackEventTargetVarName]   = String.Empty; // Whidbey 18260
            _formVariables[_postBackEventArgumentVarName] = String.Empty;
            writer.Write("<onevent type=\"onenterforward\"><refresh>");
            RenderSetFormVariables(writer);
            RenderPostUrlFormVariable(writer);
            writer.WriteLine("</refresh></onevent>");
            writer.Write("<onevent type=\"onenterbackward\"><refresh>");
            RenderSetFormVariables(writer);
            RenderPostUrlFormVariable(writer);
            writer.WriteLine("</refresh></onevent>");
            // UNDONE: formAdapter.RenderExtraCardElements(this);
            writer.BeginFormOrPanel();
        }
コード例 #16
0
 //     Extracted into separate method for intelligibility.
 private void BeginForm(WmlTextWriter writer)
 {
     _writtenFormVariables = false;
     if (!writer.AnalyzeMode)
     {
         RenderBeginForm(writer);
     }
 }
コード例 #17
0
 protected virtual void RenderForm(WmlTextWriter writer, HtmlForm form)
 {
     Page.OnFormRender();
     BeginForm(writer);
     form.RenderChildren(writer);
     EndForm(writer);
     Page.OnFormPostRender();
 }
コード例 #18
0
 //     Render the method attribute of a go action.
 private void RenderFormMethodAttribute(WmlTextWriter writer, string method)
 {
     // Method defaults to get in WML, so write it if it's not.
     if (StringUtil.EqualsIgnoreCase(method, "post"))
     {
         writer.WriteAttribute("method", "post");
     }
 }
コード例 #19
0
        protected internal override void Render(HtmlTextWriter markupWriter)
        {
            WmlTextWriter writer = (WmlTextWriter)markupWriter;

            if (writer.AnalyzeMode)
            {
                return;
            }
            Control.RenderMarkup(writer);
        }
コード例 #20
0
 private void RenderSetFormVariables(WmlTextWriter writer)
 {
     foreach (DictionaryEntry entry in _formVariables)
     {
         writer.WriteBeginTag("setvar");
         writer.WriteAttribute("name", (String)entry.Key);
         writer.WriteAttribute("value", (String)entry.Value, true);
         writer.Write(" />");
     }
 }
コード例 #21
0
        // Render a select option.
        public virtual void RenderSelectOption(WmlTextWriter writer, string text)
        {
            if (writer.AnalyzeMode)
            {
                return;
            }

            writer.WriteFullBeginTag("option");
            writer.WriteEncodedText(text);
            writer.WriteEndTag("option");
        }
コード例 #22
0
 internal virtual void RenderSelectOption(WmlTextWriter writer, ListItem item)
 {
     if (Control.AutoPostBack)
     {
         ((WmlPageAdapter)PageAdapter).RenderSelectOptionAsAutoPostBack(writer, item.Text, null);
     }
     else
     {
         ((WmlPageAdapter)PageAdapter).RenderSelectOption(writer, item.Text);
     }
 }
コード例 #23
0
 //     Renders the cache expiry as a header or meta element.
 private void RenderCacheExpiry(WmlTextWriter writer)
 {
     if (!StringUtil.EqualsIgnoreCase(Browser["SupportsCacheControlMetaTag"], "false"))
     {
         writer.Write(_cacheExpiry);
     }
     else
     {
         Page.Response.AppendHeader("Cache-Control", "max-age=0");
     }
 }
コード例 #24
0
        public override void RenderEndHyperlink(HtmlTextWriter writer)
        {
            WmlTextWriter wmlWriter = (WmlTextWriter)writer;

            if (wmlWriter.AnalyzeMode)
            {
                return;
            }

            wmlWriter.WriteEndTag("a");
        }
コード例 #25
0
 public virtual void RenderGoAction(WmlTextWriter writer, String target, String argument, String postUrl)
 {
     if (UsePostBackCard())
     {
         RenderGoActionToPostbackCard(writer, target, argument, postUrl);
     }
     else
     {
         RenderFormPostInGoAction(writer, target, argument, WmlPostFieldType.Normal, postUrl);
     }
 }
コード例 #26
0
        //

        protected internal override void Render(HtmlTextWriter writer)
        {
            WmlTextWriter wmlWriter = writer as WmlTextWriter;

            if (wmlWriter == null)
            {
                // MMIT legacy case (else pageAdapter would have generated a WmlTextWriter).
                Control.Render(writer);
                return;
            }
            Render(wmlWriter);
        }
コード例 #27
0
        private void RenderXmlHeader(WmlTextWriter writer)
        {
            writer.Write(_headerBegin);
            String charset = Page.Response.Charset;

            if (charset != null && charset.Length > 0 &&
                !StringUtil.EqualsIgnoreCase(charset, "utf-8"))
            {
                writer.Write(String.Format(_headerEncoding, charset));
            }
            writer.Write(_headerEnd);
        }
コード例 #28
0
 private void RenderPostBackUrl(WmlTextWriter writer, string path)
 {
     if ((String)Browser["requiresAbsolutePostbackUrl"] == "true" && Page != null && Page.Request != null && Page.Response != null)
     {
         // ApplyAppPathModifier makes the path absolute
         writer.WriteEncodedUrl(Page.Response.ApplyAppPathModifier(path));
     }
     else
     {
         writer.WriteEncodedUrl(path);
     }
 }
コード例 #29
0
 //     Render a postfield for view state or control state.
 private void RenderStatePostField(WmlTextWriter writer, string stateName, string stateValue)
 {
     if (stateValue == null)
     {
         return;
     }
     if (Browser["requiresSpecialViewStateEncoding"] == "true")
     {
         stateValue = ((WmlPageAdapter)Page.Adapter).EncodeSpecialViewState(stateValue);
     }
     writer.WritePostField(stateName, stateValue);
 }
コード例 #30
0
 private void EndForm(WmlTextWriter writer)
 {
     if (writer.AnalyzeMode)
     {
         // Analyze form when done.
         ((WmlPageAdapter)PageAdapter).PostAnalyzeForm();
     }
     else
     {
         RenderEndForm(writer);
     }
 }
コード例 #31
0
 private void RenderPostUrlFormVariable(WmlTextWriter writer)
 {
     if (Page.ContainsCrossPagePost)
     {
         writer.WriteBeginTag("setvar");
         writer.WriteAttribute("name", _postUrlVarName);
         writer.Write(" value=\"");
         RenderPostBackUrl(writer, Page.RelativeFilePath);
         RenderFormQueryString(writer, QueryString);
         writer.Write("\" />");
     }
 }
コード例 #32
0
        internal override void RenderSelectOption(WmlTextWriter writer, ListItem item) {

            // We don't do autopostback if the radio button has been selected.
            // This is to make it consistent that it only posts back if its
            // state has been changed.  Also, it avoids the problem of missing
            // validation since the data changed event would not be fired if the
            // selected radio button was posting back.
            if (Control.AutoPostBack && item.Selected) {
                ((WmlPageAdapter)PageAdapter).RenderSelectOption(writer, item.Text);
            }
            else {
                base.RenderSelectOption(writer, item);
            }
        }
コード例 #33
0
        // Adds a form variable.
        public void AddFormVariable(WmlTextWriter writer, String clientID, String value, bool generateRandomID) {
            // On first (analyze) pass, form variables are added to
            // an array. On second pass, they are rendered. This ensures
            // that only visible controls generate variables.
            if (!writer.AnalyzeMode) {
                return;
            }
            if (_formVariables == null) {
                _formVariables = new ListDictionary();
            }

            // Map the client ID to a short name. See
            // MapClientIDToShortName for details.
            _formVariables[writer.MapClientIDToShortName(clientID, generateRandomID)] = value;
        }
コード例 #34
0
 // Renders the end of the form.
 protected internal virtual void RenderEndForm(WmlTextWriter writer) {
     writer.CloseParagraph();
     writer.Indent--;
     writer.WriteEndTag("card");
     writer.WriteLine();
 }
コード例 #35
0
 protected virtual void RenderForm(WmlTextWriter writer, HtmlForm form) {
     Page.OnFormRender();
     BeginForm(writer);
     form.RenderChildren(writer);
     EndForm(writer);
     Page.OnFormPostRender();
 }
コード例 #36
0
 public virtual void RenderGoAction(WmlTextWriter writer, String target, String argument, String postUrl) {
     if (UsePostBackCard()) {
         RenderGoActionToPostbackCard(writer, target, argument, postUrl);
     }
     else {
         RenderFormPostInGoAction(writer, target, argument, WmlPostFieldType.Normal, postUrl);
     }
 }
コード例 #37
0
        //     Renders postback cards.
        private void RenderPostBackCard(WmlTextWriter writer) {
            if (!_writtenPostBack) {
                return;
            }

            writer.WriteBeginTag("card");
            writer.WriteAttribute("id", WmlTextWriter.PostBackWithVarsCardID);
            writer.WriteLine(">");

            writer.Write("<onevent type=\"onenterforward\">");
            RenderFormPostInGoAction(writer, null, _postBackEventArgumentVarName, WmlPostFieldType.Variable, String.Empty);
            // 
            writer.WriteLine("</onevent>");

            writer.WriteLine("<onevent type=\"onenterbackward\"><prev /></onevent>");
            writer.WriteLine("</card>");
        }
コード例 #38
0
        public void RenderSelectOptionAsAutoPostBack(WmlTextWriter writer, string text, string value) {
            if (writer.AnalyzeMode) {
                return;
            }

            writer.WriteBeginTag("option");
            if (!String.IsNullOrEmpty(value)) {
                writer.WriteAttribute("value", value, true);
            }
            writer.WriteAttribute("onpick", "#" + WmlTextWriter.PostBackWithVarsCardID);
            writer.Write(">");
            writer.WriteEncodedText(text);
            writer.WriteEndTag("option");
            // force use of postback cards with variables.
            _writtenPostBack = true;
            _usePostBackCards = true;
        }
コード例 #39
0
 private void RenderSetFormVariables(WmlTextWriter writer) {
     foreach (DictionaryEntry entry in _formVariables) {
         writer.WriteBeginTag("setvar");
         writer.WriteAttribute("name", (String)entry.Key);
         writer.WriteAttribute("value", (String)entry.Value, true);
         writer.Write(" />");
     }
 }
コード例 #40
0
 //     Render a postfield for view state or control state.
 private void RenderStatePostField(WmlTextWriter writer, string stateName, string stateValue) {
     if (stateValue == null) {
         return;
     }
     if (Browser["requiresSpecialViewStateEncoding"] == "true") {
         stateValue = ((WmlPageAdapter) Page.Adapter).EncodeSpecialViewState(stateValue);
     }
     writer.WritePostField(stateName, stateValue);
 }
コード例 #41
0
 private void RenderXmlHeader(WmlTextWriter writer) {
     writer.Write(_headerBegin);
     String charset = Page.Response.Charset;
     if (charset != null && charset.Length > 0 &&
         !StringUtil.EqualsIgnoreCase(charset, "utf-8")) {
         writer.Write(String.Format(_headerEncoding, charset));
     }
     writer.Write(_headerEnd);
 }
コード例 #42
0
 //     Renders the cache expiry as a header or meta element.
 private void RenderCacheExpiry(WmlTextWriter writer) {
     if (!StringUtil.EqualsIgnoreCase(Browser["SupportsCacheControlMetaTag"], "false")) {
         writer.Write(_cacheExpiry);
     }
     else {
         Page.Response.AppendHeader("Cache-Control", "max-age=0");
     }
 }
コード例 #43
0
        //     Transforms text for the target device.  The default transformation is the identity transformation,
        //     which does not change the text.
        internal void RenderTransformedText(WmlTextWriter writer, string text) {
            bool leadingSpace = false;
            bool setPendingP = false;
            bool trailingSpace = false;

            // p's replaced by brs as in MMIT V1 for valid containment.
            text = LiteralControlAdapterUtility.PreprocessLiteralText(text);
            bool isEmpty = (text != null && text.Length == 0);
            if (isEmpty) {
                return;
            }

            if (writer.TopOfForm) {
                while (Regex.IsMatch(text, "^(?'space'\\s*)(?:<p|</p)\\s*>")) {
                    text = Regex.Replace(text, "^(?'space'\\s*)(?:<p|</p)\\s*>", "${space}", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
                }
            }

            if (setPendingP = Regex.IsMatch(text, "</p\\s*>\\s*$", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)) {
                text = Regex.Replace(text, "</p\\s*>(?'space'\\s*)$", "${space}", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
            }

            text = Regex.Replace(text, "<br\\s*/?>", "<br/>", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
            text = Regex.Replace(text, "</p\\s*>(?'space'\\s*)<p\\s*>", "<br/>${space}", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
            text = Regex.Replace(text, "(?:<p|</p)\\s*>", "<br/>", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);

            if (trailingSpace = Regex.IsMatch(text, "\\s+$")) {
                text = Regex.Replace(text, "\\s+$", String.Empty);
            }
            if (leadingSpace = Regex.IsMatch(text, "^\\s+")) {
                text = Regex.Replace(text, "^\\s+", String.Empty);
            }

            text = text.Replace("$", "$$");

            // Render text.
            if (text.Trim().Length > 0) {
                if (leadingSpace) {
                    writer.WriteLine();
                }
                Style emptyStyle = new Style();
                writer.BeginRender(); // write pending tags.
                writer.EnterStyle(emptyStyle); // VSWhidbey 114083
                writer.Write(text);
                writer.ExitStyle(emptyStyle);
                writer.EndRender();
                if (trailingSpace) {
                    writer.WriteLine();
                }
            }
            // Whidbey 19653 transform space as newline.  If we are at the top of the form (before the leading p),
            // don't need literal text -it won't be rendered. Similarly, if we are setting a pending p, no need to writeline.
            else if (!setPendingP && !writer.TopOfForm) {
                Debug.Assert(!isEmpty, "Empty text.  Should have returned before this point.");
                writer.WriteLine();
            }

            if (setPendingP) {
                writer.SetPendingP();
            }
        }
コード例 #44
0
 public void RenderSelectOptionAsAutoPostBack(WmlTextWriter writer, string text, string groupName, string value) {
     if (writer.AnalyzeMode) {
         return;
     }
     writer.WriteFullBeginTag("option");
     writer.WriteBeginTag("onevent");
     writer.WriteAttribute("type", "onpick");
     writer.Write(">");
     writer.WriteBeginTag("go");
     writer.WriteAttribute("href", "#" + WmlTextWriter.PostBackWithVarsCardID);
     writer.Write(">");
     writer.WriteBeginTag("setvar");
     writer.WriteAttribute("name", writer.MapClientIDToShortName(groupName, false));
     writer.WriteAttribute("value", value);
     writer.Write(" />");
     writer.WriteEndTag("go");
     writer.WriteEndTag("onevent");
     writer.WriteEncodedText(text);
     writer.WriteEndTag("option");
     _writtenPostBack = true;
     _usePostBackCards = true;
 }
コード例 #45
0
 private void RenderPostBackUrl(WmlTextWriter writer, string path) {
     if ((String)Browser["requiresAbsolutePostbackUrl"] == "true" && Page != null && Page.Request != null && Page.Response != null) {
         // ApplyAppPathModifier makes the path absolute
         writer.WriteEncodedUrl(Page.Response.ApplyAppPathModifier(path));
     }
     else {
         writer.WriteEncodedUrl(path);
     }
 }
コード例 #46
0
        public virtual void RenderSelectOptionAsPostBack(WmlTextWriter writer, string text, String target, String argument) {
            if (writer.AnalyzeMode) {
                return;
            }

            writer.WriteFullBeginTag("option");
            writer.WriteBeginTag("onevent");
            writer.WriteAttribute("type", "onpick");
            writer.Write(">");
            writer.WriteBeginTag("go");
            writer.WriteAttribute("href", "#" + WmlTextWriter.PostBackWithVarsCardID);
            writer.Write(">");
            if (!String.IsNullOrEmpty(target)) {
                writer.WriteBeginTag("setvar");
                writer.WriteAttribute("name", _postBackEventTargetVarName);
                writer.WriteAttribute("value", target);
                writer.Write(" />");
            }
            if (!String.IsNullOrEmpty(argument)) {
                writer.WriteBeginTag("setvar");
                writer.WriteAttribute("name", _postBackEventArgumentVarName);
                writer.WriteAttribute("value", argument);
                writer.Write(" />");
            }
            writer.WriteEndTag("go");
            writer.WriteEndTag("onevent");
            writer.WriteEncodedText(text);
            writer.WriteEndTag("option");
            _writtenPostBack = true;
            _usePostBackCards = true;
        }
コード例 #47
0
        private void RenderGoActionToPostbackCard(WmlTextWriter writer, String target, String argument, String postUrl) {
            // If using postback cards, render a go action to the given
            // postback card, along with setvars setting the target and
            // argument.
            writer.WriteBeginTag("go");
            writer.Write(" href=\"");
            _writtenPostBack = true;
            writer.Write("#");
            writer.Write(WmlTextWriter.PostBackWithVarsCardID);
            writer.Write("\">");
            writer.WriteBeginTag("setvar");
            writer.WriteAttribute("name", _postBackEventTargetVarName);
            writer.WriteAttribute("value", target);
            writer.Write("/>");
            writer.WriteBeginTag("setvar");
            writer.WriteAttribute("name", _postBackEventArgumentVarName);
            writer.Write(" value=\"");
            if (argument != null) {
                writer.WriteEncodedText(argument);
            }
            writer.Write("\"/>");

            if (!String.IsNullOrEmpty(postUrl)) {
                writer.WriteBeginTag("setvar");
                writer.WriteAttribute("name", _postUrlVarName);
                writer.Write(" value=\"");
                writer.WriteEncodedUrl(postUrl);
                writer.Write("\"/>");
            }

            writer.WriteEndTag("go");
        }
コード例 #48
0
 public virtual void RenderSelectOptionAsPostBack(WmlTextWriter writer, string text) {
     RenderSelectOptionAsPostBack(writer, text, null, null);
 }
コード例 #49
0
        //     Renders the Form query string.
        private void RenderFormQueryString(WmlTextWriter writer, string queryString) {
            if (String.IsNullOrEmpty(queryString)) {
                return;
            }
            writer.Write("?");
            // 

            if (!StringUtil.EqualsIgnoreCase((string)Browser["canRenderOneventAndPrevElementsTogether"], "false")) {
                queryString = writer.ReplaceFormsCookieWithVariable(queryString);
            }
            writer.WriteEncodedText(queryString);
        }
コード例 #50
0
        public virtual void RenderSelectOptionWithNavigateUrl(WmlTextWriter writer, String text, string navigateUrl) {
            if (writer.AnalyzeMode) {
                return;
            }

            writer.WriteBeginTag("option");
            writer.WriteAttribute("onpick", navigateUrl);
            writer.Write(">");
            writer.WriteEncodedText(text);
            writer.WriteEndTag("option");
        }
コード例 #51
0
        //     Render a complete form post in a go action.  This is used when rendering a postback card, or when
        //     rendering a go action that posts back directly rather than redirecting to a postback card.
        private void RenderFormPostInGoAction(WmlTextWriter writer, string target, string argument, WmlPostFieldType postFieldType, String postUrl) {
            writer.WriteBeginTag("go");
            writer.Write(" href=\"");

            if (!Page.ContainsCrossPagePost) {
                RenderPostBackUrl(writer, Page.RelativeFilePath);
                RenderFormQueryString(writer, QueryString);
            }
            else if (!String.IsNullOrEmpty(postUrl)) {
                RenderPostBackUrl(writer, postUrl);
            }
            else {
                writer.Write("$(");
                writer.Write(_postUrlVarName);
                if (!StringUtil.EqualsIgnoreCase((string)Browser["requiresNoescapedPostUrl"], "false")) {
                    writer.Write(":noescape");
                }
                writer.Write(")");
             }
            writer.Write("\"");

            string method = Page.Form.Method;
            RenderFormMethodAttribute(writer, method);
            writer.Write(">");

            string clientState = ClientState;
            if (clientState != null) {
                ICollection stateChunks = Page.DecomposeViewStateIntoChunks();

                int numChunks = stateChunks.Count;
                if (numChunks > 1) {
                    RenderStatePostField(writer, Page.ViewStateFieldCountID, stateChunks.Count.ToString(CultureInfo.CurrentCulture));
                }

                int count = 0;
                foreach (String state in stateChunks) {
                    string key = Page.ViewStateFieldPrefixID;
                    if (count > 0 ) {
                        key += count.ToString(CultureInfo.CurrentCulture);
                    }
                    RenderStatePostField(writer, key, state);
                    ++count;
                }
            }

            RenderReferrerPagePostField(writer);
            RenderTargetAndArgumentPostFields(writer, target, argument, postFieldType);
            RenderPostFieldVariableDictionary(writer, _dynamicPostFields);
            RenderPostFieldDictionary(writer, _staticPostFields);
            // 
            writer.WriteEndTag("go");
        }
コード例 #52
0
        public virtual void RenderSelectOption(WmlTextWriter writer, String text, String value) {
            if (writer.AnalyzeMode) {
                return;
            }

            writer.WriteBeginTag("option");
            writer.WriteAttribute("value", value, true);
            writer.Write(">");
            writer.WriteEncodedText(text);
            writer.WriteEndTag("option");
        }
コード例 #53
0
 //     Render the method attribute of a go action.
 private void RenderFormMethodAttribute(WmlTextWriter writer, string method) {
     // Method defaults to get in WML, so write it if it's not.
     if (StringUtil.EqualsIgnoreCase(method, "post")) {
         writer.WriteAttribute("method", "post");
     }
 }
コード例 #54
0
        // Render a select option.
        public virtual void RenderSelectOption(WmlTextWriter writer, string text) {
            if (writer.AnalyzeMode) {
                return;
            }

            writer.WriteFullBeginTag("option");
            writer.WriteEncodedText(text);
            writer.WriteEndTag("option");
        }
コード例 #55
0
 public virtual void RenderEndPostBack(WmlTextWriter writer, String target, String argument, String postUrl) {
     if (writer.AnalyzeMode) {
         // Analyze postbacks to see if postback cards should
         // be rendered.
         AnalyzePostBack(WmlPostFieldType.Submit);
     }
     else {
         RenderGoAction(writer, target, argument, postUrl);
         writer.WriteEndTag("anchor");
     }
 }
コード例 #56
0
 //     If the form action corresponds to a cross page post, render the referrer page in a post field.
 private void RenderReferrerPagePostField(WmlTextWriter writer) {
     if (Page.ContainsCrossPagePost) {
         writer.WritePostField(Page.previousPageID, Page.EncryptString(Page.Request.CurrentExecutionFilePath));
     }
 }
コード例 #57
0
 // Renders a card tag.
 protected virtual void RenderBeginCardTag(WmlTextWriter writer) {
     writer.WriteLine("<card>");
     writer.Indent++;
 }
コード例 #58
0
 //     Render a postfield dictionary with variable values.
 private void RenderPostFieldVariableDictionary(WmlTextWriter writer, IDictionary postFieldDictionary) {
     foreach (DictionaryEntry entry in postFieldDictionary) {
         writer.WritePostFieldVariable((string)entry.Key, (string)entry.Value);
     }
 }
コード例 #59
0
        private void AnalyzeAndRenderHtmlForm(WmlTextWriter writer, HtmlForm form) {
            if (form == null) {
                return;
            }

            writer.SetAnalyzeMode(true);
            RenderForm(writer, form);
            Page.ResetOnFormRenderCalled();
            writer.SetAnalyzeMode(false);
            RenderForm(writer, form);
            writer.WriteLine();
        }
コード例 #60
0
        //     Render postfields for the event target and the event argument.
        private void RenderTargetAndArgumentPostFields(WmlTextWriter writer, string target, string argument, WmlPostFieldType postFieldType) {
            // Write the event target.
            if (target != null) {
                writer.WritePostField(Page.postEventSourceID, target);
            }
            else {
                // Target is null when the action is generated from a postback
                // card itself. In this case, set the event target to whatever
                // the original event target was.
                writer.WritePostFieldVariable(Page.postEventSourceID, _postBackEventTargetVarName);
            }

            // Write the event argument, if valid.

            if (argument != null) {
                if (postFieldType == WmlPostFieldType.Variable) {
                    writer.WritePostFieldVariable(Page.postEventArgumentID, argument);
                }
                else {
                    writer.WritePostField(Page.postEventArgumentID, argument);
                }
            }
        }