[rt-users] Need help understanding mason and query args

Kelly F. Hickel kfh at mqsoftware.com
Wed Aug 31 10:58:30 EDT 2005


Ruslan,
	It looks like that worked, thanks!  I'll have to review all of
the Statistics code's use of FORM, as I just copied this from something
in another file.

-- 

Kelly F. Hickel
Senior Software Architect
MQSoftware, Inc
952.345.8677
kfh at mqsoftware.com


> -----Original Message-----
> From: Ruslan Zakirov [mailto:ruslan.zakirov at gmail.com]
> Sent: Wednesday, August 31, 2005 9:50 AM
> To: Kelly F. Hickel
> Cc: rt-users at lists.bestpractical.com
> Subject: Re: [rt-users] Need help understanding mason and query args
> 
> This problem is not about Mason, but HTML standard. Your form tag has
> no action attribute, but this attribute is required by
> standard(http://www.w3.org/TR/html401/interact/forms.html#edef-FORM).
> There is no defined behaviour of UAs when this attribute is not
> defined, but as I think all behave similar they use current URI as
> action attribute.
> When you click submit button your data goes to "http://...?sMonth=2"
> and POST data also has sMonth new value. Mason parse both data
> sources: URI params and POST stream for other params, Mason see two
> arguments with same name and construct array. You can use this fact to
> send mutiply values with one name.
> 
> I hope this is right answer :)
> 
> On 8/31/05, Kelly F. Hickel <kfh at mqsoftware.com> wrote:
> > I'm trying to add bookmarkable urls to the Statistics stuff, and
almost
> > have it working.  But, I don't seem to understand what mason is
trying
> > to do with query args.  Mason seems to be doing what it's documented
to
> > do, I just don't understand why, or what to do about it.
> >
> > If you take the text below, and save it to
/opt/rt3/local/html/foo.html,
> > and then go to the URL http://MYRT/foo.html?sMonth=2 then it will do
> > what I expect, the text area will show that the value of the sMonth
arg
> > is two, and the pull downs showing the start date will display March
1,
> > 2010 (ok, maybe that's odd, but this is a stripped down test).
> >
> > Now, if you chose a different month and hit the update button, when
the
> > page gets built again, the sMonth arg is an array ref, with the new
> > value you selected, and the original value specified in the URL.
This
> > isn't what I expected, although reading the mason doc, it's supposed
to
> > do this.
> >
> > Now, I'm not a mason, apache, or web page developer normally, but
most
> > of this has seemed straight forward, up to now.  I'm sure that I'm
> > missing something basic, can anyone tell me what it is?  (short
words,
> > please! ;> )
> >
> > Here's foo.html:
> >
> > <& /Elements/Header, Title => loc("Test page") &>
> > <& /Elements/Tabs,  Title => loc("Test page") &>
> >
> > <h3>Description</h3>
> > <p>This is a test page</p>
> > <form method="POST">
> >
> >
> > <table>
> >   <tr>
> >     <td>Start Date:</td>
> >     <td>
> >       <select name="sMonth" >
> > % for ($n=0;$n<=$#months;$n++){
> > %       if ($sMonth eq $n){
> > %               $selected ="selected";
> > %       }else {
> > %               $selected ="";
> > %       }
> >           <option  value=<% $n %> <% $selected %> ><% $months[$n]
> > %></option>
> > %}
> >       </select>
> >     </td>
> >     <td>
> >       <select name="sDay" >
> > % for ($n=1;$n<=31;$n++){
> > %       if ($sDay == $n ){
> > %               $selected ="selected";
> > %       }else {
> > %               $selected ="";
> > %       }
> >             <option  value=<% $n %> <% $selected %> ><% $n
%></option>
> > % }
> >       </select>
> >     </td>
> >     <td>
> >           <select name="sYear">
> > %
> > % for ($n=0;$n <= scalar @years-1;$n++){
> > %       if ($years[$n] == $sYear){
> > %               $selected ="selected";
> > %       }else{
> > %               $selected ="";
> > %       }
> >           <option value=<% $years[$n] %> <% $selected %> ><%
$years[$n]
> > %></option>
> > % }
> >           </select>
> >     </td>
> >   </tr>
> > </table>
> >
> > <br>
> > <INPUT TYPE="submit" VALUE="<&|/l&>Update Page</&>"</INPUT>
> >
> > <br>
> > % $debugtext .= "value of sMonth is |$sMonth|\n";
> > % $debugtext .= "ref of sMonth is " . ref($sMonth) . "\n";
> > % if (ref $sMonth) {$debugtext .= "join of sMonth is " . join(',',
> > @$sMonth) . "\n";}
> > <TEXTAREA NAME=debugarea COLS=50 ROWS=20><% $debugtext %></TEXTAREA>
> >
> > </form>
> >
> > <%ARGS>
> > $sMonth=>undef
> > $sDay=>undef
> > $sYear=>undef
> > </%ARGS>
> >
> > <%INIT>
> > my $n;
> > my $selected;
> > my $debugtext="";
> > my @years =('2010', '2009', '2008', '2007', '2006', '2005', '2004',
> > '2003' ,'2003' ,'2002');
> > my @months=qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/;
> > my %monthsMaxDay = (
> >                  0 => 31,  # January
> >                  1 => 29,  # February, allow for leap year
> >                  2 => 31,  # March
> >                  3 => 30,  # April
> >                  4 => 31,  # May
> >                  5 => 30,  # June
> >                  6 => 31,  # July
> >                  7 => 31,  # August
> >                  8 => 30,  # September
> >                  9 => 31,  # October
> >                  10=> 30,  # November
> >                  11=> 31   # December
> >                  );
> >
> > </%INIT>
> >
> > --
> > Kelly F. Hickel
> > Senior Software Architect
> > MQSoftware, Inc
> > 952.345.8677
> > kfh at mqsoftware.com
> >
> >
> > _______________________________________________
> > http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
> >
> > Be sure to check out the RT Wiki at http://wiki.bestpractical.com
> >
> > Buy your copy of our new book, RT Essentials, today!
> >
> > Download a free sample chapter from http://rtbook.bestpractical.com
> >
> 
> 
> 
> --
> Best regards, Ruslan.




More information about the rt-users mailing list