NetTalk Central

NetTalk Web Server => Web Server - Ask For Help => Topic started by: John Fligg on January 13, 2012, 02:30:35 PM

Title: Adding FM3 to my app
Post by: John Fligg on January 13, 2012, 02:30:35 PM
As I am developing multiple login user capability I need to add FM3 to my app so that when  the user logs in, presumably the web app will update the files automatically in each user data folder.

I created a RTFM procedure and populated it etc. However when I run the app and manually call the  RTFM procedure it tells me the page cannot be found. I have not created a NetWeb page but a normal window and populated the FM3 controls onto that.

So how do you add FM3 to an app and get it to run?

Thanks

John
Title: Re: Adding FM3 to my app
Post by: DonRidley on January 13, 2012, 03:51:44 PM
Hey John,

Explain what exactly what you are trying to do please?  What do you mean by, "multiple login user capability?"

Are you meaning the ability to have multiple user accounts to access one web app?

If so, you don't need FM3 for that.  You need FM3 for your structure changes but not this.

Don
Title: Re: Adding FM3 to my app
Post by: bruce2 on January 13, 2012, 08:42:00 PM
You can add fm3 to an app to update the files but you can't do the RTFM current remotely.
Title: Re: Adding FM3 to my app
Post by: John Fligg on January 14, 2012, 12:38:51 AM
Hmm now I'm confused. I'll start over ...

Many users will access the one web app using a login id. That means that each user has their own data file. So my folder structure is .....

web app files ......
      web folder
      data folder
               user1 folder
               user2 folder
               user3 folder

So when I provide an update to the FILES I need FM3 to run to update those just as with a traditional Clarion app.

The problem is that I cannot run RTFM (as a separate app) in every single user folder.

HTH

John

Title: Re: Adding FM3 to my app
Post by: bruce2 on January 14, 2012, 08:54:15 PM
I'm not sue why you think you need the rtfm procedure at all. Fm3 will convert the files when it opens them.

Cheers
Bruce
Title: Re: Adding FM3 to my app
Post by: John Fligg on January 15, 2012, 01:27:14 AM
Sorry Bruce - that's my point. When I added FM3 I could not compile my app.

Will try again today and post any problems.

John
Title: Re: Adding FM3 to my app
Post by: John Fligg on January 15, 2012, 02:22:10 AM
OK got it working but 2 problems, one minor one major.

See attached - for some reason it does not like the MessageBoxLogFile. I took the file out of the dct and it worked but would be nice to know what the problem is.

Now for the major one ...

This is a MULTI login application. So if I have 1000 users all with their own data folders FM3 does not work as per the docs. Setting the upg path in the FM3 init embed triggers when the server app starts.

So I ended up putting the setupg path in the WebHandler Process link embed where I set my data paths. i.e.

ds_SetUPGPath('Data\' & clip(p_web.gsv('Login_ID')))
Glo:DataPathContact  = 'Data\' & clip(p_web.gsv('Login_ID')) & '\Contact.tps'
etc.

As all my user data folders are in sub folders of \Data'

First of all, is this correct (as it seems sensible to do it there) and secondly is there any impact on speed as every time the application makes a request to the server app FM3 will run all be it instantaneously.

I am wondering if the Options setting on FM3 "Open upg once" may help here. Also hioding the yellow window would probably be a good idea which i just noticed in the template settings.

Thanks

John

[attachment deleted by admin]
Title: Re: Adding FM3 to my app
Post by: John Fligg on January 15, 2012, 02:55:56 AM
Ok this has turned into a nightmare now and my app will not run properly. Here is why ...

Again a multi login scenario. Say I have 2 users UserA and User B. My folder structure is as follows:

Application Folder
         Data
                  User A Data
                  User B Data
 
In the web handler I set the data path using:

ds_SetUPGPath('Data\' & clip(p_web.gsv('Login_ID')))

I run my app and an upg.tps file is put into the Data folder. That is because at that time no user has logged in so it creates a duplicate set of files.

Now the user logs in and FM3 runs again and creates an upg.tps file in the User A Data folder. Great that's what I want.

BUT what is now happening is that every time a screen is accessed FM3 is telling me there is a file version not been updated. I am not absolutely sure why that is but I suspecting that the fact that FM3 is running multiple times is the cause.

So really I am pretty confused now. I wonder if there is a way to get the upg path set when the user longs in and only then? Or if I can make that upg path declaration conditional?

Thanks

John
Title: Re: Adding FM3 to my app
Post by: Bruce on January 15, 2012, 09:00:38 PM
Hi John,

you're taking something absurdly simple, and making it complicated.

I recommend you start again. Remove fm3 from your app completely - delete the upg.tps files, remove your embed code.

Then
a) add the Fm3 global extension.
b) do not do anything else.

Specifically do not add the Runtime File Manager procedure. You cannot use that via a web interface.

(Aside: The reason you got the error with the MessageBoxLogfile, which is in the RuntimeFileManager screen, is because you have the RTFM screen set to use all the files in the dict, but you are not generating all the files in your dict in this application.)

You do not need (nor I think want) multiple upg files. A single upg file will suffice.

In the longer run you will want to create a separate exe, which runs through all the data sets, opening all the files therein. This will allow you to upgrade all the files after an upgrade, without waiting for the user to access a file. Much better from a performance point of view to do the upgrade when the user isn't waiting. But that's down the road and not something you need to worry about now.

Cheers
Bruce

Title: Re: Adding FM3 to my app
Post by: John Fligg on January 16, 2012, 07:33:12 AM
OH!! I thought you HAD to have RTFM for FM3 to work.

Anyway - I am going to frame this post (or your last one) - you said delete the upg.tps file <g> - you must never never never do that according to the docs. <g>

I am still astounded it's as simple as that. I had better read up again exactly what RTFM does!

Thanks

John
Title: Re: Adding FM3 to my app
Post by: John Fligg on January 16, 2012, 07:39:34 AM
Oh sorry Bruce - I need to set the upg.tps location do I? Or does it default to the exe path?

You see I did not realise FM3 was clever enough to have the data files in one folder but the upg.tps file in another. That is what has been confusing me I think.

Thanks

John
Title: Re: Adding FM3 to my app
Post by: bruce2 on January 16, 2012, 11:25:31 AM
No, they don't need to be in the same location.
Title: Re: Adding FM3 to my app
Post by: DonRidley on January 16, 2012, 03:04:31 PM
John,

Check out ProPath from www.lansrad.com

You can designate the UPG file location and the location of the data tables.

Completely compatible with NetTalk. 

Don

Title: Re: Adding FM3 to my app
Post by: John Fligg on January 16, 2012, 03:14:52 PM
I do have ProPath but trying to minimise the 3rd party templates for this app.

Bruce now has explained that the upg file does NOT have to be in the same path. Still can't get it to upgrade the files but I will test more in the morning. I think I might have a handle on it now.

Thanks

John
Title: Re: Adding FM3 to my app
Post by: John Fligg on January 16, 2012, 04:30:04 PM
Don - what I do not understand at all is this ....

I have FM3 in my app (2 actually). I do NOT set the upg file location and leave it in the working folder.

On my development machine everything works perfectly. The file is upgraded (yellow flash).

So I now send that app to the server, I have NO upg files on the server but when I run the app I get error 47. The upg file is created but why the error 47 on the server and not on the development machine.

Yes, the data set on the server is different but that is what FM3 is for.

John
Title: Re: Adding FM3 to my app
Post by: terryd on January 16, 2012, 10:16:52 PM
John
AFAIK to use FM3 you need to
1. Run a the app without FM3 to ensure that all files are in sync with the dictionary
2. add fm3
3. compile and run the app which creates a upg file with the current (clean) status of all the files
4. After any changes FM3 will update from the base correct state and update the upg file

What I think you have done is have tables which are not in sync with the current dictionary and no base upg file.

This certainly is the way I have always worked (doesn't mean I'm right, but I've never had a problem).
Title: Re: Adding FM3 to my app
Post by: Bruce on January 17, 2012, 12:34:36 AM
Terry is right.