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
-~----------~----~----~----~------~----~------~--~---