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

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_imagemap.xml.meta">

<name>mod_imagemap</name>
<description>Server-side imagemap processing</description>
<status>Base</status>
<sourcefile>mod_imagemap.c</sourcefile>
<identifier>imagemap_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>

    <highlight language="config">
AddHandler imap-file map
    </highlight>

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

    <highlight language="config">
AddType application/x-httpd-imap map
    </highlight>

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

<section id="features"><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 <code>&lt;base&gt;</code> 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 id="imapfile"><title>Imagemap File</title>

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

    <example>
      directive value [<var>x</var>,<var>y</var> ...]<br />
      directive value "<var>Menu text</var>" [<var>x</var>,<var>y</var>
      ...]<br />
      directive value <var>x</var>,<var>y</var> ... "<var>Menu text</var>"
    </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><var>x</var>,<var>y</var></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 id="imapfile.directives"><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><p>Has the effect of <code>&lt;base href="<var>value</var>"&gt;
      </code>. The non-absolute URLs of the map-file are taken relative
      to this value. The <code>base</code> directive overrides
      <directive module="mod_imagemap">ImapBase</directive> as set in a
      <code>.htaccess</code> file or in the server configuration files.
      In the absence of an <directive>ImapBase</directive> configuration
      directive, <code>base</code> defaults to
      <code>http://server_name/</code>.</p>
      <p><code>base_uri</code> is synonymous with <code>base</code>.
      Note that a trailing slash on the URL is significant.</p></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 <directive module="mod_imagemap"
      >ImapDefault</directive> 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 id="imapfile.values"><title>Values</title>

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

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

      <dd><p>The URL can be relative or absolute URL. Relative URLs
      can contain '..' syntax and will be resolved relative to the
      <code>base</code> value.</p>
      <p><code>base</code> itself will not be resolved according to the
      current value. A statement <code>base mailto:</code> will
      work properly, though.</p></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 <directive module="mod_imagemap">ImapMenu</directive> is set to
      <code>none</code>.</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 <code>Referer:</code>
      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 id="imapfile.coords"><title>Coordinates</title>

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

      <dd>A coordinate consists of an <var>x</var> and a <var>y</var>
      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 id="imapfile.quotedtext"><title>Quoted Text</title>

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

      <dd><p>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:</p>

      <example>
        &lt;a href="http://example.com/"&gt;<var>Menu text</var>&lt;/a&gt;
      </example>

      <p>If no quoted text is present, the name of the link will be
      used as the text:</p>

      <example>
        &lt;a href="http://example.com/"&gt;http://example.com&lt;/a&gt;
      </example>

      <p>If you want to use double quotes within this text, you have to
      write them as <code>&amp;quot;</code>.</p></dd>
      </dl>

    </section>
</section>

<section id="example"><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.example.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.example.com/ 100,100<br />
      point http://www.tripod.example.com/ 200,200<br />
      rect mailto:nate@tripod.example.com 100,150 200,0 "Bugs?"<br />
    </example>

</section>

<section id="referencing"><title>Referencing your mapfile</title>

    <example><title>HTML example</title>
      &lt;a href="/maps/imagemap1.map"&gt;<br />
      <indent>
        &lt;img ismap src="/images/imagemap1.gif"&gt;<br />
      </indent>
      &lt;/a&gt;
    </example>

    <example><title>XHTML example</title>
      &lt;a href="/maps/imagemap1.map"&gt;<br />
      <indent>
        &lt;img ismap="ismap" src="/images/imagemap1.gif" /&gt;<br />
      </indent>
      &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>
<default>ImapMenu formatted</default>
<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|<var>URL</var></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|<var>URL</var></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://<var>servername</var>/</code>.</p>
</usage>
<seealso><directive module="core">UseCanonicalName</directive></seealso>
</directivesynopsis>

</modulesynopsis>
