Interaction 3.5
Interaction 3.5 introduces content aggregation based on XPath, the W3C recommendation to address and extract selected parts of markup content. It adds support for Extensible HTML, the new W3C recommendation for hypertext markup on the web. The release implements the DOM Level 2, XML Namespaces and XPath specifications from W3C for use in scripts.
Components
Most or all new, renamed and upgraded components can be found in the Disabled Components folder in the Interaction distribution. The following components should be upgraded as you install Interaction 3.0:
- Shop (preinstalled)
- Forum (preinstalled)
- Chat (preinstalled)
- Chat Purger
- Comet Bridge
- Eraser Entity
- Framer
- ReflexMail
- Registration
Other changes:
- The Function Entity Type has been renamed to Script Entity Type.
- Grep Search is a new component that facilitates use of regular expressions in the Find dialog.
Renamed Entities
Many entities have been renamed to tidy up the Entities dialog and organize the entities in a more consistent manner. You should rename references to these entities accordingly. Alternatively, install one or more aliases for the renamed entities. The aliases are components found under Renamed Entities in the Disabled Components folder of the Interaction distribution. By installing an alias, you don't have to rename references to the entity, but can continue to use the old references.
| Old Name | New Name |
|---|---|
| browser | visitor.browser |
| cookies | visitor.cookies |
| documents | site.locations |
| domain | visitor.domain |
| visitor.email | |
| hits | location.hits |
| hits.date | location.hits.date |
| hits.time | location.hits.time |
| id | session.id |
| interaction.update | application.update |
| interaction.url | application.url |
| interaction.version | application.version |
| location-title | location.title |
| modification-date | location.modified |
| name | visitor.name |
| nickname | visitor.nickname |
| occupancy-sentence | location.occupancy.sentence |
| referrer | request.referrer |
| restriction | location.restriction |
| root-path | request.url.base |
| server-name | request.server-name |
| staytime | visitor.staytime |
| style | location.style |
| track-length | visitor.track.length |
| visitors | location.visitors |
| visitor.username | request.username |
| visitor.password | request.password |
Search Documents on the Tools menu can be used to find entity references in documents.
Entity Types
- The Alias entity type supports W3C XPaths to select only parts of the value of the aliased entity.
- The File entity type has changed name to Resource entity type. It has been expanded to fetch data via HTTP in addition to using a file as source. Resource entities can have an XPath fto extract selected parts of content.
Other Changes to the Entities
- Argument entities set to persist forever are saved permanently on the membership record if a visitor is logged in.
- The visitor.email entity provides the value of member.email if the visitor is a member but has no visitor email.
- The visitor.name entity defaults to the name of the member if the visitor is logged in.
- The visitor.nickname entity has the value of member.username as default.
- New location.url entity provides the URL of a location.
- The markup editor is the default editor for an entity.
- The occupancy entity is made into an alias to the new location.occupancy.count entity.
- The locations entity us made into an alias to the new site.locations entity.
- The services entity is made into an alias to the new site.services entity.
- New application.title entity provides a pretty formatted name for the software.
- Upgraded format for the location.hits entity.
- The various built in entity types use DOM2 to store definitions in XML entity format.
- application.update entity returns version id for the current update as it is supposed to do.
XML Editor
- The Document Outline palette requires less memory, allowing it to display the outline of larger documents.
- Select text in the outline to select the text content of an element in the editor.
- Uses Extensible HTML empty elements when this is the document type.
- Contextual menu in the markup editor immediately inserts an element instead of showing a dialog with its attributes.
- Eliminated the placard-like text in the bottom left corner (which only was relevant for scripting).
XML
- Widespread support for XML Namespaces.
- Special characters (higher than value 127) are written as character references on file and in HTML pages. This ensures compatability until UNICODE is widely supported.
- Interaction uses the XML Prolog <?xml version="1.0"?> to determine whether a document is XML or HTML, and may fail to read a document correctly if the prolog is used on top of a document that is not well-formed XML.
Membership and Subscription
- Membership record (file) and dialog has a field for the real name of a member.
- New member.username entity provides the username of a verified member.
- New entities member.name, member.name.given and member.name.family.
- New visitor.type entity returns Member or Guest depending on whether the visitor has signed on.
- The site.visitors and location.visitors entities lists the username of a member if he has no nickname.
- Fix flaw that caused the member dialog to only save when the dialog that lists members is open or the password is unchanged.
Dynamic Restrictions
- Prerequisite restriction can require that a visitor come from a specific page on another site by checking a URL against the referrer.
- The default for a predicate restriction is now "visitor.browser" instead of just "browser".
Visitor Tracking
- Track External Links preference makes it possible to disable that tracking IDs are added on links to other sites (than those explicitely provided.)
- The Visitor dialog displays the name of member unless overridden by a submitted name.
- Eliminated multiple session cookies that might have caused tracking problems.
- No tracking ID in the URL when cookie based tracking is verified to work.
Menus and Dialogs
- Faster access to the menubar except immediately after bringing an editor window to the top.
- Dialog to create a new location also lists eventually installed location types in addition to the document types.
Scripting & DOM
- New Script command on the File menu provides a specialized editor to write scripts and components (when the User Level preference is set to Expert).
- DOM Level 2 Core is supported in full.
- WITH-OPEN-DOM can open a DOM interface to an entity, restriction or location, although it should still be considered experimental and might undergo minor modifications as the DOM interface matures. Opening a DOM interface to an entity gives access to the definition in the entity file, while opening a DOM interface to an entity reference gives access to the generated entity value.
- An HTML document can be opened with DOM, and will be converted internally to XHTML. The document should be valid HTML, but doesn't have to be well-formed XML as missing end-tags is inferred based on the document type.
- DEFINE-ENTITY-TYPE construct is public available for use in scripts and components.
- The internal membership representation is updated when modifying the membership record in a script.
- New GROUP function to get a group object from its name.
- Scripts can send an email to a member or group by using a membership or group object as argument to mailto.
- ENTITY function can be used to create new entities.
- LOCATION function can be used to create new locations.
- MEMBERSHIP function can be used to create new members.
- ARGUMENT-VALUE function has second argument for the return type.
- ARGUMENT-VALUE function returns an ISO-8859-1 string and no longer encode markup delimiters as character entity references.
- Markup delimiters are automatically encoded and decoded by DOM. As a result, DOM strings contain the markup delimiters as is, and there are no separate nodes for the entity references of the delimiters. DOM's set-attribute, create-text-node etc now expects an unescaped domstring for the value.
- A string returned as the value of an entity is considered a DOM string. As a consequence, markup delimiters will be escaped when the string is written to an XML or HTML document, meaning that markup isn't recognized. An entity can thus no longer return a string with markup - return a DOM node or nodelist instead.
- MD5 module from CL-HTTP is integrated. This is an open source module for using MD5 digests, which are useful for scripts that do digital signatures.
- Maintains the XMLNS name invariant: Two equal DOM node names are identical (EQ) if and only if they are in the same XML namespace.
- DOM node-value and node-name returns the same as corresponding specialized attributes in the interface, as specified by DOM.
- Entity references are interned, i.e. two entity references with the same name will always be identical.
- New DOM:NODEP function to test whether an object is a DOM node or a specific node type.
- The if-does-not-exist key argument of the location function accept a symbol for the type of location to create (experimental).
- New restriction function to get or create a restriction
- Scripting support for XPATH - the W3C recommendation for addressing parts of an XML document.
- Basic XSLT transformation engine for use in scripts.
- define-entity-type has a :tranformation option to specify an XSLT stylesheet for default transformation of its entity value.
- DOM:NODECASE> construct to evaluate a form depending on the nodetype or element type of a node.
General
- Some datestamps are corrected.
- When Interaction is a preprocessor, the URL before the path args will be used to determine which location to serve, only resorting to the path args if there are no matches.
- Faster form handling
- Processing of very large form submissions using the Read HTTP Data AppleEvent.
- Compensates for flaw in some versions of Netscape (it added a slash after the tracking id on some links to the root page of a site, causing relative URLs in the page to break).
- Update Cache Database at Startup preference moved to Caching group. Disable for large sites unless you want Interaction to check all files for changes on restarts after initial startup, which shortens the startup time but may lead to stale content in the database if any files are modified while Interaction isn't running.
- Redesigned Export dialog allows partial export of locations.
- Faster startup as less files are opened for reading.
- Attribute values in generated HTML don't escape apos (as it caused problems for JavaScript).
- Generated HTML always quotes attribute values (as required by Extensible HTML).
- Fixed bug in preference pop-up menu that caused certain preferences to not take effect or persist.
- All element type names in generated HTML are normalized to uppercase.
- Minor fix to reading of predefined HTML 3.2 DTD (some elements were missing).
- Services without a folder in the Documents folder are still initialized.
- The doctype declaration for Services file is temporarily taken out.
- The titles of HTML documents are extracted from the content on demand, shortening the time of initial startup (trading off that listing all locations in a page might be slow the first time).
- The Problem Report has an XML declaration and propely escapes markup delimiters to ensure that it is a well-formed XML entity. This means that it can be made available as part of XML processing using e.g. a Resource entity. Each log item includes the name of the current site.