--

Last-Modified: $Date: 2001/09/21 21:19:36 $ 
Version: $Id: CHANNEL_LINK_OPTIONS,v 1.6 2001/09/21 21:19:36 burton Exp $
Author: Kevin A. Burton ( burton@apache.org | burton@openprivacy.org )

Commentary:

TODO:

- this isn't a channel link proposal... it is a channel option proposal with
  support for links.

- how do we support browser/client specific options.  

- What do we do when an item is clicked?

    - Redirect to a URL

    - Evaluate a javascript function?

    - How do we namespace javascript functions.
    
--

* Overview: Channel link proposal

This proposal documents a 'channel link' mechanism for linking between <items>
within content and performing options on them.

A decent example would be selecting an item and performing some operation.  This
could include explicitly loading a URL into a cache, viewing the URL in another
window or publishing this URL into your weblog.

* Requirements:

    - Flexibility: Should support plugging in new functionality without
      significant modifications to the frontend/client code.

    - Portability: The same mechanism should at *least* be portable to other
      environments (with little work).

    - XML based configuration: Options are stored in an XSLT stylesheet 

* Design:

    - The user is generally presented to the user as a <select> control at the
      bottom of the browser.

    - Links (URLs) are passed between the frontend and the backend via a POST
      with namespaced parameters.

        - Parameter name: reptile.options.link.name

        This param can be used by all actions/stylesheets which need to act as an
        'option'

    - Options are registered by content within the 'control' namespace.  This is
      the same namespace use by Reptile to add new content but this allows each
      content type to register new options and allow them to use options
      specific to their format.

            <control:content>

                <control:link><xsl:value-of select="./rss:channel/rss:link"/></control:link>
        
                <dc:title><xsl:value-of select="./rss:channel/rss:title"/></dc:title>
        
                <dc:description><xsl:value-of select="./rss:channel/rss:description"/></dc:description>
    
                <control:body>

                    <!-- Your content goes here -->

                </control:body>

                <!-- this option enables RSS publication -->
                    
                <control:option name="urn:reptile/channel/rss/options/publish"/>

            </control:content>

     - An option name can trigger any type of XSLT template.  This way we are
       not limited to the type of presentation the user is given.

* Parameters (using underscores instead of "." characters to provide
  compatibility with the javacript DOM.

    - Provided in the control's HTML form.

        - reptile_link

        _ reptile_link_title 
            
        - reptile_link_description

        - reptile_control_location
