[docs] xmldocs - docelic modified 16 files

docs at icdevgroup.org docs at icdevgroup.org
Sun Dec 26 20:06:12 EST 2004


User:      docelic
Date:      2004-12-27 01:06:11 GMT
Modified:  .        TODO
Modified:  bin      generic-autogen icsdf2xml.pl refs-autogen
Modified:  docbook  html-chunks.xsl html-nochunks.xsl literals.ent
Modified:           xmldocs.css
Modified:  glossary ITL
Modified:  guides   ordercheckout.xml xmldocs.xml
Modified:  images   bb_interchange.png bb_interchange.xcf
Added:     glossary flypage mv order
Log:
- Makefile: remove ordercheckout document which I'll decompose to different
  locations and remove

- bin/icsdf2xml.pl: little conversion improvements

- bin/generic-autogen: just extra newlines for eyecandy

- docbook/html-*.xsl: add Interchange icon at the bottom of html pages
  along with w3c and css

- docbook/literals.ent: supporting entities

- docbook/xmldocs.css: underline html links when hovered upon,
  designer sites suggest that

- guides/ordercheckout.xml: completely formatted first section
  ("Ordering") and moved to glossary/order file.

- images/bb_interchange*: different background color

- glossary: supporting elements

Revision  Changes    Path
1.60      +3 -0      xmldocs/TODO


rev 1.60, prev_rev 1.59
Index: TODO
===================================================================
RCS file: /var/cvs/xmldocs/TODO,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -r1.59 -r1.60
--- TODO	22 Dec 2004 14:06:37 -0000	1.59
+++ TODO	27 Dec 2004 01:06:10 -0000	1.60
@@ -2,6 +2,7 @@
 - See that if 'crypt' is put in see also, all symbols of that name appear
   in see also line and their type is distinguished visually.
 - Finish proper formatting for online examples
+- Add ROW_REPARSE along ROW_INTERPOLATE in tag refs
 
 Outstanding:
 - why email, email-raw, SendMailProgram produce errors about usertags olink ID
@@ -27,6 +28,7 @@
 
 
  Mid-term:
+- List of mv_s, descriptions and shortcuts
 - for "online" docs, also provide a form where users can add comments or
   ask for clarification. (this could be done with either pure IC (forum?), or 
   XML forms capability, or wiki?)..
@@ -39,6 +41,7 @@
 - If filter returns Vend::xxx::something(), include that function in context
   reports, and try to determine the "Uses" field (which also needs to be
   added to filter refentry template or something)
+- icsdf2xml.pl -> =item/=back should be <listitem><para> not, just <para>
 
 Tags:
   aliases



1.10      +1 -1      xmldocs/bin/generic-autogen


rev 1.10, prev_rev 1.9
Index: generic-autogen
===================================================================
RCS file: /var/cvs/xmldocs/bin/generic-autogen,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- generic-autogen	15 Dec 2004 14:24:00 -0000	1.9
+++ generic-autogen	27 Dec 2004 01:06:10 -0000	1.10
@@ -31,7 +31,7 @@
 ",
 );
 my %footer = ( # item tail
-	glossary => "\n</para>\n</glossdef>\n</glossentry>",
+	glossary => "\n</para>\n</glossdef>\n</glossentry>\n\n",
 );
 
 # HEAD



1.2       +4 -1      xmldocs/bin/icsdf2xml.pl


rev 1.2, prev_rev 1.1
Index: icsdf2xml.pl
===================================================================
RCS file: /var/cvs/xmldocs/bin/icsdf2xml.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- icsdf2xml.pl	26 Dec 2004 00:01:51 -0000	1.1
+++ icsdf2xml.pl	27 Dec 2004 01:06:10 -0000	1.2
@@ -26,7 +26,10 @@
 	s#^=item\s+.*#</para> <para>#;
 	s#^=back\s*.*#</para> <para>#;
 
-	!&in_pl and s/&/&amp;/g;
+	!&in_pl and do {
+		s/&/&amp;/g;
+		s/interchange/&IC;/gi;
+	}
 
 	s/(<[\w_-]+)/lc $1/ge and do {
 		s/( [A-Z]+=)/lc $1/ge;



1.78      +74 -1     xmldocs/bin/refs-autogen


rev 1.78, prev_rev 1.77
Index: refs-autogen
===================================================================
RCS file: /var/cvs/xmldocs/bin/refs-autogen,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- refs-autogen	22 Dec 2004 00:14:20 -0000	1.77
+++ refs-autogen	27 Dec 2004 01:06:10 -0000	1.78
@@ -46,7 +46,7 @@
 my $last_path; # Last version we want docs generated for (say, 5.2.0).
 my $compounds = 1; # Summarize similar symbol groups to single page?
 
-my @page_order = (qw/purpose default structure synopsis description online example notes bugs/, "symbol type", "source", "author", "copyright", "see also", "directive type");
+my @page_order = (qw/purpose default structure synopsis description online example notes bugs/, "symbol type", "source", "author", "copyright", "see also", "directive type", "variable type");
 
 unless ( GetOptions ( 
 	"verbosedb|dumpdb|d!" => \$dumpdb,
@@ -1057,6 +1057,79 @@
 <refsect1 id='$ag{"name"}_description'>
 <title>DESCRIPTION</title>
 <para>$ag{"description"}</para>
+</refsect1>
+
+<refsect1 id='$ag{"name"}_examples'>
+<title>EXAMPLES</title>
+$ag{"example"}
+</refsect1>
+
+<refsect1 id='$ag{"name"}_notes'>
+<title>NOTES</title>
+<para>$ag{"notes"}</para>
+</refsect1>
+
+<refsect1 id='$ag{"name"}_availability'>
+<title>AVAILABILITY</title>
+<para>$ag{"name"} is available in Interchange versions:
+</para><para>
+$ag{"available in"}</para>
+</refsect1>
+
+<refsect1 id='$ag{"name"}_source'>
+<title>SOURCE</title>
+<para>Interchange $ag{"source ver"} ($ag{"ctxs shown"}/$ag{"ctxs total"} contexts shown):</para>
+$ag{source}
+</refsect1>
+
+<refsect1 id='$ag{"name"}_authors'>
+<title>AUTHORS</title>
+<para>$ag{"author"}</para>
+</refsect1>
+
+<refsect1 id='$ag{"name"}_seeAlso'>
+<title>SEE ALSO</title>
+<para>$ag{"see also"}</para>
+</refsect1>
+
+</refentry>
+__ENDP__
+
+
+$templates{mv} = <<'__ENDP__';
+<refentry id="$ag{id}">
+
+<refmeta>
+<refentrytitle>$ag{"name"}</refentrytitle>
+<manvolnum>7ic</manvolnum>
+<refmiscinfo class="title">$ag{"name"}</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>$ag{"name"}</refname>
+<refpurpose>$ag{"purpose"}</refpurpose>
+</refnamediv>
+
+<refsect1 id='$ag{"name"}_synopsis'>
+<title>VALUE</title>
+<cmdsynopsis>
+$ag{"synopsis"}
+</cmdsynopsis>
+</refsect1>
+
+<refsect1 id='$ag{"name"}_default'>
+<title>DEFAULT</title>
+<para>$ag{"default"}</para>
+</refsect1>
+
+<refsect1 id='$ag{"name"}_description'>
+<title>DESCRIPTION</title>
+<para>$ag{"description"}</para>
+</refsect1>
+
+<refsect1 id='$ag{"name"}_type'>
+<title>VARIABLE TYPE</title>
+<para>$ag{"variable type"}</para>
 </refsect1>
 
 <refsect1 id='$ag{"name"}_examples'>



1.11      +6 -0      xmldocs/docbook/html-chunks.xsl


rev 1.11, prev_rev 1.10
Index: html-chunks.xsl
===================================================================
RCS file: /var/cvs/xmldocs/docbook/html-chunks.xsl,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- html-chunks.xsl	5 Dec 2004 22:12:07 -0000	1.10
+++ html-chunks.xsl	27 Dec 2004 01:06:11 -0000	1.11
@@ -35,6 +35,12 @@
         alt="Valid XHTML 1.0!"
         class='w3cimg'/>
     </a>
+    <a href="http://www.icdevgroup.org/">
+      <img
+        src="../images/bb_interchange.png"
+        alt="Interchange!"
+        class='w3cimg'/>
+    </a>
   </p>
   </xsl:template>
 



1.6       +6 -0      xmldocs/docbook/html-nochunks.xsl


rev 1.6, prev_rev 1.5
Index: html-nochunks.xsl
===================================================================
RCS file: /var/cvs/xmldocs/docbook/html-nochunks.xsl,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- html-nochunks.xsl	9 Nov 2004 23:16:16 -0000	1.5
+++ html-nochunks.xsl	27 Dec 2004 01:06:11 -0000	1.6
@@ -23,6 +23,12 @@
         alt="Valid XHTML 1.0!"
         class='w3cimg'/>
     </a>
+    <a href="http://www.icdevgroup.org">
+      <img
+        src="images/bb_interchange.png"
+        alt="Interchange!"
+        class='w3cimg'/>
+    </a>
   </p>
   </xsl:template>
 	



1.22      +10 -2     xmldocs/docbook/literals.ent


rev 1.22, prev_rev 1.21
Index: literals.ent
===================================================================
RCS file: /var/cvs/xmldocs/docbook/literals.ent,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- literals.ent	15 Dec 2004 22:34:05 -0000	1.21
+++ literals.ent	27 Dec 2004 01:06:11 -0000	1.22
@@ -1,4 +1,7 @@
 
+<!-- first IC release shipping with xmldocs -->
+<!ENTITY first-xmldocs-release "5.6">
+
 <!-- GENERAL ENTITIES -->
 <!ENTITY GNU "<ulink url='http://www.gnu.org'>GNU</ulink>">
 <!ENTITY IC "<ulink url='http://www.icdevgroup.org'>Interchange</ulink>">
@@ -247,6 +250,11 @@
 </row>
 ">
 
-<!-- first IC release shipping with xmldocs -->
-<!ENTITY first-xmldocs-release "5.6">
+
+<!ENTITY COMMERCIAL-SUPPORT-BLURB "
+<para>
+If you need commercial support, and want the authoritative people take a look at your problem, please join and post your request to the
+<ulink url='http://www.icdevgroup.org/mailman/listinfo/interchange-biz'>Interchange-biz</ulink> mailing list. 
+</para>
+">
 



1.18      +4 -0      xmldocs/docbook/xmldocs.css


rev 1.18, prev_rev 1.17
Index: xmldocs.css
===================================================================
RCS file: /var/cvs/xmldocs/docbook/xmldocs.css,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- xmldocs.css	16 Oct 2004 12:26:52 -0000	1.17
+++ xmldocs.css	27 Dec 2004 01:06:11 -0000	1.18
@@ -8,6 +8,10 @@
 /* General */
 body { background-color: #fff; }
 a { text-decoration: none; }
+
+/* Let's play nice */
+a:hover { text-decoration: underline; }
+
 .errortext { color: red }
 
 



1.5       +29 -0     xmldocs/glossary/ITL


rev 1.5, prev_rev 1.4
Index: ITL
===================================================================
RCS file: /var/cvs/xmldocs/glossary/ITL,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ITL	22 Dec 2004 00:14:20 -0000	1.4
+++ ITL	27 Dec 2004 01:06:11 -0000	1.5
@@ -727,3 +727,32 @@
 </section>
 
 <para>
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- TODO
+
+Explain quoting here
+
+<programlisting><![CDATA[
+<a href="[area form="
+mv_todo=refresh
+mv_order_item=000101
+mv_order_fly=description=An on-the-fly item|price=100.01
+"]">Order item 000101</a>
+]]></programlisting>
+
+
+
+
+
+-->



1.1                  xmldocs/glossary/flypage


<<flypage: empty>>


1.1                  xmldocs/glossary/mv


<<mv: empty>>


1.1                  xmldocs/glossary/order


rev 1.1, prev_rev 1.0
Index: order
===================================================================
&IC; sports a <emphasis>completely flexible</emphasis> item ordering scheme. One practical
implementation can always be seen in the latest demo catalog shipping with Interchange; the latest
demo catalog is called <literal>&Std-catalog;</literal>.
</para>


<!-- TODO: this is for checkout section 
and
<filename class='directory'>&glos-CATROOT;/etc</filename> directories.
<listitem><para>
<filename>&glos-CATROOT;/pages/ord/checkout.html</filename> - 
customers' billing and shipping information
</para></listitem>
<listitem><para>
<filename>&glos-CATROOT;/etc/receipt.html</filename> - 
receipt page display 
</para></listitem>
<listitem><para>
<filename>&glos-CATROOT;/pages/ord/checkout.html</filename> - 
customers' billing and shipping information
</para></listitem>
<listitem><para>
<filename>&glos-CATROOT;/pages/ord/checkout.html</filename> - 
customers' billing and shipping information
</para></listitem>

<programlisting><![CDATA[
receipt.html     The receipt displayed to the customer
report           The order report mailed to you
mail_receipt     The customer's email copy (if requested)
]]></programlisting>

<programlisting><![CDATA[
<input  type="hidden"  name="mv_order_size" value="L">
]]></programlisting>

If the order is coming from a generated flypage, loop list, or search
results page, you can get a canned select box from the 
<code>[item-accessories size]</code> or <code>[item-accessories size]</code> tag. See
<emphasis>Item Attributes</emphasis>.
</para>
-->

<para>
Just as in many other &IC; demo catalogs, order-related files are kept in the
<filename class='directory'>&glos-CATROOT;/pages/ord</filename> directory.
The most important file would probably be 
<filename>&glos-CATROOT;/pages/ord/basket.html</filename> which shows
order basket contents, and is displayed to the user every time an item is
added to it, or the user explicitly requests it.
</para>

<note>
<para>
It is not strictly necessary to display the basket page every time an
item is ordered, but most customers will be confused if you don't give them
a clear visual consequence of their action.
</para>
<para>
An alternative to a separate basket page could be a side-bar menu that would
display cart contents in a summarized form, and be visible on all pages.
However, it would still be useful to display the complete basket page to the
users when they are about to stop ordering and proceed with the check-out
routine.
</para>
</note>

<para>
Besides just listing electronic cart contents, the basket page usually also
allows for item removal (or quantity selection in general) and total price
recalculation.
</para>

<para>
In general, the body of the basket page is a &glos-HTML; form. Strictly 
speaking, it could just be a normal list of contents (without the 
&lt;form&gt; element), but then you couldn't request any actions on the
items (such as their removal from the cart).
</para>
<para>
At minimum, the basket page will contain the &tag-item-list; tag that will
loop over all items in the cart and display them. Any &IC; tags can be used
on the page, and you can freely have multiple item lists (the basket page
is in no way <emphasis>special</emphasis> and does not place any restrictions
on content).
</para>


<section id="PlacingItemsintheBasket">
	<title>Placing Items in the Basket</title>

<para>
&IC; supports a number of ways to add an item to the basket. You can
order an item by using both form-based (button-clicking) and link-based
(link-visiting) methods.
</para>

<section>
	<title>Link-based ordering</title>

<para>
Link-based ordering is implemented through the &tag-order; tag. You should
check the &tag-order; reference page for complete documentation, but let's
give a summary of its functionality here. In general, &glos-ITL; code

<!-- can quantity be decimal ? -->
<programlisting>
[order code=<replaceable>SKU</replaceable> quantity=<replaceable>NUMBER</replaceable> href=<replaceable>URL</replaceable> cart=<replaceable>NAME</replaceable> ]Link text&lt;/a&gt;
</programlisting>

expands into an appropriately-constructed &glos-HTML; &glos-link;. Clicking
a link places the item of specified SKU number in the cart and displays
the basket page. The <arg choice='plain'>code</arg> parameter should be a
valid product SKU (listed in one of the <database>products</database> tables),
and is the only required parameter. <arg choice='plain'>href</arg> allows
some page other than the default basket to be displayed once the item has
been added to the cart. <arg choice='plain'>cart</arg> selects the shopping
cart the item will be placed in (you see, the default cart is called 
<literal>main</literal>, but &IC; is always a step ahead).
</para>
<para>
The &tag-order; tag supports a number of attributes (more than we've shown
above), but the same effect as above can be achieved with the &tag-page;
or &tag-area; tags as well. Here are a few lines, all equal in effect:

<programlisting><![CDATA[
Order a [order TK112]Toaster</a> today!
Order a [page order TK112]Toaster</a> today!
Order a <a href="[area order TK112]">Toaster</a> today!
]]></programlisting>
</para>
<para>
"This is all nice and well", you might say, "but how do I create the link
when item data fields (such as SKU, description or price) are not known
in advance?". Well, this will be the case if you're creating a &glos-flypage;
or displaying results based on a user search operation. The procedure is, 
of course, exactly the same; you could just be uncertain about where to
stick in the additional &glos-ITL; tags. Here's a clarifying example:

<programlisting><![CDATA[
Order a [order [item-code]][item-field name]</a> today!
]]></programlisting>
</para>
</section>

<section>
	<title>Form-based ordering</title>

<para>
Form-based ordering comes handy when you want to implement more complex
ordering schemes. Consider the same ordering example as above (a toaster of
product SKU <literal>TK112</literal>) implemented using forms:

<programlisting><![CDATA[
<form action="[process]" method="post">
  <input name="mv_todo"           type="hidden" value="refresh"    />
  <input name="mv_order_item"     type="hidden" value="TK112"      />
  <input name="mv_order_quantity" type="text"   value="1" size="3" /> toasters 
  <input value="Order!"           type="submit"                    />
</form>
]]></programlisting>

Although the readability above suffers due to &glos-HTML; elements and quoting,
it's easy to dissect it to components. &lt;form&gt; and &lt;input&gt; are
standard &glos-HTML; elements. We care to supply <code>type="text"</code>
with text fields for clarity, but that's the default type and can be
safely omitted. What's left to note is that the &lt;input&gt;
element names are of predetermined values, and that's only reasonable &mdash;
you need to set those variables that you know &IC; will look for (otherwise
this would be a waste of time). In our situation this includes setting
<mv>mv_order_item</mv> (item SKU number),
<mv>mv_order_quantity</mv> (item quantity) and
<mv>mv_todo</mv> (desired form action).
For a complete list of user &glos-mv; variables, see 
<!-- TODO link to MV variables -->.

</para>
<para>
You might notice we added the quantity field in the example above. From its
implementation, you see that making special &glos-mv; variables contain user
input is <emphasis>extremely</emphasis> easy. What's more, input placeholders
do not have to be a text fields as in our example; it can be a list, checkbox
or a complex set of &glos-HTML; widgets!
</para>

<para>
&IC; supports "stacking" of variables. This allows us to order different
items ("batches") at once:

<programlisting><![CDATA[
<form action="[process]" method="post">
  <input name="mv_todo"           type="hidden" value="refresh"          />
  <input name="mv_order_item"     type="hidden" value="TK112"            />
  <input name="mv_order_quantity" type="text"   value="1"       size="3" /> Standard Toaster <br/>
  <input name="mv_order_item"     type="hidden" value="TK200"            />
  <input name="mv_order_quantity" type="text"   value="1"       size="3" /> Super Toaster
  <input value="Order!"           type="submit"                          />
</form>
]]></programlisting>


Items that have a quantity of zero (or blank) will be skipped, and only
items with a positive quantity will be placed in the basket.
</para>
</section>
</section>


<section id="OnFlyItems">
	<title>Items created "on fly"</title>

<para>
Note that "on fly" items are those that do not exist in any of the 
<database>products</database> databases, and are literaly "put together"
on the fly. This is unrelated to &IC; &glos-flypage; functionality.
</para>
<para>
If you setup the &conf-OnFly; config directive, &IC; will be able to add
items to user's basket even if they're not listed in any of the 
<database>products</database> databases.
</para>
<para>
A basic on-fly item can then be generated like this:

<programlisting><![CDATA[
<a href="[area form="
  mv_todo=refresh
  mv_order_item=000101
  mv_order_fly=description=An on-the-fly item|price=100.01
"]">Order item 000101</a>
]]></programlisting>
<!-- TODO is SKU an existing SKU, for which you modify values, or we "invent"
a new item from scratch? -->

A lot of things might look weird in the above example, but it is all valid
&glos-ITL; code.
</para>
<para>
The form parameter <mv>mv_order_fly</mv> can contain any number of fields
which define attributes for our on-fly item. Fields are separated by the
pipe (<literal>|</literal>) character and contain value-parameter
pairs separated by an equal (<literal>=</literal>) sign.
</para>
<!-- Elaborate?
The special attribute <literal>mv_price</literal> can be used in conjunction with the
<literal>CommonAdjust</literal> atom <literal>$</literal> to set the price for checkout and display.


If you wish to set up a UserTag to process on-the-fly items, it should
accept a call of
<programlisting><![CDATA[
usertag(mv_item_code, mv_item_quantity, mv_order_fly)
]]></programlisting>
The <literal>mv_item_code</literal> and <literal>mv_order_fly</literal> parameters are required to trigger
Interchange's <literal>add_item</literal> routine (along with  mv_todo="refresh" to set the action).

The item will always act as if <literal>SeparateItems</literal> or <literal>mv_separate_items</literal> is
set.




<para>
Iterates over the items in the specified cart - tags like &tag-item-quantity;
 and &tag-item-price; will be evaluated accordingly;
</para>
<para>
Returns the total number of items in the specified cart;
</para>
<para>
Returns the monetary subtotal for the contents of specified cart;
</para>
<para>
You get the idea. It is worth noting that tags which summarize
cart contents do not need to be in used concert, or in conjunction with
an &tag-item-list;. For instance, you can display just the grand
total for a cart on the sidebar or bottom of each page, using 
&tag-total-cost; by itself, if you wish.

-->
<note>
<para>
To show description for the on-fly item, you must use the &tag-item-description;
tag; <code>[item-field description]</code> or <code>[item-data products
description]</code> will <emphasis role='bold'>not</emphasis> work since both
try referencing existing fields in <database>products</database> databases.
</para>
<para>
Similarly, an attempt to generate a flypage for an on-fly item will fail,
resulting in display of the &conf-SpecialPage;
<literal>missing</literal> URL.
</para>
</note>

<para>
<!-- TODO this works if there is only one mv_order_item or also if there
are more of them? -->
Multiple items can be ordered at once by stacking the variables, as we've 
shown already. However, if there is only one <mv>mv_order_item</mv> instance
defined, then you can stack <mv>mv_order_fly</mv> variables which will result
in their concatenation just as if you separated them with pipes. Here's 
an example, equal in effect to the previous one:

<programlisting><![CDATA[
<a href="[area form="
  mv_todo=refresh
  mv_order_item=000101
  mv_order_fly=description=An on-the-fly item
  mv_order_fly=price=100.00
"]">Order item 000101</a>
]]></programlisting>
</para>
</section>


<section id="OrderGroups">
	<title>Order Groups</title>

<para>
We've seen variable stacking at work above, but there's more to it.
Imagine you had a master item and accompanying accessories which only make
sense together with the main item. You could order them at once using
ordinary stacking - no problem there, but what if you also wanted
accessories or options removed at the same time the master item is
removed from the cart?
In the simplest form, this is achieved by ordering items as usual, while
defining <mv>mv_order_group</mv>. The first item in the list is then
treated as the master item, and all other are sub-items.

<programlisting><![CDATA[
<form action="[process]"  method="post">
  <input name="mv_todo"        type="hidden" value="refresh"   />
  <input name="mv_order_group" type="hidden" value="1"         />
  <input name="mv_order_item"  type="hidden" value="00-0011"   />
  <input name="mv_order_item"  type="hidden" value="00-0011a"  />
  <input value="Order Mona Lisa with frame" type="submit"      />
</form>
]]></programlisting>

Incredible, but you can also define multiple master items! All you need to 
do is define a <mv>mv_value_group</mv> for each individual item.
Master item "owns" all subsequent sub-items until the next master
is defined.

<programlisting><![CDATA[
<form action="[process]"  method="post">
  <input name="mv_todo"        type="hidden" value="refresh"   />
  <input name="mv_order_group" type="hidden" value="1"         />
  <input name="mv_order_item"  type="hidden" value="00-0011"   />
  <input name="mv_order_group" type="hidden" value="0"         />
  <input name="mv_order_item"  type="hidden" value="00-0011a"  />
  <input name="mv_order_group" type="hidden" value="1"         />
  <input name="mv_order_item"  type="hidden" value="19-202"    />
  <input name="mv_order_group" type="hidden" value="0"         />
  <input name="mv_order_item"  type="hidden" value="99-102"    />
  <input value="Order Mona Lisa and more!"   type="submit"     />
</form>
]]></programlisting>

The example shows a 4-item order form. Items 1 and 3 are master items,
items 2 and 4 are sub-items.
If a master item of SKU <literal>00-0011</literal> is deleted from the
basket, <literal>00-0011a</literal> will be deleted too. If
<literal>19-202</literal> is deleted, then <literal>99-102</literal> will be
deleted along.
</para>

<note>
<para>
Use of &glos-HTML; checkboxes for this type of thing could be inappropriate
because they do not pass a value when unchecked. The value then remains
defaulting to last used value. It is preferable to use radio groups or
select/drop-down widgets instead. If you use checkboxes, make sure to 
explicitly clear <mv>mv_order_group</mv> and <mv>mv_order_item</mv>
somewhere on the form page. You can re-use the following code snippet:

<programlisting><![CDATA[
[value name=mv_order_group set='']
[value name=mv_order_item  set='']
]]></programlisting>
</para>
</note>

<para>
<mv>mv_mi</mv> and <mv>mv_si</mv> attributes are set to the group and
sub-item status of each item. The group, contained in the attribute
<mv>mv_mi</mv>, is a meaningless yet unique integer. All items
in a group will have the same <mv>mv_mi</mv> value. The attribute
<mv>mv_si</mv> is <literal>0</literal> if the item is
a master item, and <literal>1</literal> if it is a sub-item.
</para>
</section>


<section id="BasketDisplay">
	<title>Basket display</title>

<para>
Basket pages list electronic cart contents and usually allow order
contents to be adjusted; items can be removed, ordered in different 
quantities etc.
</para>
<para>
It is possible to have an <emphasis role='bold'>multiple
(different) basket pages</emphasis>, because they're in no way
<emphasis>special</emphasis>.
It is also possible to have <emphasis role='bold'>multiple shopping
carts</emphasis>, for example in cases where the same user maintains a 
<emphasis>buy</emphasis> and <emphasis>sell</emphasis> list.
Multiple basket pages could also be used where items have many accessories
and, depending on the item ordered, you send customers to different,
item-specific pages to choose accessories. The possibilities 
are endless, it's just about evaluating your actual needs.
</para>
<para>
The name of the basket page to be displayed upon item order can be
defined in a few ways:
</para>

<itemizedlist>
	<listitem><para>
	You can set <literal>order</literal> value of the &conf-SpecialPage;
	directive to the page you want displayed on item order
	</para></listitem>
	<listitem><para>
  You could use the &tag-order; tag in form of
	<code>[order code=<replaceable>SKU</replaceable>
	page=<replaceable>NAME</replaceable>]Order it!&lt;/a&gt;</code>
  to define the basket page
	</para></listitem>
	<listitem><para>
	If you already <emphasis>are</emphasis> on the order page and want to
	"jump" next, use the
	standard form, setting some of <mv>mv_orderpage</mv>, <mv>mv_nextpage</mv>,
	<mv>mv_successpage</mv> and <mv>mv_failpage</mv> variables.
	</para></listitem>
</itemizedlist>
</section>


<section id="MultipleShoppingCarts">
	<title>Multiple Shopping Carts</title>

<para>
Interchange allows you to define and maintain multiple shopping carts
for each user.
The default shopping cart named <literal>main</literal> is created when
the user session starts. If the user orders an item of SKU
<literal>M1212</literal> through the following link:

<programlisting><![CDATA[
[order code=M1212 cart=layaway]Order this item!</a>
]]></programlisting>

then the item will be placed in the cart named <literal>layaway</literal>, and
not <literal>main</literal>. Consequently, the use won't see the just-ordered
item on the basket page because the default shopping basket displays contents
of the <literal>main</literal> cart only. The easiest way to support multiple
carts is to copy the default basket page
(<filename><replaceable>CATROOT</replaceable>/pages/ord/basket.html</filename>)
to a new file, insert <code>[cart layaway]</code> code snippet at the top,
and specify it as the target page for the &tag-order; tag:

<programlisting><![CDATA[
[order code=M1212 cart=layaway page=ord/layaway_basket]Order this item!</a>
]]></programlisting>

Now the contents of the <literal>layaway</literal> cart would be displayed
on the appropriate page. Most of the fundamental cart management &glos-ITL;
tags support the <arg choice='plain'>nickname</arg> option, allowing
cart name to be chosen. Using <arg choice='plain'>nickname</arg> is handy,
and has no permanent effect, the default cart remains set at value of
<literal>main</literal>.
<!-- sticky is attribute to [cart] or what? -->
A <arg choice='plain'>sticky</arg> attribute could be set to change the
default cart name until further notice. This is convenient, 
but you must remember to use <code>[cart main]</code> to get back to
the primary cart!
</para>

<para>
And for the sake of completness, here's the above example using form-based
ordering:

<programlisting><![CDATA[
<form action="[process]" method="post">
  <input name="mv_order_item"     type="checkbox" value="M1212"   /> Item M1212
  <input name="mv_order_quantity" type="text"     value="1"       /> Quantity
  <input name="mv_cartname"       type="hidden"   value="layaway" />
  <input name="mv_doit"           type="hidden"   value="refresh" />
  <input value="order this item!" type="submit">
</form>
]]></programlisting>
</para>
</section>

<!--
If you need to utilize an alternative item price in conjunction with 
the use of a custom cart, see the section on <emphasis>PRODUCT PRICING</emphasis> for 
pricing methods and strategies.
</para>
-->

<para>



1.2       +4 -599    xmldocs/guides/ordercheckout.xml


rev 1.2, prev_rev 1.1
Index: ordercheckout.xml
===================================================================
RCS file: /var/cvs/xmldocs/guides/ordercheckout.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ordercheckout.xml	26 Dec 2004 00:01:51 -0000	1.1
+++ ordercheckout.xml	27 Dec 2004 01:06:11 -0000	1.2
@@ -46,615 +46,20 @@
 
 	<abstract>
 		<para>
-		The purpose of this document is to guide you through &IC; item <emphasis>ordering</emphasis> and <emphasis>checkout</emphasis> process.
+		The purpose of this document is to guide you through &IC; item <emphasis>ordering</emphasis>, <emphasis>pricing</emphasis>, <emphasis>taxing</emphasis> and <emphasis>checkout</emphasis> process.
 		</para> <para>
 		By term "item ordering" we assume users placing items in their electronic cart, or performing cart management functions such as quantity change, item removal and price recalculation. By term "checkout" we assume users passing all checkout stages and triggering order finalization (such as physical delivery or download activation).
 		</para> <para>
 		Basic ordering and checkout process is explained in the <olink targetdoc='iccattut' targetptr='iccattut'>Interchange Catalog Tutorial</olink>. Make sure you're familiar with it before proceeding with this Guide.
 		</para>
+		&COMMERCIAL-SUPPORT-BLURB;
 	</abstract>
 
 </articleinfo>
 
 
-<sect1 id="Order">
-
-<sect2 id="TheOrderProcess">
-	<title>The order process</title>
-
-<para>
-
-Interchange has a completely flexible order basket and checkout
-scheme. The <literal>foundation</literal> demo presents a common use of this process,
-in the directory pages/ord -- the files are:
-
-
-<programlisting><![CDATA[
-basket.html      The order basket displayed by default
-checkout.html    The form where the customer enters their billing
-and shipping info
-]]></programlisting>
-
-
-... and in the directory etc:
-
-
-<programlisting><![CDATA[
-receipt.html     The receipt displayed to the customer
-report           The order report mailed to you
-mail_receipt     The customer's email copy (if requested)
-]]></programlisting>
-
-
-It is not strictly necessary to display an order basket when
-an item is ordered. If you specify a different page to be
-displayed that is fine, but most customers will be confused if
-you don't give them an indication that the order operation has
-succeeded.
-
-Any order basket is an HTML <literal>FORM</literal>. It will have a number of
-variables on it. At the minimum it must have an &tag-item-list; to
-loop through the items, and the <literal>quantity</literal> of each item must be
-set in some place on that form. Any valid Interchange tags may be
-used on the page, and you may use multiple item lists if necessary.
-
-
-</para>
-</sect2>
-
-
-<sect2 id="HowToOrderAnItem">
-	<title>How to order an item</title>
-
-<para>
-
-Interchange can either use a form-based order or a link-based order to
-place an item in the shopping cart. The link-based order uses the
-special <code>[order item-code]</code> tag:
-
-</para>
-
-<para>
-
-named attributes:
-
-
-<programlisting><![CDATA[
-[order code="sku" quantity="n"* href="page"* cart="cartname"* base="table"*]
-* = optional parameters
-]]></programlisting>
-
-
-Expands into a hypertext link which will include the specified
-code in the list of products to order and display the order page. <emphasis role='bold'>code</emphasis>
-should be a product SKU listed in one of the "products" tables, and is the 
-only required parameter. <emphasis role='bold'>quantity</emphasis> may be specified if more than one 
-(the default) of the item should be 
-placed in the cart. <emphasis role='bold'>href</emphasis> allows some page other than the default order
-page to be displayed once the item has been added to the cart. <emphasis role='bold'>cart</emphasis> 
-selects the shopping cart the item will be placed in. The optional argument 
-<emphasis role='bold'>base</emphasis> constrains
-the order to a particular products file -- if not specified, all tables
-defined as products files will be searched in sequence for the item.
-
-
-<programlisting><![CDATA[
-Order a [order TK112]Toaster</a> today.
-]]></programlisting>
-
-
-Note that this is the same as:
-
-
-<programlisting><![CDATA[
-Order a [page order TK112]Toaster</A> today.
-]]></programlisting>
-
-
-You can change frames for the order with:
-
-
-<programlisting><![CDATA[
-Order a <a href="[area order TK112]"  target="newframe">Toaster</A> today.
-]]></programlisting>
-
-Expands into &lt;/a&gt;. May be used to give the order tag the appearance
-of being a container tag, but neither necessary nor recommended.
-
-</para> <para>
-To order with a form, you set the form variable <literal>mv_order_item</literal> to
-the item-code/SKU and use the <literal>refresh</literal> action:
-
-
-<programlisting><![CDATA[
-<form action="[process-target]"  method="POST">
-<input  type="hidden"  name="mv_todo"        value="refresh">
-<input  type="hidden"  name="mv_order_item"  value="TK112">
-
-Order <input name="mv_order_quantity"  size="3"  value="1"> toaster
-
-<input  type="submit" value="Order!">
-</FORM>
-]]></programlisting>
-
-
-You may batch select whole groups of items:
-
-
-
-<programlisting><![CDATA[
-<form action="[process-target]"  method="POST">
-<input  type="hidden"  name="mv_todo"        value="refresh">
-
-<input  type="hidden"  name="mv_order_item"  value="TK112">
-<input name="mv_order_quantity"  size="3"> Standard Toaster
-
-<input  type="hidden"  name="mv_order_item"  value="TK200">
-<input name="mv_order_quantity"  size="3"> Super Toaster
-
-<input  type="submit" value="Order!">
-</FORM>
-]]></programlisting>
-
-
-Items that have a quantity of zero (or blank) will be skipped, and only
-items with a positive quantity will be placed in the basket.
-
-You may also specify attributes like size or color at time of order (see 
-<emphasis>How to set up an order button</emphasis>).
-
-
-</para>
-</sect2>
-
-
-<sect2 id="HowToSetUpAnOrderLink">
-	<title>How to set up an order link</title>
-
-<para>
-
-On a product display page, use:
-
-
-<programlisting><![CDATA[
-[order 00-0011]Order the Mona Lisa</a>
-]]></programlisting>
-
-
-If coming from a search results or on-the-fly page, you may use the generated
-&tag-item-code; thusly:
-
-
-<programlisting><![CDATA[
-[order [item-code]]Order [item-field name]</a>
-]]></programlisting>
-
-
-Bear in mind that if you have not reached the page via a search or
-on-the-fly operation, &tag-item-code; means nothing and will cause an error.
-
-</para>
-</sect2>
-
-
-<sect2 id="HowToSetUpAnOrderButton">
-	<title>How to set up an order button</title>
-
-<para>
-
-Interchange can order via form submission as well. This allows you
-to order a product (or group of products) via a form button. In its
-simplest form, it is:
-
-
-<programlisting><![CDATA[
-<form action="[process-target]"  method="POST">
-<input  type="hidden"  name="mv_todo"  value="refresh">
-<input  type="hidden"  name="mv_order_item" value="00-0011">
-<input  type="submit" value="Order the Mona Lisa">
-</FORM>
-]]></programlisting>
-
-
-The default quantity is one.  An initial quantity may be set by the user
-by adding an mv_order_quantity variable:
-
-
-<programlisting><![CDATA[
-Number to order:<input  type="text"  name="mv_order_quantity" value="1">
-]]></programlisting>
-
-
-You can order multiple items by stacking the variables:
-
-
-<programlisting><![CDATA[
-<form action="[process-target]"  method="POST">
-<input  type="hidden"  name="mv_todo"  value="refresh">
-<input  type="hidden"  name="mv_order_item" value="00-0011">
-<input  type="hidden"  name="mv_order_item" value="00-0011a">
-<input  type="submit" value="Order the Mona Lisa with frame">
-</FORM>
-]]></programlisting>
-
-
-Initial size or color may be set as well, provided <emphasis>UseModifier</emphasis> is
-set up properly:
-
-
-<programlisting><![CDATA[
-<input  type="hidden"  name="mv_order_size" value="L">
-]]></programlisting>
-
-
-If the order is coming from a generated flypage, loop list, or search
-results page, you can get a canned select box from the 
-<code>[item-accessories size]</code> or <code>[item-accessories size]</code> tag. See
-<emphasis>Item Attributes</emphasis>.
-
-</para>
-</sect2>
-
-
-<sect2 id="HowToSetUpAnOnTheFlyItem">
-	<title>How to set up an on-the-fly item</title>
-
-<para>
-
-If you enable the catalog directive <emphasis>OnFly</emphasis>, setting it to the
-name of a subroutine (or possibly a UserTag) that can handle its calls, then
-Interchange will add items to the basket that are not in the product
-database. Interchange supplies an internal <literal>onfly</literal> subroutine, which 
-will work according to the examples given below. 
-
-In <literal>catalog.cfg</literal>:
-
-
-<programlisting><![CDATA[
-OnFly  onfly
-]]></programlisting>
-
-
-If your item code is not to be named <literal>mv_order_item</literal> then you
-must perform a rename in the <literal>Autoload</literal> routine.
-
-A basic link can be generated like:
-
-
-<programlisting><![CDATA[
-<a href="[area form="
-mv_todo=refresh
-mv_order_item=000101
-mv_order_fly=description=An on-the-fly item|price=100.01
-"]">Order item 000101</a>
-]]></programlisting>
-
-
-The form parameter value <literal>mv_order_fly</literal> can contain any number of fields
-which will set corresponding parameters in the item attributes. The fields
-are separated by the pipe (<literal>|</literal>) character and contain value-parameter
-pairs separated by an = sign. (These are URL-encoded by the &tag-area; or
-&tag-page; tag, of course.) You can set a size, color, or any other parameter.
-
-The special attribute <literal>mv_price</literal> can be used in conjunction with the
-<literal>CommonAdjust</literal> atom <literal>$</literal> to set the price for checkout and display.
-
-The &tag-item-list; sub-tag &tag-item-description;, when used with an
-item-list, will use the item attribute <literal>description</literal> to display in the 
-basket. Note that <code>[item-field description]</code> or <code>[item-data products description]</code>
-will NOT work, as both of these tags reference an actual field value for 
-a record in the products table - not applicable for on-the-fly items.
-Similarly, an attempt to generate a flypage for an on-the-fly item 
-(<code>[page 000101]</code>, for example) will fail, resulting in the display of
-the SpecialPage <emphasis role='bold'>missing</emphasis>.
-
-If you wish to set up a UserTag to process on-the-fly items, it should
-accept a call of
-
-
-<programlisting><![CDATA[
-usertag(mv_item_code, mv_item_quantity, mv_order_fly)
-]]></programlisting>
-
-
-The <literal>mv_item_code</literal> and <literal>mv_order_fly</literal> parameters are required to trigger
-Interchange's <literal>add_item</literal> routine (along with  mv_todo="refresh" to set the action).
-
-The item will always act as if <literal>SeparateItems</literal> or <literal>mv_separate_items</literal> is
-set.
-
-Multiple items can be ordered at once by stacking the variables. If there
-is only one <literal>mv_order_item</literal> instance, however, you can stack the <literal>mv_order_fly</literal>
-variable so that all are concatenated together as with the <literal>|</literal> symbol. So
-the above example could be done as:
-
-
-<programlisting><![CDATA[
-[area form="
-mv_todo=refresh
-mv_order_item=000101
-mv_order_fly=description=An on-the-fly item
-mv_order_fly=price=100.00
-"]
-]]></programlisting>
-
-
-Multiple items would need multiple instances of <literal>mv_order_item</literal> with 
-a corresponding <literal>mv_order_fly</literal> for each <literal>mv_order_item</literal>. You can
-order both <literal>000101</literal> and <literal>000101</literal> as follows:
-
-
-<programlisting><![CDATA[
-[area form="
-mv_todo=refresh
-
-mv_order_item=000101
-mv_order_fly=description=An on-the-fly item|price=100.00
-
-mv_order_item=000102
-mv_order_fly=description=Another on-the-fly item|price=200.00
-"]
-]]></programlisting>
-
-
-The following two forms correspond to the above two examples, in order,
-with the slight refinement of adding a quantity:
-
-
-<programlisting><![CDATA[
-<form action="[area process]"  method="POST">
-<input  type="hidden"  name="mv_todo" value="refresh">
-<input  type="hidden"  name="mv_order_item" value="000101">
-Qty: <input  size="2"  name="mv_order_quantity" value="1">
-<input  type="hidden"  name="mv_order_fly"
-VALUE="description=An on-the-fly item|price=100.00">
-<input  type="submit" value="Order button">
-</FORM>
-
-<form action="[area process]"  method="POST">
-<input  type="hidden"  name="mv_todo" value="refresh">
-<input  type="hidden"  name="mv_order_item" value="000101">
-Qty: <input  size="2"  name="mv_order_quantity" value="1"><br>
-<input  type="hidden"  name="mv_order_fly"
-VALUE="description=An on-the-fly item|price=100.00">
-<input  type="hidden"  name="mv_order_item" value="000102">
-Qty: <input  size="2"  name="mv_order_quantity" value="1"><br>
-<input  type="hidden"  name="mv_order_fly"
-VALUE="description=Another on-the-fly item|price=200.00">
-<input  type="submit" value="Order two different with a button">
-</FORM>
-]]></programlisting>
-
-
-</para>
-</sect2>
-
-
-<sect2 id="OrderGroups">
-	<title>Order Groups</title>
-
-<para>
-
-Interchange allows you to group items together, making a master item
-and sub-items. This can be used to delete accessories or options when
-the master item is deleted. In its simplest form, you order just one
-master item and all subsequent items are sub-items.
-
-
-<programlisting><![CDATA[
-<form action="[process-target]"  method="POST">
-<input  type="hidden"  name="mv_todo"  value="refresh">
-<input  type="hidden"  name="mv_order_group" value="1">
-<input  type="hidden"  name="mv_order_item" value="00-0011">
-<input  type="hidden"  name="mv_order_item" value="00-0011a">
-<input  type="submit" value="Order the Mona Lisa with frame">
-</FORM>
-]]></programlisting>
-
-
-If you wish to stack more than one master item, then you must define
-mv_order_group for <emphasis role='bold'>all</emphasis> items, with either a 1 value (master) or 0 value
-(sub-item). A master owns all subsequent sub-items until the next master
-is defined.
-
-
-<programlisting><![CDATA[
-<form action="[process-target]"  method="POST">
-<input  type="hidden"  name="mv_todo"  value="refresh">
-<input  type="hidden"  name="mv_order_group" value="1">
-<input  type="hidden"  name="mv_order_item" value="00-0011">
-<input  type="hidden"  name="mv_order_group" value="0">
-<input  type="hidden"  name="mv_order_item" value="00-0011a">
-<input  type="hidden"  name="mv_order_group" value="1">
-<input  type="hidden"  name="mv_order_item" value="19-202">
-<input  type="hidden"  name="mv_order_group" value="0">
-<input  type="hidden"  name="mv_order_item" value="99-102">
-<input  type="submit" value="Order items">
-</FORM>
-]]></programlisting>
-
-
-When the master item <literal>00-0011</literal> is deleted from the basket,
-<literal>00-0011a</literal> will be deleted as well. And when 19-202 is deleted,
-then 99-102 will be deleted from the basket.
-
-\NOTE: Use of checkboxes for this type of thing can be hazardous, as they
-do not pass a value when unchecked.  It is preferable to use radio groups 
-or select/drop-down widgets. If you must use checkboxes, be sure to 
-explicitly clear <literal>mv_order_group</literal> and <literal>mv_order_item</literal> somewhere on the
-page which contains the form:
-
-
-<programlisting><![CDATA[
-[value name=mv_order_group set='']
-[value name=mv_order_item set='']
-]]></programlisting>
-
-
-The attributes <literal>mv_mi</literal> and <literal>mv_si</literal> are set to the group and sub-item status
-of each item.  The group, contained in the attribute <literal>mv_mi</literal>, is a
-meaningless yet unique integer. All items in a group will have the same
-value of <literal>mv_mi</literal>. The attribute <literal>mv_si</literal> is set to 0 if the item is
-a master item, and 1 if it is a sub-item.
-
-</para>
-</sect2>
-
-
-<sect2 id="BasketDisplay">
-	<title>Basket display</title>
-
-<para>
-
-The basket page(s) are where the items are tracked and adjusted by the
-customer. It is possible to have an unlimited number of basket pages.
-It is also possible to have multiple shopping carts, as in buy or
-sell. This allows a basket/checkout type of ordering scheme, with custom
-order pages for items which have many accessories.
-
-The name of the page to display can be configured in several
-ways:
-
-^ Set the SpecialPage <literal>order</literal> to the page to display
-  when an item is ordered.
-+ Use the <code>[order  code="item"  page="page_name"] Order it!&lt;/a&gt;</code> form of
-  order tag to specify an arbitrary order page for an item.
-+ If already on an order page, set the mv_orderpage,
-  mv_nextpage, mv_successpage, or mv_failpage variables.
-
-The following variables can be used to control cart selection and
-page display:
-
-</para>
-
-<para>
-
-The shopping cart (default is main) to be used for this order
-operation.
-
-</para>
-<para>
-
-Page to be displayed on a failed order
-check (see <emphasis>Advanced Multi-level Order Pages</emphasis>)
-
-</para>
-<para>
-
-Page to display on a return operation.
-
-</para>
-<para>
-
-Page to be displayed on a refresh.
-
-</para>
-<para>
-
-Page to be displayed on a successful order
-check (see <emphasis>Advanced Multi-level Order Pages</emphasis>).
-
-</para>
-<para>
-
-Order profile to be used if the form action is <literal>submit</literal>
-(see <emphasis>Advanced Multi-level Order Pages</emphasis>).
-
-</para>
-</sect2>
-
-
-<sect2 id="MultipleShoppingCarts">
-	<title>Multiple Shopping Carts</title>
-
-<para>
-
-Interchange allows you to define and maintain multiple shopping carts.
-One shopping cart -- main, by name -- is defined when the user session
-starts. If the user orders item M1212 with the following tag:
-
-
-<programlisting><![CDATA[
-[order code=M1212 cart=layaway] Order this item! </a>
-]]></programlisting>
-
-
-the order will be placed in the cart named <emphasis>layaway</emphasis>. However, by default
-you won't see the just-ordered item on the basket page.  That is because 
-the default shopping basket displays the contents of the 'main' cart only. 
-So copy the default basket page (pages/ord/basket.html in the demo)
-to a new file, insert a <code>[cart layaway]</code> tag, and specify it as the target
-page in your &tag-order; tag:
-
-
-<programlisting><![CDATA[
-[order code=M1212 cart=layaway page=ord/lay_basket] Order this item! </a>
-]]></programlisting>
-
-
-Now the contents of the <emphasis>layaway</emphasis> cart will be displayed. Most of the ITL
-tags that are fundamental to cart display accept a 'cartname' option, 
-allowing you to specify which cart to be used:
-
-</para>
-
-<para>
-
-A 'sticky' setting of the default cart name to use for all subsequent
-cart-related tags.  Convenient, but you must remember to use <code>[cart main]</code>
-to get back to the primary cart!  As an alternative, you can specify the
-desired cart as a parameter of the other tags.  These are not sticky, 
-referencing the specified cart only for the instance in which they are called:
-
-</para>
-<para>
-
-Iterates over the items in the specified cart - tags like &tag-item-quantity;
- and &tag-item-price; will be evaluated accordingly;
-
-</para>
-<para>
-
-Returns the total number of items in the specified cart;
-
-</para>
-<para>
-
-Returns the monetary subtotal for the contents of specified cart;
-
-</para>
-<para>
-
-You get the idea. It is worth noting that tags which summarize
-cart contents do not need to be in used concert, or in conjunction with
-an &tag-item-list;. For instance, you can display just the grand
-total for a cart on the sidebar or bottom of each page, using 
-&tag-total-cost; by itself, if you wish.
-
-</para> <para>
-You can also order items from a form, using the <literal>mv_order_item</literal>,
-<literal>mv_cartname</literal>, and optional <literal>mv_order_quantity</literal> variables.
-
-
-<programlisting><![CDATA[
-<form  method="POST" action="[process]">
-<input  type="checkbox" name="mv_order_item" value="M3243"> Item M3243
-<input name="mv_order_quantity" value="1"> Quantity
-<input  type="hidden" name="mv_cartname" value="layaway">
-<input  type="hidden" name="mv_doit" value="refresh">
-<input  type="submit" name="mv_junk" value="Place on Layaway Now!">
-</FORM>
-]]></programlisting>
-
-
-
-If you need to utilize an alternative item price in conjunction with 
-the use of a custom cart, see the section on <emphasis>PRODUCT PRICING</emphasis> for 
-pricing methods and strategies.
-
-</para>
-
-</sect2>
+<sect1 id="ItemOrdering">
+	<title>Item Ordering</title>
 
 </sect1>
 



1.10      +0 -1      xmldocs/guides/xmldocs.xml


rev 1.10, prev_rev 1.9
Index: xmldocs.xml
===================================================================
RCS file: /var/cvs/xmldocs/guides/xmldocs.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- xmldocs.xml	23 Oct 2004 16:38:30 -0000	1.9
+++ xmldocs.xml	27 Dec 2004 01:06:11 -0000	1.10
@@ -8,7 +8,6 @@
 <articleinfo>
 	<title>Interchange Guides: the XMLDOCS Documentation System</title>
 	<titleabbrev>xmldocs</titleabbrev>
-	<edition>version xml0.1a</edition>
 
 	<copyright>
 		<year>2004</year>



1.2       +1 -4      xmldocs/images/bb_interchange.png


<<bb_interchange.png: PNG image data, 80 x 15, 8-bit/color RGB, non-interlaced>>


1.2       +3 -3      xmldocs/images/bb_interchange.xcf


<<bb_interchange.xcf: GIMP XCF image data, version 0, 80 x 15, RGB Color>>







More information about the docs mailing list