<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.xsl"?>
<modulesynopsis>

<name>mod_imap</name>
<description>Server-side imagemap processing</description>
<status>Base</status>
<sourcefile>mod_imap.c</sourcefile>
<identifier>imap_module</identifier>

<summary>
    <p>This module processes <code>.map</code> files, thereby
    replacing the functionality of the <code>imagemap</code> CGI
    program. Any directory or document type configured to use the
    handler <code>imap-file</code> (using either 
    <directive module="mod_mime">AddHandler</directive> or
    <directive module="core">SetHandler</directive>)
    will be processed by this module.</p>

    <p>The following directive will activate files ending with
    <code>.map</code> as imagemap files:</p>

<example>AddHandler imap-file map</example>

    <p>Note that the following is still supported:</p>

<example>AddType application/x-httpd-imap map</example>

    <p>However, we are trying to phase out "magic MIME types" so we
    are deprecating this method.</p>
</summary>

<section><title>New Features</title>

    <p>The imagemap module adds some new features that were not
    possible with previously distributed imagemap programs.</p>

    <ul>
      <li>URL references relative to the Referer: information.</li>

      <li>Default &lt;BASE&gt; assignment through a new map
      directive <code>base</code>.</li>

      <li>No need for <code>imagemap.conf</code> file.</li>

      <li>Point references.</li>

      <li>Configurable generation of imagemap menus.</li>
    </ul>
</section>

<section><title>Imagemap File</title>

    <p>The lines in the imagemap files can have one of several
    formats:</p>

<example>
      directive value [x,y ...]<br />
      directive value "Menu text" [x,y ...]<br />
      directive value x,y ... "Menu text"
</example>
    <p>The directive is one of <code>base</code>,
    <code>default</code>, <code>poly</code>, <code>circle</code>,
    <code>rect</code>, or <code>point</code>. The value is an
    absolute or relative URL, or one of the special values listed
    below. The coordinates are <code>x,y</code> pairs separated by
    whitespace. The quoted text is used as the text of the link if
    a imagemap menu is generated. Lines beginning with '#' are
    comments.</p>

<section><title>Imagemap File Directives</title>
    <p>There are six directives allowed in the imagemap file. The
    directives can come in any order, but are processed in the
    order they are found in the imagemap file.</p>

    <dl>
      <dt><code>base</code> Directive</dt>

      <dd>Has the effect of <code>&lt;BASE HREF="value"&gt;</code>.
      The non-absolute URLs of the map-file are taken relative to
      this value. The <code>base</code> directive overrides
      ImapBase as set in a .htaccess file or in the server
      configuration files. In the absence of an ImapBase
      configuration directive, <code>base</code> defaults to
      <code>http://server_name/</code>.<br />
       <code>base_uri</code> is synonymous with <code>base</code>.
      Note that a trailing slash on the URL is significant.</dd>

      <dt><code>default</code> Directive</dt>

      <dd>The action taken if the coordinates given do not fit any
      of the <code>poly</code>, <code>circle</code> or
      <code>rect</code> directives, and there are no
      <code>point</code> directives. Defaults to
      <code>nocontent</code> in the absence of an ImapDefault
      configuration setting, causing a status code of <code>204 No
      Content</code> to be returned. The client should keep the
      same page displayed.</dd>

      <dt><code>poly</code> Directive</dt>

      <dd>Takes three to one-hundred points, and is obeyed if the
      user selected coordinates fall within the polygon defined by
      these points.</dd>

      <dt><code>circle</code></dt>

      <dd>Takes the center coordinates of a circle and a point on
      the circle. Is obeyed if the user selected point is with the
      circle.</dd>

      <dt><code>rect</code> Directive</dt>

      <dd>Takes the coordinates of two opposing corners of a
      rectangle. Obeyed if the point selected is within this
      rectangle.</dd>

      <dt><code>point</code> Directive</dt>

      <dd>Takes a single point. The point directive closest to the
      user selected point is obeyed if no other directives are
      satisfied. Note that <code>default</code> will not be
      followed if a <code>point</code> directive is present and
      valid coordinates are given.</dd>
    </dl>
</section>

<section><title>Values</title>

    <p>The values for each of the directives can any of the following:</p>
    

    <dl>
      <dt>a URL</dt>

      <dd>The URL can be relative or absolute URL. Relative URLs
      can contain '..' syntax and will be resolved relative to the
      <code>base</code> value.<br />
       <code>base</code> itself will not resolved according to the
      current value. A statement <code>base mailto:</code> will
      work properly, though.</dd>

      <dt><code>map</code></dt>

      <dd>Equivalent to the URL of the imagemap file itself. No
      coordinates are sent with this, so a menu will be generated
      unless ImapMenu is set to 'none'.</dd>

      <dt><code>menu</code></dt>

      <dd>Synonymous with <code>map</code>.</dd>

      <dt><code>referer</code></dt>

      <dd>Equivalent to the URL of the referring document. Defaults
      to <code>http://servername/</code> if no Referer: header was
      present.</dd>

      <dt><code>nocontent</code></dt>

      <dd>Sends a status code of <code>204 No Content</code>,
      telling the client to keep the same page displayed. Valid for
      all but <code>base</code>.</dd>

      <dt><code>error</code></dt>

      <dd>Fails with a <code>500 Server Error</code>. Valid for all
      but <code>base</code>, but sort of silly for anything but
      <code>default</code>.</dd>
    </dl>
</section>

<section><title>Coordinates</title>

    <dl>
      <dt><code>0,0 200,200</code></dt>

      <dd>A coordinate consists of an <code>x</code> and a <code>y</code>
      value separated by a comma. The coordinates are separated
      from each other by whitespace. To accommodate the way Lynx
      handles imagemaps, should a user select the coordinate
      <code>0,0</code>, it is as if no coordinate had been
      selected.</dd>
    </dl>

</section>

<section><title>Quoted Text</title>

    <dl>
      <dt><code>"Menu Text"</code></dt>

      <dd>After the value or after the coordinates, the line
      optionally may contain text within double quotes. This string
      is used as the text for the link if a menu is
      generated:<br />
       <code>&lt;a HREF="http://foo.com/"&gt;Menu
      text&lt;/a&gt;</code><br />
       If no quoted text is present, the name of the link will be
      used as the text:<br />
       <code>&lt;a
      HREF="http://foo.com/"&gt;http://foo.com&lt;/a&gt;</code><br />
       It is impossible to escape double quotes within this
      text.</dd>
    </dl>
</section>
</section>

<section><title>Example Mapfile</title>

<example>
      #Comments are printed in a 'formatted' or
      'semiformatted' menu.<br />
       #And can contain html tags. &lt;hr&gt;<br />
       base referer<br />
       poly map "Could I have a menu, please?" 0,0 0,10 10,10
      10,0<br />
       rect .. 0,0 77,27 "the directory of the referer"<br />
       circle http://www.inetnebr.com/lincoln/feedback/ 195,0
      305,27<br />
       rect another_file "in same directory as referer" 306,0
      419,27<br />
       point http://www.zyzzyva.com/ 100,100<br />
       point http://www.tripod.com/ 200,200<br />
       rect mailto:nate@tripod.com 100,150 200,0 "Bugs?"<br />
</example>

</section>

<section><title>Referencing your mapfile</title>

<example>
      &lt;A HREF="/maps/imagemap1.map"&gt;<br />
       &lt;IMG ISMAP SRC="/images/imagemap1.gif"&gt;<br />
       &lt;/A&gt;
</example>
</section>

<directivesynopsis>
<name>ImapMenu</name>
<description>Action if no coordinates are given when calling
an imagemap</description>
<syntax>ImapMenu
    none|formatted|semiformatted|unformatted</syntax>
<contextlist><context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context></contextlist>
<override>Indexes</override>

<usage>
    <p>The <directive>ImapMenu</directive> directive determines the
    action taken if an imagemap file is called without valid
    coordinates.</p>

    <dl>
      <dt><code>none</code></dt>

      <dd>If ImapMenu is <code>none</code>, no menu is generated,
      and the <code>default</code> action is performed.</dd>

      <dt><code>formatted</code></dt>

      <dd>A <code>formatted</code> menu is the simplest menu.
      Comments in the imagemap file are ignored. A level one header
      is printed, then an hrule, then the links each on a separate
      line. The menu has a consistent, plain look close to that of
      a directory listing.</dd>

      <dt><code>semiformatted</code></dt>

      <dd>In the <code>semiformatted</code> menu, comments are
      printed where they occur in the imagemap file. Blank lines
      are turned into HTML breaks. No header or hrule is printed,
      but otherwise the menu is the same as a
      <code>formatted</code> menu.</dd>

      <dt><code>unformatted</code></dt>

      <dd>Comments are printed, blank lines are ignored. Nothing is
      printed that does not appear in the imagemap file. All breaks
      and headers must be included as comments in the imagemap
      file. This gives you the most flexibility over the appearance
      of your menus, but requires you to treat your map files as
      HTML instead of plaintext.</dd>
    </dl>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ImapDefault</name>
<description>Default action when an imagemap is called with coordinates
that are not explicitly mapped</description>
<syntax>ImapDefault error|nocontent|map|referer|<em>URL</em></syntax>
<default>ImapDefault nocontent</default>
<contextlist><context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context></contextlist>
<override>Indexes</override>

<usage>
    <p>The <directive>ImapDefault</directive> directive sets the default
    <code>default</code> used in the imagemap files. Its value is
    overridden by a <code>default</code> directive within the
    imagemap file. If not present, the <code>default</code> action
    is <code>nocontent</code>, which means that a <code>204 No
    Content</code> is sent to the client. In this case, the client
    should continue to display the original page.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ImapBase</name>
<description>Default <code>base</code> for imagemap files</description>
<syntax>ImapBase map|referer|<em>URL</em></syntax>
<default>ImapBase http://servername/</default>
<contextlist><context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context></contextlist>
<override>Indexes</override>

<usage>
    <p>The <directive>ImapBase</directive> directive sets the default
    <code>base</code> used in the imagemap files. Its value is
    overridden by a <code>base</code> directive within the imagemap
    file. If not present, the <code>base</code> defaults to
    <code>http://servername/</code>.</p>
</usage>
</directivesynopsis>

</modulesynopsis>