<HTML dir=ltr><HEAD><TITLE>RE: [Xerte] use of isFunc and passing of parameters</TITLE>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.6000.17023" name=GENERATOR></HEAD>
<BODY>
<DIV id=idOWAReplyText69614 dir=ltr>
<DIV dir=ltr><FONT face=Arial color=#000000 size=2>You could write a template in such a way as to check for the existence of the function, and then create it if necessary. If its the same function, it doesn't matter where it is, unless it does things to the file structure. You need to know it is the right function though...</FONT></DIV><FONT face=Arial size=2></FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial size=2>I have also found you need to reference the whole path when using asfunction.</FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial size=2>The scope issue is correct. args exists in _level0.engine, and there is only&nbsp;one args. args really creates the illusion of true functions that you can pass parameters to. Xerte functions might be more usefully thought of as subroutines, args is used as a way of exchanging data.</FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><BR></DIV>
<DIV dir=ltr>
<HR tabIndex=-1>
</DIV>
<DIV dir=ltr><FONT face=Tahoma size=2><B>From:</B> xerte-bounces@lists.nottingham.ac.uk on behalf of Dave Burnett<BR><B>Sent:</B> Wed 21/04/2010 16:51<BR><B>To:</B> Xerte list<BR><B>Subject:</B> RE: [Xerte] use of isFunc and passing of parameters<BR></FONT><BR></DIV>
<DIV><BR><BR>
<P><FONT size=2>1) Julian mentioned duplicate named functions will just overwrite each other.<BR>So I see no harm in containing them within the wizard (if they are identical).<BR>My Entry pane location is just where I would locate a function in a traditionally structured piece, since if changes need to be made, there would be a single "point of access".<BR><BR><BR>2) I think using the fully qualified path to a function, i.e. href="asfunction:_level0.engine.navToPage,destPageName" is the correct syntax to use. It appears if it is mixed with the short-hand function call "navToPage(destPageName)", there are issues.<BR>So as long as you use fully qualified paths in both cases, it functions as expected.<BR><BR>As to why args acts as it does when the 2 cases are mixed, I would guess that it is a scope issue that is solved by using the fully qualified path in all instances.<BR><BR>Dave<BR><BR>----------------------------------------<BR>&gt; Date: Wed, 21 Apr 2010 12:58:26 +0100<BR>&gt; From: johnathan.kemp@ntlworld.com<BR>&gt; To: xerte@lists.nottingham.ac.uk<BR>&gt; Subject: RE: [Xerte] use of isFunc and passing of parameters<BR>&gt; CC: Julian.Tenney@nottingham.ac.uk<BR>&gt;<BR>&gt; Thank you Julian and Dave for your comments and observations.<BR>&gt;<BR>&gt; I used a function in the routed hotspot wizard because I thought that a function would provide a tidier and more elegant solution. I can avoid the whole issue of the current value of args[0] in the routed hotspot wizard by including all the code in the navToPage function as part of the handleClick script and deleting the script that defines the function. That way there is no function, no function call, and the value of args[0] is irrelevant to the functioning of the wizard.<BR>&gt;<BR>&gt; I am more concerned about the use of<BR>&gt;<BR>&gt; href="asfunction:_level0.engine.navToPage,destPageName"<BR>&gt;<BR>&gt; in the Routed Plain Text Wizard. I cannot get away in this case without a function.<BR>&gt;<BR>&gt; I appreciate the logic of including the navToPage function once in the Interface's Entry Frame, but this is not appropriate when creating wizards as the Wizard needs to be self sufficient, and not dependent on a function that exists elsewhere in the project.<BR>&gt;<BR>&gt; I have tested a project with more than one Routed Plain Text wizard in it and the navigation works between the pages - i.e. each page can call the other pages without compromising there ability to call the pages they have links to.<BR>&gt;<BR>&gt; However I am concerned that their apparent ability to compromise the value of args[0] may affect the use of functions that developers have added to their projects.<BR>&gt;<BR>&gt; Would others have any reservations about the use of<BR>&gt;<BR>&gt; href="asfunction:_level0.engine.navToPage,destPageName"<BR>&gt;<BR>&gt; in a page that hosted a function?<BR>&gt;<BR>&gt; I guess I am looking for a second opinion, from those who know the innards of Xerte better than I do, as to whether the Routed Text Wizard is safe to be released for public use?<BR>&gt;<BR>&gt;<BR>&gt; Kind regards<BR>&gt;<BR>&gt; Johnathan<BR>&gt;<BR>&gt; ---- Julian Tenney&nbsp; wrote:<BR>&gt;&gt; It's not ideal , but they'll just overwrite each other<BR>&gt;&gt;<BR>&gt;&gt; -----Original Message-----<BR>&gt;&gt; From: xerte-bounces@lists.nottingham.ac.uk [<A href="mailto:xerte-bounces@lists.nottingham.ac.uk">mailto:xerte-bounces@lists.nottingham.ac.uk</A>] On Behalf Of johnathan.kemp@ntlworld.com<BR>&gt;&gt; Sent: Tuesday, April 20, 2010 4:06 PM<BR>&gt;&gt; To: Dave Burnett<BR>&gt;&gt; Cc: Xerte discussion list<BR>&gt;&gt; Subject: RE: [Xerte] use of isFunc and passing of parameters<BR>&gt;&gt;<BR>&gt;&gt; Dave,<BR>&gt;&gt;<BR>&gt;&gt; I thought that in Xerte each page existed separately, i.e. the code for the page was only loaded when that particular page was being displayed, so that in practice only one copy of the navToPage function would exist at any one time.<BR>&gt;&gt;<BR>&gt;&gt; Am I wrong in this assumption?<BR>&gt;&gt;<BR>&gt;&gt; Kind regards<BR>&gt;&gt;<BR>&gt;&gt; Johnathan<BR>&gt;&gt; ---- Dave Burnett&nbsp; wrote:<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Johnathan, one thing to look out for is you have 3 identical function script icons called "navToPage".<BR>&gt;&gt;&gt; I think that may lead to some weird issues when it comes to debugging.<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; ----------------------------------------<BR>&gt;&gt;&gt;&gt; Date: Mon, 19 Apr 2010 23:46:07 +0100<BR>&gt;&gt;&gt;&gt; From: johnathan.kemp@ntlworld.com<BR>&gt;&gt;&gt;&gt; To: d_b_burnett@hotmail.com<BR>&gt;&gt;&gt;&gt; Subject: RE: [Xerte] use of isFunc and passing of parameters<BR>&gt;&gt;&gt;&gt; CC: xerte@lists.nottingham.ac.uk<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; I have attached a zipped up sample xerte project.<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; If you unzip it and open it in Xerte you will be able to see what I am referring to.<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; The use of href="asfunction:_level0.engine.navToPage,destPageName", appears to be setting the value of args[0] such that the value of the passed parameter when using navToPage(pageName) is ignored.<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; The only solution I have found is to set args[0] in the script that calls the function and then to pass args[0] as the parameter, e.g.<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; args[0] = hsData.hotspot[icon.parentNode.index()].destination;<BR>&gt;&gt;&gt;&gt; navToPage(args[0]);<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; This does not feel right. I don't understand what it is that the hyperlink approach is doing that is affecting the receipt of the passed parameter.<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; Any ideas would be most welcome.<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; Kind regards<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; Johnathan<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; ---- Dave Burnett wrote:<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; Do you have a sample file I could take a peek at?<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; Dave<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; ----------------------------------------<BR>&gt;&gt;&gt;&gt;&gt;&gt; Date: Sun, 18 Apr 2010 22:33:38 +0100<BR>&gt;&gt;&gt;&gt;&gt;&gt; From: johnathan.kemp@ntlworld.com<BR>&gt;&gt;&gt;&gt;&gt;&gt; To: xerte@lists.nottingham.ac.uk<BR>&gt;&gt;&gt;&gt;&gt;&gt; Subject: Re: [Xerte] use of isFunc and passing of parameters<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; Just to clarify my first posting.<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; I originally tested the second method, that of calling the function from a script e.g. navToPage(parameter1,parameter2,parameter3), but found that only parameter 1 was passed through to the function as args[0]. args[1] and args[2] were undefined. However this still left me with the situation where if I had two wizards.<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; The routed hotspot wizard that called the function from a script using navToPage(destPageName)<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; and<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; The routed text wizard that called the function using href="asfunction:_level0.engine.navToPage,destPageName"<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; Pages created with the routed hotspot wizard work fine until a page based on the routed text wizard is used to redirect the user to a page based on the routed hotspot wizard. At which point the args[0] from the routed text page appears to persist so that the routed hotspot page effectively redirects to itself, rather than the page name passed to it.<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; The only solution appears to redefine args[0] to the destination page and then call navToPage(destPageName)<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; I hope this makes things a bit clearer.<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; Any ideas as to what is happening here and how to modify things so that the parameter is passed correctly, without the work around would be much appreciated.<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; Kind regards<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; Johnathan<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; ---- johnathan.kemp@ntlworld.com wrote:<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; I am developing a couple of page wizards, both of which provide the capability to define exit points from the page.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; The first is a text page that allows you to define hyperlinks to other pages in the project. This is supported by a script where isFunc = 1.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; I am calling it with<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Routed Tab.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; The destination page name, in this case rtFinal, is received as args[0] in the script navToPage. It appears only possible to pass one parameter.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; I have a second wizard based on the hotspot in which any hotspot can have a destination page assigned to it. I have a similar function script in this wizard which is called by the script that runs when the hotspot is clicked on.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; This script calls the function by navToPage(parameter1,parameter2,parameter3)<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; The results are received by the script in args[0],args[1],args[2]<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; All has worked well when the pages work in isolation, but once the text page has been run this then appears to define the args array at a level that dominates over the hotspot page. The only way I can get this to work is if I set args[0] before I call the function and then pass args[0] as a parameter, otherwise it picks up the value of args[0] set by the text page.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Can anyone shed any light on what is going on here?<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Do I need to declare a new array args at the start of every page?<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; How would you operate two functions in a page if every function is going to handle its parameters as the same array args[]?<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Kind regards<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Johnathan<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Xerte mailing list<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Xerte@lists.nottingham.ac.uk<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <A href="http://lists.nottingham.ac.uk/mailman/listinfo/xerte">http://lists.nottingham.ac.uk/mailman/listinfo/xerte</A><BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<BR>&gt;&gt;&gt;&gt;&gt;&gt; Xerte mailing list<BR>&gt;&gt;&gt;&gt;&gt;&gt; Xerte@lists.nottingham.ac.uk<BR>&gt;&gt;&gt;&gt;&gt;&gt; <A href="http://lists.nottingham.ac.uk/mailman/listinfo/xerte">http://lists.nottingham.ac.uk/mailman/listinfo/xerte</A><BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; _________________________________________________________________<BR>&gt;&gt;&gt;&gt;&gt; The New Busy is not the too busy. Combine all your e-mail accounts with Hotmail.<BR>&gt;&gt;&gt;&gt;&gt; <A href="http://www.windowslive.com/campaign/thenewbusy?tile=multiaccount&amp;ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_4">http://www.windowslive.com/campaign/thenewbusy?tile=multiaccount&amp;ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_4</A><BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; _________________________________________________________________<BR>&gt;&gt;&gt; The New Busy think 9 to 5 is a cute idea. Combine multiple calendars with Hotmail.<BR>&gt;&gt;&gt; <A href="http://www.windowslive.com/campaign/thenewbusy?tile=multicalendar&amp;ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_5">http://www.windowslive.com/campaign/thenewbusy?tile=multicalendar&amp;ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_5</A><BR>&gt;&gt;<BR>&gt;&gt; _______________________________________________<BR>&gt;&gt; Xerte mailing list<BR>&gt;&gt; Xerte@lists.nottingham.ac.uk<BR>&gt;&gt; <A href="http://lists.nottingham.ac.uk/mailman/listinfo/xerte">http://lists.nottingham.ac.uk/mailman/listinfo/xerte</A><BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; Xerte mailing list<BR>&gt; Xerte@lists.nottingham.ac.uk<BR>&gt; <A href="http://lists.nottingham.ac.uk/mailman/listinfo/xerte">http://lists.nottingham.ac.uk/mailman/listinfo/xerte</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<BR>_________________________________________________________________<BR>Hotmail is redefining busy with tools for the New Busy. Get more from your inbox.<BR><A href="http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_2_______________________________________________">http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_2_______________________________________________</A><BR>Xerte mailing list<BR>Xerte@lists.nottingham.ac.uk<BR><A href="http://lists.nottingham.ac.uk/mailman/listinfo/xerte">http://lists.nottingham.ac.uk/mailman/listinfo/xerte</A><BR></FONT></P></DIV></BODY></HTML>