Atozed Forums
First Page from URL - Printable Version

+- Atozed Forums (https://www.atozed.com/forums)
+-- Forum: Atozed Software Products (https://www.atozed.com/forums/forum-1.html)
+--- Forum: IntraWeb (https://www.atozed.com/forums/forum-3.html)
+---- Forum: English (https://www.atozed.com/forums/forum-16.html)
+----- Forum: IntraWeb General Discussion (https://www.atozed.com/forums/forum-4.html)
+----- Thread: First Page from URL (/thread-113.html)



First Page from URL - AllBars - 04-21-2018

Hi I have created a new Intraweb (standalone) app with two forms (blueform and greenform) and have given them URL aliases in the OnConfig handler of the server controller using:

void __fastcall TIWServerController::IWServerControllerBaseConfig(TObject *Sender)
{
TGreenForm::SetURL ("/", "Green.html") ;
TBlueForm::SetURL ("/", "Blue.html") ;
}

The green form is set as the main form

If I try to start a session from a browser with the URL: http://127.0.0.1:8888/Blue.html I don't get the blue form, I get the green form. How can I fix this please?

Once the session has been started, the URL does work

I have Intraweb 14.2.7 Ultimate edition, and am using C++Builder 10.2 update 3

Thanks
Ian


RE: First Page from URL - DanielFields - 04-21-2018

I believe you would use ContentHandlers for that, or use the ServerController.OnGetMainForm event to detect parameters.

ContentHandlers would seem to be the best fit.
https://doc.atozed.com/en/iw14/develop/content-handlers/


RE: First Page from URL - DanBarclay - 04-23-2018

(04-21-2018, 07:30 PM)DanielFields Wrote: I believe you would use ContentHandlers for that, or use the ServerController.OnGetMainForm event to detect parameters.

ContentHandlers would seem to be the best fit.
https://doc.atozed.com/en/iw14/develop/content-handlers/

In addition to the doc page Daniel referenced, there are samples on Github at:

  https://github.com/Atozed/IntraWeb

There is apparently a C++ example of that in the directory "...trunk\XIV\C++\ContentHandlers", though I didn't try it.  The Delphi example is under the Delphi directory.

Dan


RE: First Page from URL - AllBars - 04-23-2018

Thank you both for pointing me at the ContentHandlers example.

Unfortunately, it suffers from exactly the same problem.

The example defines three URLs /blueform.html /redform.html and /mydoc.html (which redirects to an external page) it also has am additional main form.

Starting the session using the URL http://127.0.0.1:8000/bluform.html in a browser does not give the blueform page, but gives the mainform instead. once the session has started the URL does indeed give the blueform.

Is this only a problem with C++ only?


RE: First Page from URL - DanBarclay - 04-24-2018

(04-23-2018, 09:33 AM)AllBars Wrote: Thank you both for pointing me at the ContentHandlers example.

Unfortunately, it suffers from exactly the same problem.

The example defines three URLs /blueform.html /redform.html and /mydoc.html (which redirects to an external page) it also has am additional main form.

Starting the session using the URL http://127.0.0.1:8000/bluform.html in a browser does not give the blueform page, but gives the mainform instead. once the session has started the URL does indeed give the blueform.

Is this only a problem with C++ only?

You are correct, that example does require the main form to be executed in order to start the session.   I haven't done this specifically, as you are looking for, so I'm not going to be much more help.  But that doesn't keep me from making suggestions. <g>

You might look at CustomContenHandler.   I've used those before but as a different mission (serving up XML single message service).   I'm fairly sure that has some option to serve up a form, and maintain the session.  I just haven't had the need to look into it.

Another potential option, if you don't mind another "Splash style" form coming up initially is to allow a "Main" form to come up, but have that form launch your target.   I've done that by launching in an async timer event off the main form.  In my case I intentionally wanted a flash message to appear, but if you can make it look like you want that splash then it works great. 

But, again, I'm pretty sure there is a way to do exactly what you're looking for... I just don't know the details.  I'm pretty sure it will involve a CustomContentHandler.

Dan


RE: First Page from URL - DanielFields - 04-24-2018

CustomContentHandlers will work. I keep forgetting that there are two options in that area. The other option is to pass the form as a parameter. You could then use the OnGetMainForm event in the server controller.

Your URL would be a little different: http://mydomain.com:8888/$/start/?blue.html. The server would see "blue" as WebApplication.RunParams[0]. You would use that in your logic for the event.


RE: First Page from URL - AllBars - 04-24-2018

(04-24-2018, 04:42 AM)DanielFields Wrote: CustomContentHandlers will work.  I keep forgetting that there are two options in that area.  The other option is to pass the form as a parameter.  You could then use the OnGetMainForm event in the server controller.

Your URL would be a little different: http://mydomain.com:8888/$/start/?blue.html.  The server would see "blue" as WebApplication.RunParams[0].  You would use that in your logic for the event.

That will work ok. thank you for the tip :-)

(04-24-2018, 12:16 AM)DanBarclay Wrote:
(04-23-2018, 09:33 AM)AllBars Wrote: Thank you both for pointing me at the ContentHandlers example.

Unfortunately, it suffers from exactly the same problem.

The example defines three URLs /blueform.html /redform.html and /mydoc.html (which redirects to an external page) it also has am additional main form.

Starting the session using the URL http://127.0.0.1:8000/bluform.html in a browser does not give the blueform page, but gives the mainform instead. once the session has started the URL does indeed give the blueform.

Is this only a problem with C++ only?

You are correct, that example does require the main form to be executed in order to start the session.   I haven't done this specifically, as you are looking for, so I'm not going to be much more help.  But that doesn't keep me from making suggestions. <g>

You might look at CustomContenHandler.   I've used those before but as a different mission (serving up XML single message service).   I'm fairly sure that has some option to serve up a form, and maintain the session.  I just haven't had the need to look into it.

Another potential option, if you don't mind another "Splash style" form coming up initially is to allow a "Main" form to come up, but have that form launch your target.   I've done that by launching in an async timer event off the main form.  In my case I intentionally wanted a flash message to appear, but if you can make it look like you want that splash then it works great. 

But, again, I'm pretty sure there is a way to do exactly what you're looking for... I just don't know the details.  I'm pretty sure it will involve a CustomContentHandler.

Dan

That might have worked, but Dan Fields solution is cleaner. Thank you for the suggestions.

This feels a lot like a bug to me though. The same URL gives different results depending on if the session has already been started or not.

Ian