Inline Edit -- a few basic issues
Paul Zablosky
Paul.Zablosky at ubc.ca
Thu Jul 24 00:06:23 UTC 2008
I have been trying to get a feeling for some of the basic issues
associated with an Inline Edit capability. Gary and I talked this
morning about this and I decided to put down some of the things we
discussed.
1. Simple text: The idea is to give the user the ability to do
in-place edits of simple text. But it's difficult to decide just
what simple text is. It's probably something more than the
character set of the inner keyboard, and something less than the
Unicode character set. We need to decide what's in and what's out.
2. Special characters: We need to specify what happens when the user
inputs special characters, such as control characters, escapes,
nulls, octal, hex, and whitespace (newlines, tabs, blanks,
carriage returns).
3. Visual formatting: In the simple text case, do we give the user
any capability for visual formatting, such as line breaks,
centring, right-justification, typeface, size, and stress?
4. Input validation filters: If the application needs to run an input
validation filter to verify that a field is all numeric, a postal
code, a SIN, or of some other standard format, what interactions
are there between the filter and the component? Should the
component include some standard filters? What about templates
(e.g. for postal codes). What is the flow of acceptance/rejection
as the user types into the field?
5. Structured fields: How do we handle fields that have some
structure such as hyperlinks? These fields have at least two
components -- the URL and the display text.-- and may have more.
These are outside the simple text case.
6. Stored versus display: If the string is to be interpreted as HTML,
is the user editing the internal form or the display form? What
happens if the user types in an HTML tag?
7. Length: How do we indicate to the user the length allowed for the
text? Is the display length the only one that matters? What limit
does the component place on how much text can be typed or pasted
into the field?
8. Do we need concern ourselves with a user typing in (or pasting in)
malicious code (HTML or SQL)? Do we need to guard against code
injection attacks? Input validation is the solution to this, of
course. Let's not forget that Little Bobby Tables
<http://xkcd.com/327/> is lurking out there.
Resolution of these issues is -- as we keep reminding ourselves --
context dependent. In many cases we can punt to the integrator and have
them make the best context-framing decision they can, perhaps through
the setting of optional parameters. If we do that, we should make it
clear which options are the best choices for which contexts. This could
be expressed through the accompanying /design pattern/, which can
describe the reasoning behind each option value and why it best serves a
particular context of use.
Beyond the simple text case, is the enhanced text case, where text
elements can have appearance attributes such as positioning, font size,
and typeface, as well as semantic attributes such as hyperlinking. With
this sort of content, an advanced edit view is required, allowing the
user many more options. With the enhanced text case we may choose an
entirely different set of resolutions to the issues listed above.
I understand that Gary is going to explore some existing solutions and
put together some storyboards.
Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://fluidproject.org/pipermail/fluid-work/attachments/20080723/e665acd8/attachment.html>