[Gambas-user] Use gb.web.form in a web project with not only web forms
Tobias Boege
taboege at ...626...
Tue Jul 26 18:26:14 CEST 2016
Hi Benoit,
I have some projects using gb.web.form now and in every of these I have the
requirement not only to load webforms but also a webpage or to implement
some other URL schema to generate or serve a ressource.
As I see it, gb.web.form wants to take complete control over the project's
Main() routine (correct me if I'm wrong here), whereas my projects require
some analysis of the request path in their Main() such as:
Select Case Mid$(Request.Path, 2)
Case "favicon.png"
sPath = Server.DataDir &/ "favicon.png"
If Exist(sPath) Then
Response.SendFile(sPath)
Else
Response.SendFile("default.png")
Endif
Case Like "data:*" ' server data
Response.SendFile(Server.DataDir &/ Mid$(Request.Path, 7))
Case Like "?*:*" ' possibly user data, might also be /lib:0.0.1.js from gb.web.form
' Note that this URL is not protected by the session
With Scan(Mid$(Request.Path, 2), "*:*")
If Users.Exist(.[0]) Then
Users[.[0]].SendFile(.[1])
Else
Goto _Default
Endif
End With
Case "upload"
' ...
:
: ' Other special URLs and URL schemata
:
Case "" ' root
If CheckSession() Then Return
Home.Run()
Default
_Default:
' XXX: This is a hack to get gb.web.form data and to pipe its javascript
' magic through.
With Scan(Request.Path, "/*/*")
If .Count Then
Try Class.Stat(.[0])
If Error Then
Request.Path = "/" &/ File.Name(Request.Path)
Endif
Endif
End With
WebForm.Main()
End Select
I have to serve data from a preconfigured server directory, generate some
data on-the-fly, send project-internal data or serve webforms. As you may
be able to tell, the Default case handles gb.web.form integration into the
control flow and it's not pretty.
Do you have any idea?
Regards,
Tobi
--
"There's an old saying: Don't change anything... ever!" -- Mr. Monk
More information about the User
mailing list