Steven Pemberton, CWI
Alain Couthures, AgenceXML
Philip Fennell, MarkLogic
Leigh Klotz, Xerox (minutes)
Dan McCreary, Dan McCreary Associates
Nick van den Bleeken, Inventive Designers [IRC only]
Erik Bruchez, Orbeon/Inventive Designers [late]
Steven Pemberton: Do we depend on
any of these features?
Leigh Klotz: We never really got the
features they promised us in 2000. It's been 12 years now.
Steven Pemberton: Are they dropping
anything we depend on? We have 4 weeks. Anybody feel particularly
called to look at it? I shall have a look at it myself. Anyone
else, please review as well.
ACTION-1856 Steven Pemberton to review http://lists.w3.org/Archives/Public/public-forms/2012Jan/0015.html
Steven Pemberton: Didn't you start this group, Dan?
Steven Pemberton: Has anyone used
this?
Alain Couthures: I tried to use
it.
Steven Pemberton: I got quite a
different page when I clicked on start.
Alain Couthures: I tried as
standalone; it might work without the Mozilla extension.
Steven Pemberton: Someone else could
install it?
Alain Couthures: Yes. It has to be
modified because when it's saving the form there are some
server-side transformations. It's not a pure XForms editor, but a
BPM editor. A stylesheet is required. But it works quite well and
is fast.
Steven Pemberton: Is it worth trying
to find a place to run it?
Alain Couthures: I don't know about
the copyright.
Steven Pemberton: It says "open source
terms" using the MIT license.
Alain Couthures: It's a good candidate
to start with. There are extensions for working with Orbeon.
Leigh Klotz: Orbeon has the same
type of extension that Mark Birbeck used to have, to put the label
or hint inside the input control display. Ian has this in HTML5 so
we should be able to do it declaratively. Orbeon does this with an
appearance extension, but maybe we could use minimal. With Chiba
and XSLTForms we've used help/@appearance=minimal
to
turn it into a hyperlink on the label. But maybe someone else has a
better idea than minimal.
Steven Pemberton: Any comments on
using something other than minimal?
Philip Fennell: Sounds alright.
Steven Pemberton: What if both label
and hint are minimal?
Leigh Klotz: We should ask Erik.
Steven Pemberton: If we accept this
then we'd like an action.
Leigh Klotz: What do we accept?
Steven Pemberton: We need a firm
proposal.
Leigh Klotz: I'd like at least a
response from Erik. I'd like to know why he didn't use minimal. I
think there's no reason for us now now to have a standard
declarative way of doing it.
Steven Pemberton: You could ask
Erik?
ACTION-1857 Leigh Klotz to ask Erik Bruchez about http://lists.w3.org/Archives/Public/public-forms/2012Jan/0013.html
Leigh Klotz: How do we surface
(bidirectionally) those components of the location URI (#! parsed
stuff and query parameters) in the XPath data model. We have ways
to serialize to x-www-form-urlencoded but nothing for parsing
them.
Steven Pemberton: Is there no way of
reversing the process we use for submit?
Erik Bruchez: [joins]
Leigh Klotz: I don't know if it will
be popular to use the history mechanism of HTML5 that lets you fake
history but requires work on both sides of the server (i.e., if you
have /path/to/tab and that's both handled at the server side and
handled inside the Forms).
Erik Bruchez: If you only have one tab
view, it's pretty easy. You might have a lot of state. It might be
"virtual pages." How do you combine all that?
Leigh Klotz: Jenni Tennison brought up
hashtags and the TAG wrote up application state. So how do map
XPath data model state to the URI?
Steven Pemberton: We don't have
bidirectional parsing.
Erik Bruchez: We could say that you
want to store the state in the URL if possible.
Leigh Klotz: So you could do something
like this for hashtags <bind ref="instance(x
)"
calculate="please-parse-hashtags()" />
Leigh Klotz: But what about for
history.push and query strings?
Erik Bruchez: You could imagine some
type of persistent declaration? <bind
ref="instance(x
)" persistent="true"/>
Erik Bruchez: If you modify the URL it
would have to reflect it.
Leigh Klotz: It's a little like JSON
parsing. Do we offer just #! and ? x-www-form-urlencoded or do we
have a pair of serializations and parsing functions for this?
Erik Bruchez: You could have it
author-defined or you could provide some simple accessors. Just
access to the HTML5 history api and XPath 2, regular expressions,
you can parse that kind of stuff fairly easily. You could do all
the work yourself. It's just going to be fairly painful.
Leigh Klotz: If we have a way of
binding location path to URI to XPath data model then we get a
declarative way of doing it.
Steven Pemberton: We could produce an
instance with fixed names, a repeating structure for server name,
path, query, etc. It might be possible todo it that way. Then alter
one of those parts.
Leigh Klotz: Here are some examples of
ways you could express "I'm on the Review tab" in the URIl.
<a href="http://xformstest.org/2010/07/kurt_cagle/index.xml#!Review">http://xformstest.org/2010/07/kurt_cagle/index.xml#!Review</a> <a href="http://xformstest.org/2010/07/kurt_cagle/index.xml#!tab1=Review">http://xformstest.org/2010/07/kurt_cagle/index.xml#!tab1=Review</a> <a href="http://xformstest.org/2010/07/kurt_cagle/index.xml?tab=review">http://xformstest.org/2010/07/kurt_cagle/index.xml?tab=review</a> <a href="http://xformstest.org/2010/07/kurt_cagle/index.xml?tab=review;color=white">http://xformstest.org/2010/07/kurt_cagle/index.xml?tab=review;color=white</a> <a href="http://xformstest.org/2010/07/kurt_cagle/review">http://xformstest.org/2010/07/kurt_cagle/review</a>
Leigh Klotz: The last one may require some duplication of application state in client and server.
Steven Pemberton: Or we could
provide a magic instance containing this:
<url><scheme>http</scheme><server><elem>xformstest></elem><elem>org</elem><path><elem>2010
.... etc
Leigh Klotz: Or a function.
Philip Fennell: It could be a system
property.
Steven Pemberton: The magic instance
whenever bound, as the values changed, so changes the URL and then
the URL gets pushed on the history stack.
Leigh Klotz: There's a sublety..are
you navigating to a new page or not?
Steven Pemberton: Definitely
not.
Erik Bruchez: We already have a way to
change the page, using xf:load or xf:submission. I think it might
be better...you most like are going to be explicit about what
changes become part of the history and what parts don't. You might
not change the history after the user types one character, but you
might if they make more important activities, traditionally
associated with a new page, such as a tab. It can't be just if a
value changes you push history.
Steven Pemberton: Traditionall the
back button is related to changes in URL, so if you change the URL
that should be a change in history. There are two reasons to record
state: when you come back another time (saving the URL) to get back
to a similar state, and the other is the same thing, going back in
history.
Leigh Klotz:
switch/@ref="funnyfunction()/x" then it would be bound but input
ref="name" wouldn't.
Nick van: What about transactions? Do
you want to combine multiple updates?
Steven Pemberton: Just do it at
refresh or something.
Leigh Klotz: If we bound to a
funnyfunction or an instance then it would all get updated at one
action.
Steven Pemberton: Is this just query
and fragment or can you change path and host?
Leigh Klotz: I think you can change
the path.
Steven Pemberton: It's odd to do
change the page.
Leigh Klotz: Yes, that's why I said
you had to double the logic server and client, with or without
XForms. See my last example above.
Erik Bruchez: Yes, there is a bit of
backlash against Twitter and Google for using hash. Until recently,
well now you can change the URL location without reloading the
page.
Erik Bruchez: We have an example:
Start with this localhost:8080/orbeon/fr/orbeon/builder/new and
then when you save the form we change it immediately to
localhost:8080/orbeon/fr/orbeon/builder/edit/123456.
Erik Bruchez: Of course, you have to
make sure the semantics are the same whether you get there from
client change or directly through entering the server. So there is
some duplication, or maybe using a smart framework to do the
duplication for you. It's unavoidable that you need to think the
URLs through.
Leigh Klotz: Yes, Steven's
funny-function proposal lets you do that. The question is
how.
Steven Pemberton: The question should
we allow you to change the path or just the "state" bits?
Leigh Klotz: I think you can change
the path but not the host and port for security.
Erik Bruchez: Yes. I think it's not
part of the API.
Leigh Klotz: history.push(string) is
good enough to implement on top of but not good eough for us to
offer.
Philip Fennell: Could we open this up
to more properties of the browser.
<bind ref="/foo/@bar" calculate="system-property(location.hash
)"/>
<bind ref="/foo/@bar" calculate="system-property(screen.height
)"/>
Steven Pemberton: This is interesting and this is good to talk about.
Steven Pemberton: Leigh has an
action to look at this with you.
Erik Bruchez: Yes, placeholder.
Steven Pemberton: The proposal is to
use "minimal" instead of "placeholder." Could you look at the
mail?