i changed it to accept path like this:

/mypath/:value1/abc/def/:value2
/mypath/{value1}/abc/def/{value2}



but one thing i dont understand:

instead of:
 var reFind = /:\w*|{\w*}/gi;

i can not write it like this:
 var reFind = new RegExp(":\w*|{\w*}","gi");

why?
i get in safari (OSX) only ":" as matchresult!?






(function() {

addEventListener("click", function(event)
{
  var link = findParent(event.target, "a");
  if (link)
    {
      if (link.getAttribute("type") == "submit_rest")
        submitRestForm(findParent(link, "form"));
      else
        return;
      event.preventDefault();
     }
}, true);


function submitRestForm(form)
{
   iui.showPageByHref(encodeRestForm(form), null, form.method);
}

function encodeRestForm(form)
{

 var path = form.action;

 var reFind = /:\w*|{\w*}/gi;
 var reClean = /[:{}]/gi;
 //var reFind = new RegExp(":\w*|{\w*}","gi");
 var matches = path.match(reFind);

 for(var matchIndex in matches){
   var match = matches[matchIndex];
   var fieldName = match.replace(reClean,"");
   var fieldValue = form.elements[fieldName].value;
   path = path.replace(match,encodeURIComponent(fieldValue));
 }
 return path;
}

function findParent(node, localName)
{
   while (node && (node.nodeType != 1 || node.localName.toLowerCase() !
= localName))
     node = node.parentNode;
   return node;
}

})();


On 18 Okt., 23:53, MN <[email protected]> wrote:
> this is my working solution now, i changed it a little bit.
>
> i try to design it as a standalone addition without touching the
> original iui.js
>
> i copy the most of code and only change this lines
> - in "encode" from "=" to "/"
> - in submitRestForm from "?" to "/"
>
> (i changed the order of select / input / checkbox to fit my personal
> order of the path)
>
> one problem:
> 1. i can not hook completly into the "big onlick" function i need a
> additional useless target to not fire the last function from the "big
> onlick function"
> 2. i need to define the function findParent twice
>
> addtional todo:
> - do something how to define the order of the input elements as
> tagname list
> - or as the input name list so i can define exactly the rest path
> - or like the idea which you described here:
>
> > You should be able to add a couple of lines to the submitForm routine
> > to assemble your 'restful path' in the "action" string that is currently
> > coming from form.action and being passed to iui.showPageByHref().
>
> so i can define it like this with the names:
> form.action = "search/type/{user_type}/name/{search_for_name}
>
> CodeSnippets:
>
> additional RestForm.js
>
> (function() {
>
> addEventListener("click", function(event)
> {
>   var link = findParent(event.target, "a");
>   if (link)
>     {
>       if (link.getAttribute("type") == "submit_rest")
>         submitRestForm(findParent(link, "form"));
>       else
>         return;
>       event.preventDefault();
>      }
>
> }, true);
>
> function submitRestForm(form)
> {
>         iui.showPageByHref(form.action + "/" + encodeRestForm(form), null,
> form.method);
>
> }
>
> function encodeRestForm(form)
> {
>         function encode(inputs)
>         {
>                 for (var i = 0; i < inputs.length; ++i)
>                 {
>                         if (inputs[i].name)
>         args.push(inputs[i].name + "/" + encodeURIComponent(inputs
> [i].value));
>                 }
>         }
>
>         var args = [];
>         encode(form.getElementsByTagName("select"));
>   encode(form.getElementsByTagName("input"));
>         encode(form.getElementsByTagName("textarea"));
>         return args.join("/");
>
> }
>
> function findParent(node, localName)
> {
>    while (node && (node.nodeType != 1 || node.localName.toLowerCase() !
> = localName))
>      node = node.parentNode;
>    return node;
>
> }
> })();
>
> now my a link i changed like this in haml
>
> %a.whiteButton{ :type=>"submit", :href=>"#"} Search
> to
> %a.whiteButton
> { :type=>"submit_rest", :href=>"#", 
> :target=>"_do_nothing_in_default_onclick_event"}
> Search
>
> On 15 Okt., 23:43, Sean Gilligan <[email protected]> wrote:
>
>
>
> > MN wrote:
> > > i have a restful path for my application:
>
> > > get '/search/type/:user_type/name/:search_for_name'
>
> > Using standard form GET query parameters is restful, too.  If adding an
> > option for query parameters is possible/easy you should try that.
>
> > > and with iui i like to make a form with two input fields
>
> > And those  two input fields need to be put into the URL path?
>
> > > but how i can do it?
>
> > It's probably easiest to patch iUI to do this. Use either the iui-0.40-dev1 
> > zip release or the latest version from Mercurial.    You should be able to 
> > add a couple of lines to the submitForm routine to assemble your 'restful 
> > path' in the "action" string that is currently coming from form.action and 
> > being passed to iui.showPageByHref().
>
> > > i like that my form uses the input values and create a get?
>
> > > is there some automatic way?
>
> > Not yet.  If you create an Issue for this in the issue database, we'll
> > at the very least think about creating an extension hook so you can do
> > this without modifying iui.js itself.
>
> > > i think the showPageByHref is the right function for it?
>
> > Yes.  (as explained above)
>
> > -- Sean

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"iPhoneWebDev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/iphonewebdev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to