(no subject)

Axel Belinfante (Axel.Belinfante@cs.utwente.nl)
Tue, 14 Dec 93 06:07:10 +0100


Charles Henrich <henrich@crh.cl.msu.edu> writes:
> I have a delimma folks. Im looking at the constraints my previous message
> has put on me about using multiple ?'s in a url, and I cant seem to solve
> this problem. This is what I need to accomplish,

I'm not sure that i understand what you need, it could be possible
that you can do what you need, without using forms.
When you use forms it is relatively easy to keep state information.

The ISMAP mechanism allows you to specify a 'root' URL for the
ISMAP result that can be different from the URL of the page that
contains the ISMAP, which means that you can store info in the
ISMAP 'definition' - you are using this right now.

The ISINDEX query mechanism _does not_ allow you to specify that 'root'
URL - the result is that all queries from a page will have the same
'root', which thus cannot be used to store 'state' information.

Forms, however, allow you to do things similar to ISINDEX, and much more
relevant to your problem: they allow you to specify the 'root' URL of a
form in a way similar to the ISMAP mechanism.

The idea is that you use should be able to have all URLs that start with
http://rs560.cl.msu.edu/weather/interactive/
executed/interpreted by your little program.

(i don't know how easy it is to do that with your server - i use
plexus, where it is not very hard to do so. I would suppose that it
would be realtively easy once the CGI is supported by all servers)

The URL above should/could represent the 'default' - as it is before
any user 'given' info is added to it.
The user information that you want to remember can now be added to the
end of the 'default' URL, and used as 'root' for the ISMAP.

Note:
This information is 'reset' when the user does not click on the map,
to use the result of the query, but instead issues another query -
it is reset in the same way as it is in the current situation.
However, if you would use forms, you can also keep that information.

The idea is now that this
http://rs560.cl.msu.edu/weather/interactive/
is your 'basic' URL, and the state information is added to the end of it;
the query gets attached to the end of that.
I'll give the corresponding URLs with your explanation below.

> On my interactive weather browser
> (http://rs560.cl.msu.edu/weather/interactive.html) I have both a search field
> (isindex) and a ismap image. When you first enter the page the following
> ismap reference is attached to the map:
>
> http://rs560.cl.msu.edu/weather/interactive.html?nodisp

http://rs560.cl.msu.edu/weather/interactive/nodisp

> When a user clicks on the map the Mosaic for X browser submits this query:
>
> http://rs560.cl.msu.edu/weather/interactive.html?nodisp?x,y

http://rs560.cl.msu.edu/weather/interactive/nodisp?x,y

> A small program peel's off the "nodisp" field and the "x,y" field. If the
> x,y isnt present nothing special happens. If it is present, and the nodisp
> field is present the current textual weather information for the location is
> returned.
>
> When a user enter's a search, the query is sent to the server using this url:
>
> http://rs560.cl.msu.edu/weather/interactive.html?search_query

http://rs560.cl.msu.edu/weather/interactive/?search_query

> Which is then peel'd off by the same small little program and attached to the
> ismap reference like so:
>
> http://rs560.cl.msu.edu/weather/interactive.html?search_query

http://rs560.cl.msu.edu/weather/interactive/search_query

> so when the user clicks on the map I can peel off the search_query (which
> specifies a display name) and draw the user a map for the given x,y
> coordinates. Its apparent that this is achieved by a small quirk in Mosaic
> for X that allows me to remember search queries between mouse clicks.
> However, several browsers do not do the same thing, notably Mosaic for Mac.
> There is also no special characters I can embed at the end of the URL that
> the server will ignore, that I can use to remember previous actions.
> So guys, whats the solution here? Is what im doing un-doable?
> All comments appreciated!

In a way, i use the last / in the URL i proposed as a special character:
everything that follows it is part of the arguments for the
'weather-interactive' program.

I hope the above makes sense, and is of some help... it has gotten a bit
late (early? :-) here in the meantime...

In the newest addition to my 'esperanto demo' i use forms to keep
'query'-like information. The esperanto lesson contains a small
interactive exercise and i use forms to pass info from one exercise
part' to another.
Using forms, i store the 'state' information in the url, the query
(result of a submitted form) gets attached to the URL (including that info)
when the form gets executed.
Without forms it would be harder, but not impossible - but the user
interface would be less nice: i would need probably an additional page
between the 'exercises' of the lesson: instead of returning the feedback
to the previous exercise on the same page as the new one, i would have to
return a feedback page that contains the link to the next exercise -
this link would contain the information i want to 'keep'.

The esperanto exercise prototype is at

http://utis179.cs.utwente.nl:8001/esperanto/hypercourse/voorzetsels_ekz.html

It still is a bit in rough shape - i want to make the state info more
'opaque'. Right now, if you look at the URL that is passed on during the
exercise you can see the info change (and you can cheat, too :-)
(by the way, it is bilingual, sort of.. (both dutch and english))

Something that cost me some time just before i started this email was
the following: right now i represent the 'state' as a number of
name=value bindings, linked together by & separators.
I made the mistake of using a 'name' lt, and trying to add another
name=value binding in front of the lt=value binding, which gave me
a FORM like (shortened for clarity):

<FORM METHOD="GET" ACTION="/ekz/esp/hyp/lang=nl&lt=value&rt=value2">
some text: <inPUT NAME="entry">
<inPUT TYPE="submit" NAME="action" VALUE="Return">
</FORM>

which after submitting got mapped onto
http://host:port/ekz/esp/hyp/lang=nl<=value&rt=value2?entry=ff

It took a while before i understood where the < came from, and
worked around the problem:
ACTION="/ekz/esp/hyp/lt=value&lang=nl&rt=value2">
works fine.

Regards,
Axel.

<Axel.Belinfante@cs.utwente.nl> tel. +31 53 893774 fax. +31 53 333815
University of Twente, Tele-Informatics & Open Systems Group
P.O. Box 217 NL-7500 AE Enschede The Netherlands
"ili ne sciis ke estas neebla do ili simple faris" -- Loesje