+++ /dev/null
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-\f
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-\f
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+++ /dev/null
--------------------------------------------------------------
-
- I N S T A L L A T I O N
-
-IMPORTANT NOTE: The installation procedure has changed, we hope for the
- better. Please read this even if you have installed
- MiniVend before.
-
-We IMPLORE you to read all of the verbiage below. We know how most
-of us are, so we put the install procedure up here, but if you have
-problems please read all of this file, PLUS the MiniVend documentation
-in doc/minivend.html. Also, please check out the official MiniVend
-FAQ at http://www.minivend.com/minivend/faq/ before you call for help.
-And send your system, Perl, and Minivend information, VERSIONS AND ALL!
-
-IMPORTANT NOTE: The installation procedure has changed, we hope for the
- better. If you don't give evidence of having read and
- heeded the above heartfelt plea, your email
- may well be ignored. Caveat Emptor.
-
-
-WINDOWS INSTALLATION
---------------------
-
- Obtain the self-extracting executable minivend-3.15.exe
- and double-click on it.
-
- IMPORTANT NOTE: If you get the message "Bad command or file name"
- when trying to install, then that means that Perl is not installed
- on your machine or is not in your path. Go to http://www.perl.com
- and install the *standard* 5.004 version (AKA the Gurusamy Sarathy
- port). MiniVend will not work with the ActiveState 5.003 port; it
- appears to work well with the ActiveState 5.005 "Merge" port.
-
- If you already have the CYGWIN.DLL executable or plan on using the
- Perl link CGI, you can download the file minivend-3.15-nodll.exe
- and do the same.
-
- The defaults are set for Microsoft Personal Web Server on Win95 --
- if you use another HTTP server you will have to know where to
- place CGI executables (the CGI-BIN) and HTML documents (DocumentRoot).
-
- If the program does not find BLAT, you can just enter 'none' when
- asked for SendMailProgram -- that will place all orders in the
- CATALOG_DIR/etc/tracking.asc and CATALOG_DIR/error.log as the
- demo is configured.
-
- You should get PGP as soon as possible so that you might have
- secure credit card number storage.
-
- Some features are untested in the Windows version, and it
- can be considered a beta.
-
- If you have installed the MIME::Base64 and URI::URL (from libwww)
- modules, then there is a new interface that is available for
- a GUI-like catalog configuration. It should run automatically
- upon a new installation.
-
-UNIX INSTALLATION
-------------------
-Here is the short version:
-
- gzip -dc minivend-3.15.tar.gz | tar xvf -
- cd minivend-3.15
- ./configure
-
-Long version with comments:
-
- # Unzip and untar the file -- if you have GNU tar, you can substitute
- # 'tar xzf minivend-3.15.tar.gz'
- gzip -dc minivend-3.15.tar.gz | tar xvf -
-
- # Change directory to the one that was created
- #
- cd minivend-3.15
-
- # If you have trouble with picking up the wrong Perl version,
- # try '/dir/where/perl/is/perl Makefile.PL
- #
- # If you aren't already the user ID of the user who will run the
- # minivend server, you might want to 'su' to that user before
- # running this step.
- #
- # This step will set the MiniVend directory and Perl location,
- # and build the Makefile.
- #
- # If you are upgrading from a previous version, put the
- # former MiniVend root directory in when prompted for
- # VendRoot.
- #
- perl Makefile.PL
-
- # Make the library modules and docs
- make
-
- # Run a rudimentary test to ensure the server and sockets
- # run on your system
- make test
-
- # Install the files and compile the link programs
- #
- make install
-
- ####
-
- At this point, you can follow the instructions that
- the configure program generates. If you installed
- MiniVend in another directory besides the current one,
- you will have to change directories to that directory
- before continuing.
-
- ####
-
- # Become superuser if you are an ISP or other organization that
- # will be running multiple catalogs. If you don't have root access,
- # don't worry about it.
- #
-
- # Make the demo catalog. You will be prompted for some initial
- # server-wide parameters, then the catalog-specific parameters.
- #
- bin/makecat simple
-
- # Start the MiniVend server
- #
- bin/start
-
-The new catalog installer is at:
-
- http://the.configured.host:7786/mv_admin
-
-NOTE: The MiniVend server must be running to use the installer.
- We attempt to make this automatic on Windows. 8-)
-
-That should be it. If you have problems, please do what is asked above,
-and pretty please reference the web site. And
-
- -- WHEN IN DOUBT, RE-START THE SERVER. It won't take but a few
- seconds, and changes in configurable options don't take effect
- until it is done. You may even change a page and not see the
- effect until the server is restarted.
-
-
-------------------------------------------------------------------
-
- S E T T I N G U P
- Y O U R C A T A L O G
-
-Setting up a MiniVend catalog can be quite complex, and that
-is why the documentation and demo were provided. They should
-be sufficient to get you started. Many hours have been spent
-in documenting the features of MiniVend, and thoughtful users
-should almost always find their answers there.
-
-Key things that people sometimes don't understand:
-
- -- The actual pages of the catalog are NOT in HTML document
- space. They are in the catalog directory of the catalog
- that is in question.
-
- -- When using the NEW page syntax, the default in this version,
- tags are interpreted in the order they appear on the page.
-
- -- It is strongly recommended that you move to the new syntax,
- as MiniVend 4.0 will be removing many of the old tags. If you
- have pages that will be too much trouble to move, use
- [compat][/compat] for now, but even that will go away.
-
- -- The first thing to do in setting up a custom MiniVend catalog
- is to define the database. Everything with MiniVend stems
- from the products database -- many of the custom features
- depend on the shipping, salestax, accessories, pricing,
- and other databases. Determine your data set first.
-
- -- The demo pages are there to be played with. With MiniVend
- 3.0, you can't stop the system simply by changing a page.
-
- -- Many of the configurable features of MiniVend are determined
- by the directives in catalog.cfg (or minivend.cfg in a standalone
- catalog).
-
- -- You don't need to do anything to pass variables from page to page.
- If you set it, MiniVend will remember it in the user session.
-
- -- WHEN IN DOUBT, RE-CONFIGURE THE CATALOG. It won't take but a few
- seconds, and changes to many of the configurable options don't
- take effect until it is done.
-
--- /dev/null
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
-Copying
-INSTALL
+LICENSE
MANIFEST
Makefile.PL
README
-README-win.txt
-README.OS
-UPGRADE
WHATSNEW
configure
-configure.bat
-configure.htm
-dist/README
-dist/README-win.txt
-dist/README.OS
-dist/WHATSNEW
-dist/admin/catalog.cfg
-dist/admin/etc/profiles
-dist/admin/mv_admin.cfg
-dist/admin/pages/cancel.html
-dist/admin/pages/failed.html
-dist/admin/pages/flypage.html
-dist/admin/pages/hintfile.html
-dist/admin/pages/include/address_form
-dist/admin/pages/include/base_dir_form
-dist/admin/pages/include/cat_dir_form
-dist/admin/pages/include/catname_form
-dist/admin/pages/include/summary
-dist/admin/pages/menu.html
-dist/admin/pages/reconfig_results.html
-dist/admin/pages/seefile.html
-dist/admin/pages/special/noproduct.html
-dist/admin/pages/special/notfound.html
-dist/admin/pages/special/violation.html
-dist/admin/products/locale.asc
-dist/admin/products/products.asc
-dist/admin/products/wizard.asc
-dist/admin/session/.empty
-dist/admin/subs.cfg
-dist/bin/buildtree
-dist/bin/check
-dist/bin/checkstat.sh
-dist/bin/compact
-dist/bin/dump
-dist/bin/expire
-dist/bin/expireall
-dist/bin/htpasswd.pl
-dist/bin/ifdef
-dist/bin/localize
-dist/bin/makecat
-dist/bin/minivend
-dist/bin/offline
-dist/bin/reconfig
-dist/bin/restart
-dist/bin/restart_inet
-dist/bin/restart_unix
-dist/bin/start
-dist/bin/start_inet
-dist/bin/start_unix
-dist/bin/stop
-dist/bin/tlink.exe
-dist/bin/update
-dist/configure
-dist/configure.pl
+dist/basic/catalog.cfg
+dist/basic/config/.empty
+dist/basic/config/additional_fields
+dist/basic/config/additional_help
+dist/basic/etc/log_transaction
+dist/basic/etc/mail_receipt
+dist/basic/etc/profiles.login
+dist/basic/etc/profiles.order
+dist/basic/etc/receipt.html
+dist/basic/etc/report
+dist/basic/html/.empty
+dist/basic/html/index.html
+dist/basic/images/00-0011.jpg
+dist/basic/images/00-0011a.png
+dist/basic/images/00-341.jpg
+dist/basic/images/00-342.jpg
+dist/basic/images/00-343.jpg
+dist/basic/images/19-203.jpg
+dist/basic/images/19-204.jpg
+dist/basic/images/21-221.jpg
+dist/basic/images/34-101.png
+dist/basic/images/chair_car.jpg
+dist/basic/images/clear.gif
+dist/basic/images/golconde.jpg
+dist/basic/images/illumined_pleasures.jpg
+dist/basic/images/irises.jpg
+dist/basic/images/lastsupp.jpg
+dist/basic/images/logo.png
+dist/basic/images/loose_hair.jpg
+dist/basic/images/magnificat.jpg
+dist/basic/images/my_gems.jpg
+dist/basic/images/okeefe1.jpg
+dist/basic/images/okeeffe6.jpg
+dist/basic/images/paul_harlequin.jpg
+dist/basic/images/pol1.jpg
+dist/basic/images/pol2.jpg
+dist/basic/images/smallamex.png
+dist/basic/images/smalldisc.png
+dist/basic/images/smallmc.png
+dist/basic/images/smallvisa.png
+dist/basic/images/tshirt.jpg
+dist/basic/images/two_fridas.jpg
+dist/basic/images/womanfan.jpg
+dist/basic/images/young_man.jpg
+dist/basic/pages/account.html
+dist/basic/pages/basket.html
+dist/basic/pages/browse.html
+dist/basic/pages/canceled.html
+dist/basic/pages/checkout.html
+dist/basic/pages/flypage.html
+dist/basic/pages/index.html
+dist/basic/pages/login.html
+dist/basic/pages/logout.html
+dist/basic/pages/menubar
+dist/basic/pages/new_account.html
+dist/basic/pages/privacy.html
+dist/basic/pages/query/check_orders.html
+dist/basic/pages/query/order_detail.html
+dist/basic/pages/results.html
+dist/basic/pages/srchform.html
+dist/basic/products/2ndDayAir.csv
+dist/basic/products/2ndDayAirAM.csv
+dist/basic/products/3DaySelect.csv
+dist/basic/products/3DaySelectRes.csv
+dist/basic/products/450.csv
+dist/basic/products/Ground.csv
+dist/basic/products/GroundComm.csv
+dist/basic/products/GroundRes.csv
+dist/basic/products/NextDayAir.csv
+dist/basic/products/NextDayAirSaver.csv
+dist/basic/products/country.txt
+dist/basic/products/inventory.txt
+dist/basic/products/minimate.asc
+dist/basic/products/mv_metadata.asc
+dist/basic/products/orderline.txt
+dist/basic/products/products.txt
+dist/basic/products/salestax.asc
+dist/basic/products/shipping.asc
+dist/basic/products/shipping.txt
+dist/basic/products/transactions.txt
+dist/basic/products/ups_zone.asc
+dist/basic/products/userdb.txt
+dist/basic/session/.empty
+dist/basic/special_pages/badsearch.html
+dist/basic/special_pages/canceled.html
+dist/basic/special_pages/cc_not_valid.html
+dist/basic/special_pages/confirmation.html
+dist/basic/special_pages/failed.html
+dist/basic/special_pages/interact.html
+dist/basic/special_pages/missing.html
+dist/basic/special_pages/needfield.html
+dist/basic/special_pages/nomatch.html
+dist/basic/special_pages/noproduct.html
+dist/basic/special_pages/notfound.html
+dist/basic/special_pages/order_security.html
+dist/basic/special_pages/reconfig.html
+dist/basic/special_pages/sec_faq.html
+dist/basic/special_pages/security.html
+dist/basic/special_pages/violation.html
+dist/basic/tmp/.empty
+dist/basic/upload/.empty
+dist/compat/body
+dist/compat/buttonbar
+dist/compat/form_mail.cfg
+dist/compat/help
+dist/compat/random_rotate
dist/error.log
-dist/etc/mvconf.cmt
-dist/etc/non_root_files
-dist/flycat.cfg
-dist/flycat/README.flycat
-dist/flycat/catalog.cfg
-dist/flycat/config/additional_fields
-dist/flycat/etc/order.number
-dist/flycat/etc/receipt.html
-dist/flycat/etc/report
-dist/flycat/etc/report.html
-dist/flycat/etc/session.lock
-dist/flycat/etc/vendor.number
-dist/flycat/html/index.html
-dist/flycat/images/00-0011.jpg
-dist/flycat/images/artsmall.gif
-dist/flycat/images/artstore.gif
-dist/flycat/images/bg.gif
-dist/flycat/images/ordernow.gif
-dist/flycat/images/redball.gif
-dist/flycat/images/smallamex.gif
-dist/flycat/images/smalldisc.gif
-dist/flycat/images/smallmc.gif
-dist/flycat/images/smallvisa.gif
-dist/flycat/images/tshirt.jpg
-dist/flycat/orders/test/order.number
-dist/flycat/pages/canceled.html
-dist/flycat/pages/cartcfg/.access
-dist/flycat/pages/cartcfg/buttonbar
-dist/flycat/pages/cartcfg/editcart.html
-dist/flycat/pages/cartcfg/enable_edit.html
-dist/flycat/pages/cartcfg/export_userdb.html
-dist/flycat/pages/cartcfg/export_vendor.html
-dist/flycat/pages/cartcfg/master_edit.form
-dist/flycat/pages/cartcfg/master_edit.html
-dist/flycat/pages/cartcfg/newcart.html
-dist/flycat/pages/export.html
-dist/flycat/pages/help.html
-dist/flycat/pages/new_account.html
-dist/flycat/pages/oops.html
-dist/flycat/pages/ord/basket.html
-dist/flycat/pages/ord/checkout.html
-dist/flycat/pages/query/check_orders.html
-dist/flycat/pages/redirect.html
-dist/flycat/pages/special/badsearch.html
-dist/flycat/pages/special/canceled.html
-dist/flycat/pages/special/enroll_failed.html
-dist/flycat/pages/special/enroll_thankyou.html
-dist/flycat/pages/special/failed.html
-dist/flycat/pages/special/interact.html
-dist/flycat/pages/special/missing.html
-dist/flycat/pages/special/needfield.html
-dist/flycat/pages/special/nomatch.html
-dist/flycat/pages/special/noproduct.html
-dist/flycat/pages/special/notfound.html
-dist/flycat/pages/special/reconfig.html
-dist/flycat/pages/special/sec_faq.html
-dist/flycat/pages/special/security.html
-dist/flycat/pages/special/violation.html
-dist/flycat/products/country.asc
-dist/flycat/products/locale.asc
-dist/flycat/products/products.txt
-dist/flycat/products/salestax.asc
-dist/flycat/products/shipping.asc
-dist/flycat/products/transactions.raw
-dist/flycat/products/transactions.txt
-dist/flycat/products/userdb.asc
-dist/flycat/products/vendor.txt
-dist/flycat/session/.empty
-dist/flycat/tmp/.empty
-dist/form_mail.cfg
+dist/etc/.empty
dist/locale.error
-dist/manifest
dist/minivend.cfg.dist
dist/simple/catalog.cfg
dist/simple/config/.empty
dist/simple/config/additional_fields
dist/simple/config/additional_help
-dist/simple/etc/order.profiles
+dist/simple/config/blue1/copyright
+dist/simple/config/blue1/leftside
+dist/simple/config/blue1/logobar
+dist/simple/config/blue1/menubar
+dist/simple/config/blue1/menubottom
+dist/simple/config/blue1/no_right
+dist/simple/config/blue1/only_logo
+dist/simple/config/blue1/rightside
+dist/simple/config/brown1/copyright
+dist/simple/config/brown1/leftside
+dist/simple/config/brown1/logobar
+dist/simple/config/brown1/menubar
+dist/simple/config/brown1/menubottom
+dist/simple/config/brown1/no_right
+dist/simple/config/brown1/only_logo
+dist/simple/config/brown1/rightside
+dist/simple/config/precopy_commands
+dist/simple/config/yellow1/copyright
+dist/simple/config/yellow1/leftside
+dist/simple/config/yellow1/logobar
+dist/simple/config/yellow1/menubar
+dist/simple/config/yellow1/menubottom
+dist/simple/config/yellow1/no_right
+dist/simple/config/yellow1/only_logo
+dist/simple/config/yellow1/rightside
+dist/simple/etc/log_transaction
+dist/simple/etc/mail_receipt
+dist/simple/etc/profiles.login
+dist/simple/etc/profiles.order
dist/simple/etc/receipt.html
dist/simple/etc/report
-dist/simple/etc/search.profiles
+dist/simple/html/.empty
dist/simple/html/index.html
-dist/simple/images/00-0011.jpg
-dist/simple/images/00-0011a.gif
-dist/simple/images/00-341.jpg
-dist/simple/images/00-342.jpg
-dist/simple/images/00-343.jpg
-dist/simple/images/19-203.jpg
-dist/simple/images/19-204.jpg
-dist/simple/images/21-221.jpg
-dist/simple/images/34-101.gif
-dist/simple/images/artsmall.gif
-dist/simple/images/artstore.gif
-dist/simple/images/bg.gif
-dist/simple/images/blue_pap.gif
-dist/simple/images/coolad1.gif
-dist/simple/images/coolbits.gif
-dist/simple/images/download.gif
-dist/simple/images/mini.gif
-dist/simple/images/mvlogo.gif
-dist/simple/images/mvlogo_dark.gif
-dist/simple/images/new.gif
-dist/simple/images/perl_id_313c.gif
-dist/simple/images/staircase.jpg
-dist/simple/images/redball.gif
-dist/simple/images/smallamex.gif
-dist/simple/images/smalldisc.gif
-dist/simple/images/smallmc.gif
-dist/simple/images/smallvisa.gif
-dist/simple/images/tshirt.jpg
-dist/simple/images/web_srch.gif
+dist/simple/images/blue1/cart.png
+dist/simple/images/blue1/go.png
+dist/simple/images/blue1/logo.png
+dist/simple/images/blue1/menu.png
+dist/simple/images/blue1/submit.png
+dist/simple/images/brown1/cart.png
+dist/simple/images/brown1/go.png
+dist/simple/images/brown1/logo.png
+dist/simple/images/brown1/menu.png
+dist/simple/images/brown1/submit.png
+dist/simple/images/clear.gif
+dist/simple/images/download.png
+dist/simple/images/items/00-0011.jpg
+dist/simple/images/items/00-0011a.png
+dist/simple/images/items/00-341.jpg
+dist/simple/images/items/00-342.jpg
+dist/simple/images/items/00-343.jpg
+dist/simple/images/items/19-203.jpg
+dist/simple/images/items/19-204.jpg
+dist/simple/images/items/21-221.jpg
+dist/simple/images/items/34-101.png
+dist/simple/images/items/chair_car.jpg
+dist/simple/images/items/golconde.jpg
+dist/simple/images/items/illumined_pleasures.jpg
+dist/simple/images/items/irises.jpg
+dist/simple/images/items/lastsupp.jpg
+dist/simple/images/items/loose_hair.jpg
+dist/simple/images/items/magnificat.jpg
+dist/simple/images/items/my_gems.jpg
+dist/simple/images/items/okeefe1.jpg
+dist/simple/images/items/okeeffe6.jpg
+dist/simple/images/items/paul_harlequin.jpg
+dist/simple/images/items/pol1.jpg
+dist/simple/images/items/pol2.jpg
+dist/simple/images/items/tshirt.jpg
+dist/simple/images/items/two_fridas.jpg
+dist/simple/images/items/womanfan.jpg
+dist/simple/images/items/young_man.jpg
+dist/simple/images/mvlogo.png
+dist/simple/images/mvlogo_dark.png
+dist/simple/images/new.png
+dist/simple/images/perl_id_313c.png
+dist/simple/images/smallamex.png
+dist/simple/images/smalldisc.png
+dist/simple/images/smallmc.png
+dist/simple/images/smallvisa.png
+dist/simple/images/yellow1/cart.png
+dist/simple/images/yellow1/go.png
+dist/simple/images/yellow1/logo.png
+dist/simple/images/yellow1/menu.png
+dist/simple/images/yellow1/submit.png
+dist/simple/mysql/area.mysql
+dist/simple/mysql/cat.mysql
+dist/simple/mysql/country.mysql
+dist/simple/mysql/inventory.mysql
+dist/simple/mysql/orderline.mysql
+dist/simple/mysql/pricing.mysql
+dist/simple/mysql/products.mysql
+dist/simple/mysql/shipping.mysql
+dist/simple/mysql/transactions.mysql
+dist/simple/mysql/userdb.mysql
+dist/simple/orders/.empty
dist/simple/pages/about.html
+dist/simple/pages/account.html
+dist/simple/pages/action/get_password.html
dist/simple/pages/browse.html
dist/simple/pages/browse1.html
dist/simple/pages/canceled.html
-dist/simple/pages/copyright
+dist/simple/pages/deliver.html
+dist/simple/pages/examples/test_banner.html
dist/simple/pages/feedback.html
dist/simple/pages/flypage.html
-dist/simple/pages/frames.html
-dist/simple/pages/frames/bottom.html
-dist/simple/pages/frames/left.html
-dist/simple/pages/frames/top.html
-dist/simple/pages/help/sec_faq.html
-dist/simple/pages/help/security.html
dist/simple/pages/index.html
dist/simple/pages/last_search.html
-dist/simple/pages/leftside
-dist/simple/pages/logobar
-dist/simple/pages/menubar
-dist/simple/pages/menubottom
-dist/simple/pages/mvasp.html
+dist/simple/pages/login.html
+dist/simple/pages/logout.html
+dist/simple/pages/multi/b_address.html
+dist/simple/pages/multi/basket.html
+dist/simple/pages/multi/checkout.html
+dist/simple/pages/multi/final.html
+dist/simple/pages/multi/nobasket.html
+dist/simple/pages/multi/shipping.html
dist/simple/pages/new_account.html
dist/simple/pages/news.html
-dist/simple/pages/no_right
-dist/simple/pages/noframes.html
+dist/simple/pages/no_cookie.html
dist/simple/pages/ord/basket.html
dist/simple/pages/ord/checkout.html
dist/simple/pages/ord/nobasket.html
dist/simple/pages/privacy.html
dist/simple/pages/quantity.html
-dist/simple/pages/query/.access
dist/simple/pages/query/check_orders.html
-dist/simple/pages/rand1.html
-dist/simple/pages/rand2.html
-dist/simple/pages/rand3.html
-dist/simple/pages/rand4.html
-dist/simple/pages/rand5.html
+dist/simple/pages/query/order_detail.html
dist/simple/pages/reconfig/.access
dist/simple/pages/reconfig/.access_gate
dist/simple/pages/reconfig/do_download.html
dist/simple/pages/reconfig/reconfig.html
dist/simple/pages/reconfig/upload.html
dist/simple/pages/results.html
-dist/simple/pages/rightside
-dist/simple/pages/rotate1.html
-dist/simple/pages/rotate2.html
-dist/simple/pages/rotate3.html
-dist/simple/pages/rotate4.html
-dist/simple/pages/special/badsearch.html
-dist/simple/pages/special/canceled.html
-dist/simple/pages/special/cc_not_valid.html
-dist/simple/pages/special/confirmation.html
-dist/simple/pages/special/failed.html
dist/simple/pages/special/feedback.html
-dist/simple/pages/special/interact.html
-dist/simple/pages/special/missing.html
dist/simple/pages/special/needfield.html
-dist/simple/pages/special/nomatch.html
-dist/simple/pages/special/noproduct.html
-dist/simple/pages/special/notfound.html
-dist/simple/pages/special/order_security.html
-dist/simple/pages/special/reconfig.html
-dist/simple/pages/special/sec_faq.html
-dist/simple/pages/special/security.html
-dist/simple/pages/special/violation.html
+dist/simple/pages/splash.html
dist/simple/pages/srchform.html
dist/simple/pages/view_page.html
+dist/simple/pgsql/area.pgsql
+dist/simple/pgsql/cat.pgsql
+dist/simple/pgsql/country.pgsql
+dist/simple/pgsql/inventory.pgsql
+dist/simple/pgsql/orderline.pgsql
+dist/simple/pgsql/pricing.pgsql
+dist/simple/pgsql/products.pgsql
+dist/simple/pgsql/shipping.pgsql
+dist/simple/pgsql/transactions.pgsql
+dist/simple/pgsql/userdb.pgsql
dist/simple/products/2ndDayAir.csv
dist/simple/products/2ndDayAirAM.csv
dist/simple/products/3DaySelect.csv
+dist/simple/products/3DaySelectRes.csv
dist/simple/products/450.csv
dist/simple/products/Ground.csv
dist/simple/products/GroundComm.csv
dist/simple/products/GroundRes.csv
dist/simple/products/NextDayAir.csv
dist/simple/products/NextDayAirSaver.csv
-dist/simple/products/accessories.asc
-dist/simple/products/country.asc
-dist/simple/products/inventory.asc
-dist/simple/products/locale.asc
-dist/simple/products/pricing.asc
-dist/simple/products/products.asc
+dist/simple/products/area.txt
+dist/simple/products/banner.txt
+dist/simple/products/cat.txt
+dist/simple/products/country.txt
+dist/simple/products/inventory.txt
+dist/simple/products/locale.txt
+dist/simple/products/minimate.asc
+dist/simple/products/mv_metadata.asc
+dist/simple/products/orderline.txt
+dist/simple/products/pricing.txt
+dist/simple/products/products.txt
dist/simple/products/salestax.asc
dist/simple/products/shipping.asc
-dist/simple/products/transactions.raw
+dist/simple/products/shipping.txt
dist/simple/products/transactions.txt
dist/simple/products/ups_zone.asc
-dist/simple/products/userdb.asc
-dist/simple/reconfig
-dist/simple/report_problem
+dist/simple/products/userdb.txt
dist/simple/session/.empty
-dist/simple/tmp/PageCache/.empty
-dist/simple/tmp/SearchCache/.empty
+dist/simple/special_pages/badsearch.html
+dist/simple/special_pages/canceled.html
+dist/simple/special_pages/cc_not_valid.html
+dist/simple/special_pages/confirmation.html
+dist/simple/special_pages/failed.html
+dist/simple/special_pages/interact.html
+dist/simple/special_pages/missing.html
+dist/simple/special_pages/needfield.html
+dist/simple/special_pages/nomatch.html
+dist/simple/special_pages/noproduct.html
+dist/simple/special_pages/notfound.html
+dist/simple/special_pages/order_security.html
+dist/simple/special_pages/reconfig.html
+dist/simple/special_pages/sec_faq.html
+dist/simple/special_pages/security.html
+dist/simple/special_pages/violation.html
+dist/simple/tmp/.empty
+dist/simple/upload/.empty
dist/src/compile.pl
dist/src/config.h.in
dist/src/configure
-dist/src/configure.in
dist/src/mvctl.c
dist/src/syscfg.in
dist/src/testcgi
dist/src/vlink.c
dist/src/vlink.pl
dist/usertag/bar_button
-dist/usertag/db_count
dist/usertag/db_date
dist/usertag/email
+dist/usertag/email_raw
dist/usertag/loc
+dist/usertag/rand
+dist/usertag/reconfig
+dist/usertag/reconfig_time
+dist/usertag/reconfig_wait
dist/usertag/summary
+dist/usertag/title_bar
dist/usertag/var
-doc/bullet.gif
-doc/frtoc.html
-doc/intro.html
-doc/minivend.html
-doc/nav.html
-doc/toc.html
+eg/check
+eg/checkstat.sh
+eg/compact
+eg/ifdef
extra/Business/UPS.pm
extra/File/CounterFile.pm
extra/File/Spec.pm
extra/URI/URL.pm
lib/Vend/Cart.pm
lib/Vend/Config.pm
+lib/Vend/Control.pm
lib/Vend/Data.pm
lib/Vend/DbSearch.pm
+lib/Vend/Document.pm
lib/Vend/ECML.pm
-lib/Vend/FlyCat.pm
+lib/Vend/Error.pm
+lib/Vend/External.pm
lib/Vend/Glimpse.pm
-lib/Vend/Http.pm
lib/Vend/Imagemap.pm
lib/Vend/Interpolate.pm
lib/Vend/MakeCat.pm
+lib/Vend/Misc/Static.pm
lib/Vend/Order.pm
-lib/Vend/PageBuild.pm
+lib/Vend/Page.pm
lib/Vend/Parse.pm
lib/Vend/Parser.pm
lib/Vend/Scan.pm
lib/Vend/Session.pm
lib/Vend/SessionDB.pm
lib/Vend/SessionFile.pm
+lib/Vend/Table/Common.pm
lib/Vend/Table/DBI.pm
lib/Vend/Table/DB_File.pm
-lib/Vend/Table/DummyDB.pm
lib/Vend/Table/GDBM.pm
-lib/Vend/Table/Import.pm
lib/Vend/Table/InMemory.pm
-lib/Vend/Table/Quoted.pm
-lib/Vend/Table/Update.pm
lib/Vend/Tagref.pm
+lib/Vend/Tags.pm
lib/Vend/TextSearch.pm
lib/Vend/UserDB.pm
lib/Vend/Util.pm
-lib/Vend/ValidCC.pm
-mvlogo.gif
+lib/perllocal.pod
+pod/mvdocs.pod
+pod/mvfaq.pod
+scripts/compile_link.PL
+scripts/config_prog.PL
+scripts/configdump.PL
+scripts/dump.PL
+scripts/expire.PL
+scripts/expireall.PL
+scripts/localize.PL
+scripts/makecat.PL
+scripts/minivend.PL
+scripts/offline.PL
+scripts/restart.PL
+scripts/update.PL
test.pl
-win/POSIX.pm
win/minivend.pif
+win/setup.bat
+win/tlink.exe
use File::Copy;
use File::Path;
use File::Basename;
+use Data::Dumper;
use Cwd;
-require 5.004;
+require 5.005;
use strict;
my $Prompt_sub;
my @mods_to_get;
my $Lock_troubles;
-my $Windows;
-$VERSION = '3.15';
+$VERSION = '4.00';
# See if we have the CPAN module
my $Cpan = 0;
my $CpanInit;
eval {
- die if $\ f =~ /win32/i;
+ die if $^O =~ /win32/i;
unless( -f ".cpan.tried") {
open TMP, ">.cpan.tried" and close TMP;
require CPAN::Config;
$Cpan = 1;
}
-my (@extra_lib_dirs);
-my (@extra_lib_files);
-
+my @extra_lib_dirs;
+my @extra_lib_files;
+my @chown_files = qw/
+ error.log
+ etc
+ minivend.cfg
+ /;
# Now we can use the libraries
use lib './lib';
};
}
-my $ActiveState;
-
-if($Config{osname} eq 'solaris') {
- eval { require 5.004 or require File::Lock };
- if($@) {
- push @mods_to_get, "File::Lock";
- $Lock_troubles = 1;
- }
-}
-elsif($Config{osname} =~ /win32/i) {
- $Windows = 1;
-
- eval { require 5.004; };
- if($@) {
- print <<EOF;
-Sorry -- this version of MiniVend for Windows requires
-Perl 5.004 or higher -- the standard port of Perl. The
-ActiveState 5.003 version will not run MiniVend, but
-ActiveState 5.005 should work fine.
-
-See http://www.perl.com/ for information on how to get
-the standard Perl distribution.
-EOF
- }
- $ActiveState = 1;
- eval { require 5.005 };
- if (! $@ and $Config{archname} =~ /object/) {
- $ActiveState = 1;
- }
- if($ActiveState) {
- eval {
- require DB_File;
- };
- push(@mods_to_get, 'DB_File') if $@;
- eval {
- require MIME::Base64;
- };
- push(@mods_to_get, 'MIME-Base64') if $@;
- eval {
- require URI::URL;
- };
- push(@mods_to_get, 'libwww') if $@;
- }
-
-}
-elsif( $Config{osname} =~ /linux/i and
- $Config{d_gnulibc} eq 'define' and
- $Config{POSIX_cflags} !~ /STRUCT_TM_HASZONE/ and
- ! defined $ENV{MINIVEND_BADPOSIX})
-{
- if (! -f ".linux.warned") {
- system "touch .linux.warned";
- print <<EOF;
-
-This looks like a broken version of Perl for Linux, as often
-happens with improperly built GLIBC Perls. RedHat Linux 5.0 has
-this problem. If your Perl is built properly and does not dump
-core when calling POSIX::strftime, then set the environment
-variable MINIVEND_BADPOSIX to 0.
-
-If it is built improperly, you will soon find out, for this
-installation will stop. If it does, then you can re-run and
-we will limp along as best we can, though it is recommended
-that you update your Perl.
-
-EOF
- print "Trying strftime, if we stop re-run configure.\n";
- require POSIX;
- POSIX::strftime("%c", 0,0,0,1,1,97);
- print "\nYour perl appears to be OK. Good.\n";
- }
- elsif( -f 'core') {
- unlink 'core';
- system "echo REMOVE_THIS_FILE_IF_YOU_UPDATE_PERL > dist/.linux.badposix";
- print <<EOF;
-Compensating for badly-built GLIBC Perl. Please update Perl as soon as
-possible. Once you do so, you can remove the file "linux.badposix".
-
-EOF
- $ENV{MINIVEND_BADPOSIX} = 1;
- }
+if($^O =~ /win32/i) {
+ die "Windows is only supported for a binary distribution.\n";
}
sub compare_file {
or die "Couldn't make directory $mkdir: $!\n";
}
- if ($Windows) {
- $perms = 0777;
- }
- elsif (! -f $srcfile) {
+ if (! -f $srcfile) {
die "Source file $srcfile missing.\n";
}
else {
$perms = (stat(_))[2] & 0777;
}
- if( ! $Windows and -f $targfile and ! compare_file($srcfile, $targfile) ) {
+ if( -f $targfile and ! compare_file($srcfile, $targfile) ) {
open (GETVER, $targfile)
or die "Couldn't read $targfile for version update: $!\n";
while(<GETVER>) {
MiniVend V$VERSION
- Copyright 1996-1999 by Michael J. Heins <mikeh\@minivend.com>
+ Copyright 1996-2000 by Michael J. Heins <mikeh\@minivend.com>
MiniVend is free under the terms of the GNU General Public License.
}
sub my_prompt {
+ return $_[1] if $MV::Default{force};
return &$Prompt_sub(@_)
if defined $Prompt_sub;
my($pr) = shift || '? ';
$ans ? $ans : $def;
}
-sub active_get {
- my (@mods) = @_;
- for(@mods) {
- system "start ppm.pl install $_";
- }
-}
-
sub cpan_get {
my($module, $libdir, $prompt) = @_;
- return active_get($module) if $ActiveState;
print <<EOF unless defined $CpanInit;
Since you have the CPAN module installed and initialized,
}
sub initialize {
- my %X=();
- $X{INSTALLARCHLIB} = "/home/minivend/lib";
- $X{INSTALLPRIVLIB} = "/home/minivend/lib";
- $X{INSTALLMAN1DIR} = "/home/minivend/doc";
- $X{INSTALLMAN3DIR} = "/home/minivend/doc";
+ my %X;
$X{INSTALLDIRS} = "perl";
-
- my $install = 0;
- my $realdir;
-
- for(@ARGV) {
- return \%X if /^nocopy$/;
- ($install = 1, next) if /^install$/;
- next unless $install;
- $realdir = $_;
- $realdir =~ s:/lib$::;
+ $X{EXE_FILES} = [qw(
+ scripts/compile_link
+ scripts/config_prog
+ scripts/configdump
+ scripts/dump
+ scripts/expire
+ scripts/expireall
+ scripts/localize
+ scripts/makecat
+ scripts/minivend
+ scripts/offline
+ scripts/restart
+ scripts/update
+ )];
+ $X{PL_FILES} = {qw(
+ scripts/compile_link.PL scripts/compile_link
+ scripts/config_prog.PL scripts/config_prog
+ scripts/configdump.PL scripts/configdump
+ scripts/dump.PL scripts/dump
+ scripts/expire.PL scripts/expire
+ scripts/expireall.PL scripts/expireall
+ scripts/localize.PL scripts/localize
+ scripts/makecat.PL scripts/makecat
+ scripts/minivend.PL scripts/minivend
+ scripts/offline.PL scripts/offline
+ scripts/restart.PL scripts/restart
+ scripts/update.PL scripts/update
+ )};
+
+ if(! $MV::Default{force} and ! $MV::Default{PREFIX}) {
+ if($> == 0) {
+ $MV::Default{PREFIX} = '/usr/local/minivend';
+ }
+ else {
+ $MV::Default{PREFIX} = "$ENV{HOME}/mvend";
+ }
+ }
+ my $uid;
+ if($> == 0 and ! $MV::Default{MINIVEND_USER}) {
+ $uid = my_prompt(
+ qq{MiniVend cannot be run as root. Which user should run MiniVend? },
+ 'minivend',
+ );
+ open(UID, ">_uid")
+ or die "Can't write uid file: $!\n";
+ print UID "$uid";
+ close UID;
+ }
+ else {
+ eval {
+ $uid = scalar getpwuid($>);
+ };
+ }
+ return %X if $MV::Default{nocopy};
+ if($uid) {
+ open(UID, ">_uid")
+ or die "Can't write uid file: $!\n";
+ print UID "$uid";
+ close UID;
+ }
+ for(@Config{
+ qw/
+ archlib
+ archlibexp
+ privlib
+ privlibexp
+ sitearch
+ sitearchexp
+ sitelib
+ sitelibexp
+ /
+ })
+ {
+ die "Can't install in Perl library!\n" if $MV::Default{PREFIX} eq $_;
}
- unless ($install) {
+ my $realdir;
- #exec("perl install.pl") if $Windows;
+ if(! $MV::Default{final}) {
©right_prompt();
- my @mvdir = (
- "$ENV{HOME}/mvend",
- "/home/minivend",
- "/usr/local/lib/minivend",
- "$ENV{HOME}/minivend",
- );
- if(defined $Lock_troubles) {
- print <<EOF;
-Since you are on Solaris, you need to update to Perl 5.004.
-Sorry.
-EOF
- }
- my $mvdir;
-
- for $mvdir (@mvdir) {
- if (-f "$mvdir/minivend.cfg") {
- $realdir = $mvdir if -w $mvdir;
- last;
- }
- }
- $realdir ||= $mvdir[0];
- $realdir=my_prompt("Where is your MiniVend to be installed? ",$realdir);
+ $realdir = my_prompt(
+ "Where is your MiniVend to be installed? ",
+ $MV::Default{PREFIX},
+ );
print "\n";
$realdir =~ s:[\\/]\s*$::;
- $X{INSTALLARCHLIB} = "$realdir/lib";
- $X{INSTALLPRIVLIB} = "$realdir/lib";
- $X{INSTALLMAN1DIR} = "$realdir/doc";
- $X{INSTALLMAN3DIR} = "$realdir/doc";
- $X{INSTALLDIRS} = "perl";
-
- if($Windows) {
- ACTIVEGET: {
- last ACTIVEGET unless @mods_to_get;
- unless( -f "_active_tried" or ! $ActiveState) {
- print <<EOF;
-You appear to be running the ActiveState Perl port and are missing the
-following modules:
-
- @mods_to_get
-
-These modules are very nice to have and we would like to try and get
-them. (You can still get MiniVend going without them, but it isn't
-quite as slick.)
-
-We can try and get them with the Perl Package Manager (ppm.pl). If
-you are connected to the Internet then this might well work. (Proxy servers
-probably will not unless you have used them before with the PPM.)
-
-You will see some DOS boxes flash up on the screen. This is normal
-and will not hurt anything. If one fails, and you wait awhile, then
-close the window manually.
-
-If we can't get the modules on the first try we will not try again
-as long as the file "_active_tried" exists.
+ }
+ else {
+ $realdir = $MV::Default{final};
+ }
-EOF
- my $ans = my_prompt("Try and get modules? ", 'yes');
- last ACTIVEGET unless $ans =~ /^\s*y/i;
- open TMP, ">_active_tried" and close TMP;
- active_get(@mods_to_get);
- }
+ $X{INSTALLSCRIPT} = "$realdir/bin";
+ $X{INSTALLBIN} = "$realdir/bin";
+ $X{INSTALLARCHLIB} = "$realdir";
+ $X{INSTALLPRIVLIB} = "$realdir/lib";
+ $X{INSTALLMAN1DIR} = "$realdir/doc";
+ $X{INSTALLMAN3DIR} = "$realdir/doc";
+
+ my @re_dir = qw( simple/download );
+ my @re_copy = qw(
+ ../pod/mvdocs.pod simple/download/mvdocs.pod
+ ../pod/mvfaq.pod simple/download/mvfaq.pod
+ );
+
+ if($MV::Default{final}) {
+ $\17 = 0;
+ for(glob "_*") {
+ File::Copy::copy($_, $realdir);
+ }
+ open(MANI, "MANIFEST")
+ or die "No MANIFEST?\n";
+ my (@files) = <MANI>;
+ close MANI;
+ @files = grep m:^dist/:, @files;
+ chomp(@files);
+ @files = map { s:^dist/::; $_} @files;
+
+ # New install_file routine
+ chdir 'dist';
+ for (@re_dir) {
+ mkdir $_, 0777;
+ }
+ while ($_ = shift @re_copy ) {
+ my $from = $_;
+ my $to = shift @re_copy;
+ push @files, $to;
+ File::Copy::copy($from, $to);
+ }
+ for (@files) {
+ install_file('.', $realdir, $_);
+ }
+ if(-f "$realdir/_uid" and $> == 0) {
+ open(UID, "$realdir/_uid")
+ or die "Can't open uid file: $!\n";
+ my $uid = <UID>;
+ close UID;
+ $MV::Default{MINIVEND_UID} = getpwnam($uid);
+ $MV::Default{MINIVEND_GID} = getgrnam($uid);
+ for(@chown_files) {
+ chown $MV::Default{MINIVEND_UID},
+ $MV::Default{MINIVEND_GID},
+ "$realdir/$_";
}
- my $dosdir = $realdir;
- $dosdir =~ s:/:\\:g;
- open(WINBAT, ">configure2.bat")
- or die "create configure2.bat: $!\n";
- print WINBAT <<EOF;
-$Config{perlpath} Makefile.PL install $realdir\r
-start configure.htm
-cd $dosdir
-$Config{perlpath} bin/minivend -serve
-EOF
- close WINBAT;
- exit;
}
-
- return \%X;
+ exit;
}
- die "Shouldn't get here unless a 'make install'!?!\n"
- unless $install;
# Do the extra library checks
eval {
require IniConf;
};
- if ($Windows or $@) {
+ if ($@) {
push @extra_lib_files, 'IniConf.pm';
}
+
eval {
require HTML::Entities;
};
push @extra_lib_files, 'HTML/Entities.pm';
}
-
eval {
require Business::UPS;
};
require Storable;
};
unless ($@) {
- my $def = 'n';
+ my $def = 'y';
print <<EOF;
You appear to have Raphael Manfredi's Storable module installed.
MiniVend server instance.
EOF
- if($ENV{MINIVEND_STORABLE_DB} || -f "$realdir/_db_storable") {
+ if($ENV{MINIVEND_STORABLE_DB} || -f "$realdir/_db_storable" || -f "_db_storable") {
$def = 'y';
}
- elsif($ENV{MINIVEND_STORABLE} || -f "$realdir/_session_storable") {
+ elsif($ENV{MINIVEND_STORABLE} || -f "$realdir/_session_storable" || -f "_session_storable") {
$def = 's';
}
my $ask = my_prompt("Use Storable module? (y/n/s) ", $def);
if ($ask =~ /^\s*(y|d)/i) {
- open(TSTORABLE, ">$realdir/_db_storable")
- or die "creat $realdir/_db_storable: $!\n";
+ open(TSTORABLE, ">_db_storable")
+ or die "creat _db_storable: $!\n";
print TSTORABLE "REMOVE THIS FILE TO STOP USING Storable\n";
close TSTORABLE;
}
if ($ask =~ /^\s*(y|s)/i) {
- open(TSTORABLE, ">$realdir/_session_storable")
- or die "creat $realdir/_session_storable: $!\n";
+ open(TSTORABLE, ">_session_storable")
+ or die "creat _session_storable: $!\n";
print TSTORABLE "REMOVE THIS FILE TO STOP USING Storable\n";
close TSTORABLE;
}
}
+ MODCHECK: {
-MODCHECK: {
-
- last MODCHECK unless $Cpan;
- last MODCHECK if $Windows;
- eval {
- require MD5;
- };
- push(@mods_to_get, 'MD5') if $@ and $Cpan;
- eval {
- require SQL::Statement;
- };
- push(@mods_to_get, 'SQL::Statement') if $@ and $Cpan;
- eval {
- require MIME::Base64;
- };
- push(@mods_to_get, 'MIME::Base64') if $@ and $Cpan;
- eval {
- require URI::URL;
- };
- push(@mods_to_get, 'URI::URL') if $@ and $Cpan;
-
-}
-
-
-my $Upgrade;
-UPGRADE: {
- if( -f "$realdir/minivend.cfg" and
- (-f "$realdir/minivend.pl" or -f "$realdir/bin/minivend"))
- {
- my $msg;
- print <<EOF unless defined $Upgrade;
-This looks like an upgrade.
-
-Your minivend.cfg file will be saved, but other files will
-be overwritten and MAY BE REMOVED WITHOUT WARNING.
-Any custom templates that are not in the 'simple'
-or 'sample' directories will be saved.
-
-These lines will be written to your minivend.cfg if
-they are not already present:
-
- #include admin/mv_admin.cfg
- Variable MV_NO_CRYPT 1
- AdminUser minivend:nevairbe
-
-If you wish to escape to the shell and save some files
-first, enter ! or 'sh' at the prompt. (Of course when
-you 'exit' from the shell, you will return to this
-configuration.)
-
-If you reply 'quit', or 'no' at the prompt, this
-installation will stop.
-
-EOF
- $Upgrade = 1;
- $msg = "Continue? ";
- my $ask = my_prompt($msg);
- exit 1 if $ask =~ /^\s*[qn]/i;
- if($ask =~ /^\s*sh/ or $ask =~/^\s*!\s*$/) {
- system "$ENV{SHELL}";
- if($?) {
- die "\nShell escape failed.\n";
- }
- redo UPGRADE;
- }
- elsif($ask =~ s/^\s*!(.*)/$1/s) {
- system "$ask";
- redo UPGRADE;
- }
-
- print <<EOF;
-
-You may wish to inspect minivend.cfg.dist for new values; in
-particular if you want to use the newer demo you might need some
-UserTag entries defined there.
-
-Check the UPGRADE file for changes you might have to make if
-updating from an earlier version of MiniVend.
-EOF
+ last MODCHECK unless $Cpan;
+ eval {
+ require MD5;
+ };
+ push(@mods_to_get, 'MD5') if $@ and $Cpan;
+ eval {
+ require SQL::Statement;
+ };
+ push(@mods_to_get, 'SQL::Statement') if $@ and $Cpan;
+ eval {
+ require MIME::Base64;
+ };
+ push(@mods_to_get, 'MIME::Base64') if $@ and $Cpan;
+ eval {
+ require URI::URL;
+ };
+ push(@mods_to_get, 'URI::URL') if $@ and $Cpan;
}
-}
COPYEXTRA: {
- my $cpdir = $Windows ? '.' : $realdir;
+ my $cpdir = '.';
mkdir $cpdir, 0777 unless -d $cpdir;
mkdir "$cpdir/lib", 0777 unless -d "$cpdir/lib";
for(@extra_lib_dirs) {
next if -d "$cpdir/lib/$_";
mkdir "$cpdir/lib/$_", 0777 or die "mkdir $cpdir/lib/$_: $!\n";
}
-
for(@extra_lib_files) {
- File::Copy::copy ("extra/$_", "$cpdir/lib/$_")
+ File::Copy::copy ("extra/$_", "lib/$_")
or die "Couldn't copy $_: $!\n";
}
}
- my @files;
- my @winfiles;
- my @extra_doc_files;
-
- # Save on space
- opendir(DOCDIR, 'doc') or die "opendir doc: $!\n";
- @files = grep /\.(html?|gif|jpe?g)$/i, readdir DOCDIR;
- closedir DOCDIR;
- for(@files) {
- File::Copy::copy("doc/$_", 'dist/simple/html');
- push @extra_doc_files, "dist/simple/html/$_";
- }
-
- my $origdir = cwd();
-
- open(MANIFILE, 'MANIFEST')
- or die "Couldn't open MANIFEST: $!\n";
- @files = <MANIFILE>;
- close MANIFILE;
- chomp(@files);
- for(@extra_lib_files) {
- push @files, "lib/$_";
- }
- for(@extra_doc_files) {
- push @files, $_;
- }
- $\17 = 0;
- if($Windows) {
- my $dll_source = "win/cygwin.dll";
- my $dll_dir;
- for( $ENV{SYSTEMROOT}, qw! c:/windows d:/windows e:/windows f:/windows !) {
- -d $_ and $dll_dir = $_;
- }
- $dll_dir .= '/system';
- $dll_dir =~ s:\\:/:g;
- my $dll_location = $dll_dir . "/cygwin.dll";
- DLL: {
- unless(-f $dll_location) {
- if (-f $dll_source and -d $dll_dir) {
- File::Copy::copy( $dll_source, $dll_location);
- }
- elsif (-f $dll_source) {
- print <<EOF;
-ERROR: The directory $dll_dir
-was not found. Enter the path to your Windows
-DLL directory, or enter nothing to skip the DLL
-installation.
-
-(MiniVend installation will continue,
-but you may need to consult the README.win32 file
-to find out how to install the CGI program.)
-EOF
- $dll_dir = my_prompt("DLL directory: ");
- redo DLL if $dll_dir;
- }
- else {
- print <<EOF;
-MiniVend requires the CYGWIN.dll module for the .EXE version of
-its CGI program to run. We did not find it in the normal c:/windows/system
-location, and it is not included in this version of the ZIP file.
-
-You will either need to get it, or you will need to use the tlink.pl program.
-(Many Windows web servers require some additional setup to run Perl CGI
-programs.)
-
-The CYGWIN.DLL file is available at:
-
- ftp://ftp.minivend.com/pub/cygwin.dll
-
-Enter nothing at the following prompt to put off getting this file.
-
-EOF
- $dll_source = my_prompt("Enter another path to CYGWIN.DLL: ");
- redo DLL if $dll_source;
- }
-
- }
- }
- umask 0;
- require Win32::Shortcut;
- import Win32::Shortcut;
- my $short = new Win32::Shortcut;
- # Apparently Win32::Shortcut won't reliably work when starting
- # from here
- #$short->Load("win/minivend.pif");
- open(WINBAT, ">minivend.bat")
- or die "create minivend.bat: $!\n";
- print WINBAT "set PGPPATH=$ENV{PGPPATH}\n" if $ENV{PGPPATH};
- print WINBAT <<EOF;
-set MINIVEND_ROOT=$realdir
-$Config{perlpath} $realdir/bin/minivend -serve
-EOF
- close(WINBAT);
- $short->{Path} = "$realdir/minivend.bat";
- $short->{WorkingDirectory} = "$realdir";
- $short->{Path} =~ s:/:\\:g;
- $short->{WorkingDirectory} =~ s:/:\\:g;
- $short->{File} = "Start MiniVend Server";
- $short->Save();
- undef $short;
- open(WINBAT, ">makecat.bat")
- or die "create makecat.bat: $!\n";
- print WINBAT <<EOF;
-$Config{perlpath} $realdir/bin/makecat
-EOF
- close(WINBAT);
- $short = new Win32::Shortcut;
- # Apparently Win32::Shortcut won't reliably work when starting
- # from here
- #$short->Load("win/minivend.pif");
- $short->{Path} = "$realdir/makecat.bat";
- $short->{WorkingDirectory} = "$realdir";
- $short->{Path} =~ s:/:\\:g;
- $short->{WorkingDirectory} =~ s:/:\\:g;
- $short->{File} = "Make MiniVend Catalog";
- $short->Save();
-
- File::Copy::copy('win/POSIX.pm', 'lib/POSIX.pm')
- or die "File::Copy::copy error 'win/POSIX.pm': $!\n";
-
- @winfiles = grep m:^lib/:, @files;
- eval {
- File::Copy::copy('Start MiniVend Server.pif', 'dist')
- or die "File::Copy::copy error 'Start MiniVend Server.pif': $!\n";
- File::Copy::copy('Make MiniVend Catalog.pif', 'dist')
- or die "File::Copy::copy error 'Make MiniVend Catalog.pif': $!\n";
- push @winfiles, 'Start MiniVend Server.pif';
- push @winfiles, 'Make MiniVend Catalog.pif';
- };
- if ($@) {
- my $windir = $realdir;
- $windir =~ s:/:\\:g;
- print <<EOF;
-The Shortcut files could not be made. Start the server with
-
- perl $realdir/bin/minivend -serve
-
-or
-
- $windir\\minivend
-
-EOF
- }
- push @winfiles, 'makecat.bat', 'minivend.bat';
- push @winfiles, 'lib/POSIX.pm';
- for (@winfiles) {
- install_file('.', $realdir, $_);
- }
- }
-
- @files = grep m:^dist/:, @files;
- @files = map { s:^dist/::; $_} @files;
-
- # New install_file routine
- chdir 'dist';
- for (@files) {
- install_file('.', $realdir, $_);
- }
-
$\17 = 0;
MODGET: {
last MODGET unless $Cpan;
- last MODGET if $Windows;
+ unless (-d 'build') {
+ mkdir('build', 0777)
+ or die "Couldn't make build directory for CPAN: $!\n";
+ }
+ chdir 'build'
+ or die "Couldn't chdir to build directory for CPAN: $!\n";
my $mod;
foreach $mod (@mods_to_get) {
my $ok = eval { cpan_get($mod, $realdir)};
print "\a\n$mod get failed.\n\n";
}
}
- chdir $origdir;
+ chdir '..';
}
- my $perl = $Windows ? 'perl' : $Config{perlpath};
- chdir $realdir;
- system "$perl configure.pl -v $realdir $perl";
- exit;
+ $Data::Dumper::Terse = 1;
+ open (INITP, ">scripts/initp.pl")
+ or die "Can't write initp.pl: $!\n";
+ print INITP '$MV::Self = ';
+ print INITP Dumper(\%X);
+ print INITP ";\n1;";
+ close INITP;
+ return \%X;
}
sub regularize {
my $self = shift;
local *install;
+ sub dont_warn {
+ \*install;
+ }
my $new = <<'EOF';
mv_install ::
- $(PERL) Makefile.PL install $(INSTALLARCHLIB)
+ $(PERL) Makefile.PL force=1 final=$(INSTALLARCHLIB)
install :: all pure_install doc_install mv_install
$_;
}
+ use Getopt::Long;
+ my @saveargs = @ARGV;
+ my %optctl = (
+ 'junk' => sub { 1 },
+ '<>' => sub {
+ my ($arg) = @_;
+#warn "checking option $arg\n";
+ my ($opt, $val);
+ if($arg !~ /=/) {
+ $opt = $arg;
+ $val = 1;
+ }
+ else {
+ ($opt, $val) = split /=/, $arg, 2;
+ }
+ $MV::Default{$opt} = $val;
+ return;
+ },
+ );
+
+ my @options = ( qw/
+ junk
+ <>
+ / );
+
+ Getopt::Long::config(qw/permute/);
+ GetOptions(\%optctl, @options)
+ or die "Bad option get\n";
+# use Data::Dumper;
+# $Data::Dumper::Terse = $Data::Dumper::Indent = 2;
+# print "ARGV: " . Dumper(\@ARGV);
+# print "OPT: " . Dumper(\%MV::Default);
+# @ARGV = @saveargs;
+
WriteMakefile(
NAME => "MiniVend",
-
- "DISTNAME" => "minivend",
- "MAN1PODS" => {},
- "dist" => {
+ MAN3PODS => { 'pod/mvdocs.pod' => 'blib/man3/mvdocs.8' },
+ DISTNAME => "minivend",
+ clean => {
+ FILES=> "lib/IniConf.pm _db_storable _session_storable lib/File/CounterFile.pm scripts/initp.pl scripts/compile_link scripts/config_prog scripts/configdump scripts/dump scripts/expire scripts/localize scripts/expireall scripts/makecat scripts/minivend scripts/offline scripts/restart scripts/update",
+ },
+
+ dist => {
CI => "ci -l -t-Initial",
SUFFIX => ".gz",
DIST_DEFAULT => 'all tardist',
COMPRESS => "gzip -9f",
ZIP_FLAGS => '-pr9',
},
- VERSION_FROM => "dist/bin/minivend",
- EXE_FILES => [],
+ VERSION_FROM => "scripts/minivend.PL",
+ EXE_FILES => [],
CONFIGURE => \&initialize,
);
-# MiniVend V3.15
+# Minivend V4.x
#
-# Copyright 1996-1999 by Michael J. Heins <mikeh@minivend.com>
+# Copyright 1996-2000 by Michael J. Heins <mikeh@minivend.com>
#
-# Based on Vend 0.2
+# Originally based on Vend 0.2
# Copyright 1995 by Andrew M. Wilcox
#
# Portions from Vend 0.3
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
-# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
-# USA.
+# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA.
-Welcome to MiniVend, originally based on Vend. This program is
-completely unsupported, without warranty of any kind. The author is
-interested in problems, suggestions, or comments, but does not have time
-to offer free individual support in most cases. See the MiniVend website at
-http://www.minivend.com/minivend/ for more information.
+Welcome to Minivend! This program is completely unsupported, without
+warranty of any kind. The author is interested in problems, suggestions,
+or comments, but does not have time to offer free individual support
+in most cases. See the Minivend website at http://www.minivend.com/
+for more information.
- IMPORTANT NOTE: MiniVend 3.15 requires Perl 5.004 or higher. It will
- run on no earlier version, period. 5.005 is recommended.
+IMPORTANT NOTE: Minivend 4.0 requires, repeat REQUIRES, Perl 5.005 or Perl 5.6.
The information you need is in the following files:
README Copyright info, roadmap to installation
and pointers to support system
- Copying Your MiniVend license -- please read.
-
- INSTALL Installation instructions
-
- UPGRADE What to watch out for if updating from an earlier version
-
- README.OS OS-specific information, if any
-
- doc/ The MiniVend documentation.
+ Copying Your Minivend license -- please read.
WHATSNEW Change information for all versions in this
version family.
Major files/directories in the distribution:
- configure
- configure.bat
- Makefile.PL The installation scripts. Try typing "./configure"
- or "configure" to install.
+ Makefile.PL The installation scripts
- dist/ The distribution files, exclusive of library
- modules. Includes:
+ dist/ The distribution files, exclusive of executable
+ files and modules. Includes:
minivend.cfg.dist Distribution minivend.cfg
- flycat/ The flycat demo application.
- simple/ The simple demo application.
- bin/ Executables including scripts
+ checkout/ Checkout-only demo application.
+ simple/ The not so aptly named "simple" demo
+ application.
src/ C and Perl code for CGI links
+ compat/ Some Minivend-3 compatibility tags
+ usertag/ Some fairly-standard usertags
- doc/ The documentation.
+ extra/ Some not-always-needed Perl libraries.
- lib/ The library modules needed to run MiniVend.
+ lib/ The library modules needed to run Minivend.
+ scripts/ The executable files, relocated to bin in the run
+ directory.
+
+ test.pl The installation test script.
+
win/ Windows-specific files
--------------------------------------------------------------
M I N I V E N D
- MiniVend is a full-featured electronic catalog system (commonly known
- as a shopping cart) with online ordering capability. It is designed to
- provide an interface complete with SSL security and full database
- support.
+ Minivend is a full-featured electronic catalog system (commonly known
+ as a shopping cart) with online ordering capability. It is a high-end
+ database access and retrieval system with SQL support via the Perl DBI.
- MiniVend is freely-redistributable under the GNU General Public
+ Minivend is freely-redistributable under the GNU General Public
License -- you can download it via FTP.
- MiniVend 3.0 Features
+ Minivend 4.0 Features
* Users maintain a "shopping cart" for ordered items
* Multiple independent or shared catalogs allow one server
to run many storefronts or a "mall"
* SSL support means secure and practical credit card ordering
- * PGP support for secure off-site mailing of orders
+ * PGP and GPG support for secure off-site mailing of orders
+ * Complete addressable database support with virtually
+ unlimited rows and columns
+ * Complete SQL support via DBI
* Catalogs can be of almost unlimited size with excellent
performance
* Multi-server mode for very high capacity on systems with
sufficient memory
* Cookie support allows browsers to leave catalog and come
back without losing session state
- * Complete addressable database support with virtually
- unlimited rows and columns
- * Complete SQL support including ODBC
+ * Minimate web administration interface (separate package)
+ * Complete user authentication and database with address
+ books and stored shopping carts
* Many, many, other features
Powerful search capability
* One-click scan and search -- build a whole search in a single HREF
+ * Pageable results, configurable in many ways
* Versatile built-in text search
- * Complete Glimpse interface
+ * Complete Glimpse support
* Fast binary search
+ * Independent field search selection and return
* Range searching, numeric and alphanumeric
* Search sorting with reverse, numeric and case-insensitive options
- * Independent field search selection and return
* Search any file, build results from any database
Complete control of appearance
- * Full frames support
- * Catalog pages automatically selected -- either built
- "on the fly" from the database or pre-made for popular items
- * The on-the-fly page is selectable from the database
- * Embedded Perl and conditional HTML allow complex and
- flexible catalog pages to be completely built from
- the database
+ * Over 90 predefined tag functions
+ * Powerful user-definable tags
+ * Catalog pages automatically selected -- either built
+ "on the fly" from the database or pre-made for popular items
+ * Embedded Perl and conditional HTML allow complex and
+ flexible catalog pages to be completely built from the database
+ * ASP-like syntax available
Flexible Ordering Process
- * Multi-level order screens with configurable field
+ * Single- or multi-level order screens with configurable field
verification
* Multiple shopping carts per catalog, allows both buy
and sell operations
* Shipping calculation, mixed modes, with UPS table lookup
* Sales tax calculation, with fully independent non-taxable
item and taxed shipping
+ * Route orders to multiple fulfillment houses with
+ complete configurability
* PGP encryption of credit card information or
the entire emailed order
* Fully-configurable discounts with coupons or
* Fully-configurable quantity pricing
* Fully-configurable item price adjustments
* Sophisticated back end order entry capability including CyberCash(R)
- * Full client-side imagemap support, including frame targets and form
- submits
* Fully configurable order reports and receipts
- Easy Administration
+ Miscellaneous
* Automated installation and configuration
- * Runs under Perl 5.004, Windows, and almost any UNIX
+ * Runs under Perl 5.005/5.6, Windows, and almost any UNIX
* Designed to be secure
- * Offline database builds
* Static page build option for high performance
* Works well with all browsers
-
--------------------------------------------------------------------
-
- D E M O
-
-There is a simple demo application included.
-
-To install the demo, go to the MiniVend installation directory
-and run:
-
- bin/makecat simple
-
-Follow the prompts and after restarting the MiniVend server you
-should be able to access the demo catalogs.
-
-------------------------------------------------------------------
A V A I L A B I L I T Y
A N D
C O M P A T I B I L I T Y
-MiniVend has been well-tested on Solaris 2, SunOS, Linux, HP-UX,
-BSDI, FreeBSD, and OSF/Alpha. It also reportedly runs on SCO,
-AIX, and other Unix ports. It should work on any UNIX or Win32
-OS with Perl 5.004 or higher.
+Minivend 4 has been tested on Solaris 2, Linux, FreeBSD, and Digital
+UNIX/Tru64. Its predecessor Minivend 3 also reportedly runs on SCO, AIX,
+and other Unix ports. It should work on any UNIX or Win32 OS with Perl
+5.005 or higher.
-IMPORTANT NOTE FOR WINDOWS: MiniVend will NOT run with the early
-ActiveState ports, otherwise known as 5.003 build 1XX. It REQUIRES, repeat
-REQUIRES, the standard version Perl 5.004 or 5.005 ActiveState "merge"
-ports. See http://www.perl.com/ for information on how to obtain it.
+Windows does not support fork(), so the server runs in the foreground. There
+are other differences; the canonical installation is UNIX.
-Windows does not support fork(), so the server runs in the foreground. You
-need the DB_File module for best results, and that is not included in the
-standard distribution. You can get it at http://www.perl.com/CPAN-local
-(or any CPAN archive) in the ports/win32/Standard/x86/ directory.
+UNIX INSTALLATION
+------------------
+Here is the short version:
--------------------------------------------------------------
+ gzip -dc minivend-4.xxx.tar.gz | tar xvf -
+ cd minivend-4*
+ perl Makefile.PL
+ make test && make install
- I N S T A L L A T I O N
+-- WHEN IN DOUBT, RE-START THE SERVER. It won't take but a few
+ seconds, and changes in configurable options don't take effect
+ until it is done. You may even change a page and not see the
+ effect until the server is restarted.
WINDOWS INSTALLATION
--------------------
- Obtain the self-extracting executable minivend-3.15.exe
- and double-click on it. You MUST already have Perl 5.004
- INSTALLED and in your PATH.
+ Not yet. You can manually create a software directory and
+ get things going if you know your way around Perl. But I
+ don't recommend trying unless you are prepared for some
+ serious work.
- Alternatively, you can unzip the file yourself and run
- "setup".
+-------------------------------------------------------------------
-UNIX INSTALLATION
-------------------
-Here is the short version:
+ D E M O
- gzip -dc minivend-3.15.tar.gz | tar xvf -
- cd minivend-3.15
- ./configure
+There are two demo applications included; one is not so aptly named "simple",
+the other is "basic". For the best instructional experience, start
+with "basic" and then try "simple".
-More information is in the file INSTALL.
+To install the demo, go to the directory where you installed
+Minivend (default is "mvend" in your home directory or /usr/local/minivend
+for root installations) and run:
--- WHEN IN DOUBT, RE-START THE SERVER. It won't take but a few
- seconds, and changes in configurable options don't take effect
- until it is done. You may even change a page and not see the
- effect until the server is restarted.
+ bin/makecat basic
--------------------------------------------------------------
+ or
- D O C U M E N T A T I O N
+ bin/makecat simple
-The documentation is in 3 files in the doc/ subdirectory of
-the main MiniVend directory:
+Follow the prompts and after restarting the Minivend server you
+should be able to access the demo catalog.
- toc.html Table of contents
- frtoc.html Frames table of contents
- minivend.html Main documentation file
+-------------------------------------------------------------
-These files will be copied to the same HTML directory as
-the simple demo gateway files -- they would normally
-be referenced as:
+ D O C U M E N T A T I O N
- http:/www.yourserver.com/simple/toc.html
+The documentation is in several man pages and HTML files in the doc/
+subdirectory of the main Minivend directory.
There is an extended documentation package available
at www.minivend.com.
K N O W N P R O B L E M S
-RedHat Linux 5.0:
- RedHat Linux 5.0 has a bad Perl distribution that causes
- problems with POSIX. The real solution is to obtain the
- latest.tar.gz file from CPAN and build a new Perl. Here
- is the script to do that once you have obtained the
- latest.tar.gz file:
-
- tar xzf latest.tar.gz
- cd perl5.005*
- perl -pi.dist -e \
- "s:/ bsd / /:/ net / /' | sed -e 's/ bsd / c g /:; \
- s/^#(POSIX_cflags)/POSIX_cflags/" \
- hints/linux.sh
- ./Configure -des && make test
-
- That should get you a Perl which passes make test
- one hundred percent and that works with MiniVend and
- other programs which use the POSIX library. After
- you have verified the "make test" passes fully
- you should of course su to root and "make install".
-
- This may soon be corrected by the Perl porters or by
- RedHat, so bear in mind this is time-sensitive. The above
- works well as of Jun. 3, 1998.
-
-IRIX, Solaris, Digital UNIX:
- The server may not terminate immediately,
- as the select() call blocks signals. It
- will stop at the next request, or at the
- end of the occasional houskeeping
- cycle, set by the directive HouseKeeping in
- minivend.cfg. Set to less than 10 to achieve
- decent response.
-
BSDI, FreeBSD:
- The BSDI library code is not safely re-entrant
- when used in combination with signals, so no
- signals are sent during server usage. This is
- transparent to the user.
-
- MiniVend may not as of this writing work with
- BSDI 3.0 in UNIX mode, so you should use the INET
- mode and the tlink program. This is the catalog
- configurator default.
+ If installing as root, you should use this procedure:
- If the kernel parameter CHILD_MAX is not configured
- above the default of 40, expect problems. Same with
- SO_MAXCONN and some other kernel parameters.
-
-Solaris:
- It is STRONGLY RECOMMENDED that you update to Perl 5.005
- when running on Solaris.
+ perl Makefile.PL PREFIX=/usr/local/minivend
Windows:
Just a few things don't work the same as UNIX. See the
---------------------------------------------------------------------
I, the author, am very interested in learning your problems with
-MiniVend, and am interested in clarifying the documentation for
+Minivend, and am interested in clarifying the documentation for
future improvements. I am not much interested in BEING your
documentation, though, unless you pay well and promptly. Please
send kudos, comments, questions, and complaints to:
I am to respond. Helpful suggestions and real bug reports are almost
always acknowledged.
-Good luck with MiniVend!
+There is an active user support mail list, minivend-users@minivend.com,
+which has traffic of about 600-900 messages per month. To subscribe,
+send "subscribe minivend-users" in the *body* of a message to
+majordomo@minivend.com, or visit the mail list page at www.minivend.com.
+
+Good luck with Minivend!
+++ /dev/null
-# MiniVend V3.15
-#
-# Copyright 1996-1998 by Michael J. Heins <mikeh@iac.net>
-#
-# Largely based on Vend 0.2
-# Copyright 1995 by Andrew M. Wilcox
-#
-# Portions from Vend 0.3
-# Copyright 1995,1996 by Andrew M. Wilcox
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
--------------------------------------------------------------
- M I N I V E N D O N W I N D O W S
-
- System Requirements:
-
- * Windows 95, 98 or Windows NT. Tested on Windows 95 OSR2.
-
- * Perl 5.004 for Win32 or higher -- accept no substitutes. THIS
- PROGRAM WILL RUN ON NO EARLIER VERSION OF PERL. PERIOD. It
- will not run on the ActiveState port build 3xx series; it
- does appear to run very well with the "Merge" of the build
- 500 series. The version you probably want is also variously
- known as the "CORE", "Standard", or "Gurusamy Sarathy" version.
-
- * Web server. Almost any that has CGI capability
- should work. Tested on Microsoft Personal Web Server,
- NT IIS, and OmniHTTPD.
-
- * Memory, memory, memory -- best guess is that things
- will not run well on less than 32 MB of RAM, but your
- mileage may vary. I don't trust the Windows system
- performance indicator, as it indicates 86% free RAM on
- my machine with 32M while MiniVend is running. I find
- it hard to believe. That is the smallest RAM machine
- I have, and MV ran fine on it -- it is a 486DX/100.
-
- IMPORTANT NOTE:
-
- If you use the Windows notepad or other editor which
- willy-nilly adds carriage returns, and you edit
- configuration files that may contain Perl code, or
- that use EOF markers, or have data, you may have to
- remove carriage returns before running MiniVend. If
- you have problems, perform the following commands from the
- DOS prompt:
-
- perl -npi.bak -e "s:\r::g" <file-you-edited>
-
- The error "illegal character \015" would be an indication
- of this problem.
-
- There are also reports that using DOS edit causes problems
- with profiles.
-
- Prior to Installation:
-
- 1. Make sure Perl 5.004 is fully installed. Perl 5.004
- is mandatory -- you can get it at:
-
- http://www.perl.com/CPAN/ports/win32/Standard/x86/
-
- A list of CPAN sites is always available at:
-
- http://www.perl.com/CPAN
-
- 2. From the same place you obtained Perl 5.004, get the
- DB_File module, latest version of which is 1.54
- at this writing. Install it according to the
- instructions in the README.NOW file.
-
- If you have the ActiveState Perl 5.005, it should
- work OK once you use the PPM (find it in your
- /perl/5.005XX/bin/ppm.pl) and get the following
- modules:
-
- DB_File
- MIME-Base64
- libwww
-
- The last two are to allow the new internal HTTP
- server to work and provide a semi-GUI installation.
-
- MiniVend might run without OK without DB_File, but
- the user database will not be persistent and there
- will be other anomalies.
-
- 3. Obtain and install BLAT if you wish to
- send emailed orders.
-
- http://gepasi.dbs.aber.ac.uk/softw/Blat.html
-
- Adjust the catalog.cfg parameter SendMailProgram
- according to the path that you install it at -- MiniVend
- should find it if it is in your path, and append the
- right options. An example of a SendMailProgram:
-
- SendMailProgram blat - -t
-
- (You must run 'blat -install' before it will work. Try
- testing blat from the command line if your order is
- not sent.)
-
- Installation:
-
- 1. Download the minivend-3.15.exe distribution file
- and run it in the normal Windows fashion.
-
- ( If you don't want to execute the self-extracting ZIP file,
- then you can obtain the standard minivend-3.15.tar.gz file and
- install that instead. )
-
- You will have to obtain the CYGWIN.DLL file if you want to
- use TLINK.EXE as your link CGI. The standard distribution .EXE
- file has it included -- the minivend-3.15-nodll.exe file
- eliminates it.
-
- 2. Select a directory to install MiniVend in -- it defaults
- to /mvend on the default hard drive but you may put it anywhere.
-
- 3. You will need to know where your Web document root and
- CGI directories are located. The defaults are set for
- Microsoft personal web server.
-
- 4. If your catalog is for testing purposes, you can
- use the server name "127.0.0.1". If you want the catalog
- to be accessible from the outside world, you will have
- to enter a valid IP address or server name.
-
- 5. MiniVend will run as a service if you set it up with
- srvany.exe or a similar program. Because the server
- is single-tasked, it is recommended that you set up
- a system agent to shut down the MV server, expire the
- session database, and restart at least once per day.
- (Expiration will always be needed to prevent the DBM files
- or session directories from getting too big, and possible
- memory leaks in Safe.pm make this a good idea anyway.)
-
- 6. Be careful of long-running searches -- because the server
- will not handle multiple simultaneous requests as it does
- on UNIX, searches will hold off user access. It is recommended
- that you break your results pages into small (less than the
- default 50-result) chunks by setting mv_matchlimit.
-
--------------------------------------------------------------
-
- W I N D O W S D I F F E R E N C E S
-
- * ODBC works fine, but you will need to have the
- DBI::ODBC module properly installed. DBI also works
- with MS SQL Server according to user reports.
-
- * No fork() on Windows means that only one server
- can run at a time. This means multiple requests
- will be queued. In any case, lack of file locking
- would mean big problems for multiple servers. Perl's
- threading is too experimental to do the work required
- to make MV thread-safe.
-
- * Since the server runs in the foreground, if you change
- global variables in your embedded Perl you must be careful
- to reset them. In particular, the FRAMES version of the
- 3.15 demo will not work correctly.
-
- * Some of the support scripts will not work, and some
- might not behave as in the documentation. In particular,
- the expire script must not be run while the server
- is running, as no file locking is available.
-
- * You will need to hit Ctrl-C twice to stop the server
- with some ports of Perl. If you can't stop the server,
- close the DOS box.
-
- * Memory leaks in the Safe.pm module may mean that
- you will need to restart the server due to running
- out of memory. It is recommended that you shutdown
- and restart at least once a day.
-
+++ /dev/null
-# MiniVend V3.15
-#
-# Copyright 1996-1999 by Michael J. Heins <mikeh@minivend.com>
-#
-
- M I S C E L L A N E O U S
- O S N O T E S
-
-
-Operating Recommended
-System DBM Tested on Notes
--------- ------------------------- -----------------------
-Linux GDBM 2.0.x & up This is what MiniVend is
- developed on -- all features
- should work normally provided
- you have a good Perl. The
- best thing to do is install
- Perl 5.005 *without removing
- any RPM packages*.
-
-
- IMPORTANT NOTE FOR REDHAT 5.0:
- If MiniVend fails "make test" this usually means that the POSIX
- library is broken on the distributed Perl. You should update
- Perl.
-
- And RedHat 5.1 and earlier have *gaping* security holes,
- so you should update your operating system.
-
-Windows 9x DB_File ????? MiniVend may not stand up
- well for high-use
- catalogs. Some features
- cannot be used because
- of foreground operation;
- for instance modifying
- $Safe{config}.
-
-
-Windows NT DB_File ????? Some features of MiniVend
- will not work, mostly in
- support scripts. MiniVend
- will run as a service.
- Some features cannot be
- used because of foreground
- operation; for instance
- modifying $Safe{config}.
-
-
-FreeBSD DB_File all Many users run MiniVend on
- this OS. You need Perl 5.004,
- which not all BSD distributions
- provide (some have Perl 4 as
- the default Perl!).
-
-BSDI DB_File all Many users run MiniVend on
- this OS. You need Perl 5.004,
- which not all BSD distributions
- provide (some have Perl 4 as
- the default Perl!).
-
-Solaris 2 GDBM 2.x Many users run MiniVend on
- this OS, no known problems.
- Problems with installation
- are usually due to poor or
- missing development tools.
-
-SunOS 4.1.x DB_File 4.1.x Has been known to run on
- this OS, no known problems.
-
-
-DEC/OSF, aka GDBM 3.0 Some users run MiniVend on
-Digital UNIX this OS, no known problems.
-
-
-IRIX GDBM 5.3,6.2 Server may be difficult to
- stop for re-configuration,
- setting HouseKeeping value to
- 10 or less is recommended.
- Some reports of "zombie"
- processes probably due to
- signal handler problems.
-
-HP/UX - 10.1 A few users, may be some
- trouble with vlink/tlink
- compilation.
-
-SCO - 3.2 Should work fine as of MV3.05
-
-AIX - 4.1 Reported to work with little
- difficulty
-
-UNIXware - 2.1 Should work fine as of MV3.05
-
+++ /dev/null
-
- U P G R A D I N G F R O M 3 . 0 x
-
->>>>> MINIVEND 3.15 notes for compatibilty
-
-#############################################
-IMPORTANT NOTE
-
-If you use named parameters in [if ...] tags, of the
-form:
-
- [if type=!data term="something" op=!= compare=whatever]
- something
- [if]
-
-you MUST NOW QUOTE the ! character. This was always intended
-but is now enforced. You must do instead:
-
- [if type="!data" term="something" op="!=" compare=whatever]
- something
- [if]
-
-Basically, it follows the HTML specification for quoting. If
-you have only the word characters [A-Za-z0-9_] you don't need
-to quote, but otherwise you should.
-
-On UNIX systems, you can find most non-conforming pages by changing
-to your catalog directory and running:
-
- find . -type f | xargs grep -l '[A-Za-z][A-Za-z][A-Za-z]=\!'
-
-END IMPORTANT NOTE
-#############################################
-
-New to 3.15 that could cause problems for longtime users:
-
- * If you have an old system that has been relying on the
- "products" database being pre-defined, you must either
- define it in catalog.cfg:
-
- Database products products.asc DEFAULT
-
- or change the global directive "Legacy" to yes in directive
- in minivend.cfg.
-
->>>>> General compatibility notes for earlier versions of MiniVend
-
-You should normally be able to simply install over the current software and
-then restart the server. The only incompatible changes are bug fixes (which
-may fool any workarounds you have made), and these:
-
- * The TcpHost directive was accidentally disabled at Version
- 3.08 and has been reenabled. If you use tlink, you may find
- that MiniVend won't accept a connection from a machine besides
- "localhost". The global error.log file should give you the
- information you need to set TcpHost to a value that will
- allow connections.
-
- * The UserDB add-on is now a full feature and is integrated into
- MiniVend. While older calls with mv_subroutine will
- still work if you keep your userdb.cfg file intact, you
- are STRONGLY ENCOURAGED to use the new implementation. It
- is much better anyway.
-
- * A [loop search=...] now always returns a newline
- as the last character. This may cause a problem with
- some of the old demo checkout pages in the shipping
- area. The solution is to set "lr=yes" in the
- search specification.
-
- * One gotcha has to do with the [page scan/se=whatever] tag
- in NewTags mode. You should change it to the proper
- [page scan se=whatever].
-
- * DescriptionTrim is gone -- no biggie. 8-) If you did by
- some very strange chance use this, you will have to set a
- separate short description field.
-
-The "simple" demo runs mostly unchanged from MiniVend 3.01 to 3.15
-provided you don't try to mix versions of the demo pages. The usual source
-of any upgrade problems is illegal syntax in tags, which might work on
-earlier versions but is rejected in later, stricter versions. Especially
-check nested [if ...] tags -- some problems can be solved by putting a
-[then] [/then] around the true-executed condition.
-
-IMPORTANT NOTE: It is highly recommended that you copy the current software to
-a backup directory or an archive in case there is a problem and you wish to
-return to the earlier version.
-
-IMPORTANT NOTE: If you haven't changed over from [old] to NewTags, you
-should do so now or make this the last version of MiniVend you ever use.
-You certainly won't get any on-target support from the mail list. 8-)
-
-See the file WHATSNEW for more information.
-
- U P G R A D I N G F R O M 2 . 0 3
-
-There are a few "gotchas" for 2.0x upgrades:
-
- * If you have not changed the PriceBreaks directive from
- the demo (you should disable it unless you are actually
- using quantity pricing) you will get a message in the
- error log that "no pricing database is defined". If you
- are using quantity pricing, you will have to set it up
- as a database with at least the fields "sku" and "price"
- by placing those words on the first line, separated by
- a TAB -- and your pricing must be separated from the
- part number by a TAB as well.
-
- * The CheckoutFrame, OrderFrame, SearchFrame, and any
- other frame settings are now empty by default. If you
- use frames, you must explicitly define those directives.
-
- * Perl 5.002 will not work with MiniVend 3.0, and you
- must update.
-
- * The Cookies directive is now enabled by default.
-
- * If you have produced a custom catalog template for use
- by the makecat program, you cannot place two directives
- directly after one another. An example is the
- VendURL definition of '__MVC_SERVERNAME__MVC_CGIURL'.
- That now must be '__MVC_SERVERNAME____MVC_CGIURL__'
- which places underscores around the entire name of the
- substitution target.
-
- * If you are still using the old-style report with $variable
- substitution, you must define the NewReport directive to 'No'.
-
- * If you use the 'f' formula shipping type in shipping.asc, you
- must either replace the 'x' that was used for the substitution
- of the total to @@TOTAL@@, or you must set the OldShipping
- to Yes. The change to the shipping.asc file is recommended,
- as without it you will not be able to use the new shipping
- features of MiniVend.
-
--------------------------------------------------------------
-
--- /dev/null
+
+
+ W H A T ' S N E W
+
+Everything. Well, not completely -- many MiniVend 3.x catalogs can
+run with few changes, but there will be changes.
+
+MiniVend 4.0 is a major rewrite that restructures many things.
+
+Minivend-4.0alpha12:
+
+ -- added [banner ...] tag to replace random/rotate,
+ includes complete documentation
+ -- Glimpse works again.
+
+Major new features are almost too many to mention, read the documentation
+for the most complete description. Some highlights:
+
+* All lists are the same. The basic code for all lists is common, meaning
+ that the days of [sql-param ...] and [item-param ...] being different
+ are over.
+
+* All lists can have any prefix. This means that you can do:
+
+ [loop prefix=item list="99-102 00-0011a"]
+ [item-code] [item-field price]
+ [/loop]
+
+ or
+
+ [loop prefix=color list="[item-accessories options, color"]
+ [color-code] [color-data colors name]
+ [/loop]
+
+* All databases can do basic SQL queries, even MiniVend ones. These
+ three will/should work much the same on any MiniVend database type:
+
+ [query sql="delete from inventory where code = '[item-code]'"]
+ [/query]
+
+ [query sql="insert into inventory ('[item-code]', '[value new_number]'"]
+ [/query]
+
+ [query sql="update inventory set qty = '[value new_number]'
+ where code = '[item-code]']
+ [/query]
+
+ [query sql="select * from products"]
+ [/query]
+
+ All lists can have a [more-list], can be limited by mv_matchlimit, etc.
+
+* You can save queries to a variable space and then call them in code:
+
+ [query sql="select * from products" hashref=prod_table][/query]
+ [perl]
+ $products = $Query->{prod_table};
+ $mona_code = '00-0001';
+ foreach $ref (@$products) {
+ $artist = $ref->{artist}, last
+ if $ref->{code} eq $mona_code;
+ }
+ return "The Mona Lisa's artist is: " . $artist;
+ [/perl]
+
+* All databases and session-variable setting/reading parameters have a
+powerful cascading filter capability.
+
+ [data table=products
+ col=artist
+ key=00-341] returns: VAN GOGH, Vincent
+
+ [data table=products
+ col=artist
+ key=00-341
+ filter="name namecase"
+ ] returns: Vincent Van Gogh
+
+ [data table=products
+ col=artist_formatted
+ key=00-341
+ filter="name namecase"
+ value"VAN GOGH, Vincent"
+ ] stores: Vincent Van Gogh
+
+The same thing works for [value ...], [cgi ...], etc. As well as
+for certain SQL query situations.
+
+* Many new configuration prodedure capabilities:
+
+ - #ifdef and #ifndef on Variable values
+ - #include files now included at point of entry instead of at
+ end of process
+ - attach subroutines to configuration settings with Tie::Watch
+ - Set directives with code, also using Tie::Watch
+ - Require directive ensures that GlobalSub and global UserTag entries
+ are present when moving a catalog
+
+* A new ASP-style syntax is supported:
+
+ <HTML MV=mvasp><BODY>This is HTML</BODY>
+ <%
+ $Document->write('This is code');
+ %>
+ HTML again.
+ <%
+ $Document->write('Code again.');
+ %>
+
+* A new Perl object set is consistent in all areas.
+
+ [perl]
+ $Document->write("Your name is $Values->{name}");
+ [/perl]
+
+ and
+
+ [calc]
+ $Document->write("Your name is $Values->{name}");
+ [/calc]
+
+
+ are the same, as is:
+
+ ActionMap your_name <<EOR
+ sub {
+ $Document->write("Your name is $Values->{name}");
+ return;
+ }
+ EOR
+
+ Objects supported are:
+
+ $CGI->{key} Hash reference to raw submitted values
+ $CGI_array->{key} Hash reference to array submitted values
+ %Db Hash of available database tables
+ $DbSearch->method({}) Do searches in your code
+ $Document->write() Writes to page
+ $Carts->{cartname} Direct reference to shopping carts
+ $Config->{key} Direct reference to $Vend::Cfg
+ $Scratch->{key} Direct reference to scratch area
+ $Session->{key} Direct reference to session area
+ %SQL Hash of available DBI database handles
+ $Tag->tagname(@args) Call a tag as a routine (UserTag too!)
+ $Tag->tagname({ %args }) Call with hash-style naming too!
+ $TextSearch->method({}) Do searches in your code
+ $Values->{key} Direct reference to user form values
+ &Log($msg) Log to the error log
+ HTML $msg Synonym for $Document->write($msg)
+
+* The search engine has been extensively reworked.
+
+ -- Word matching should be much more predictable
+ -- You can do grouping of search specifications
+
+ Glimpse is not yet integrated.
+
+* Tag parameters quoted with parameter=`code` are the equivalent of
+ parameter="[calc]code[/calc]". They can be subroutine calls, too.
+
+* Tag parameters can be quoted with | to strip whitespace:
+
+ [page href=|
+ [value name="whatever"]
+ |]
+
+ is equivalent to
+
+ [page href="[value name="whatever"]"]
+
+* Filters can be created with Filter directive
+ and/or [input-filter name=var op="uc"][/input-filter]
+
+ uc UPPER CASE
+ lc lower case
+ digits only digits
+ word only A-Z a-z _ 0-9
+ urlencode space becomes %20
+ entities < becomes <
+ strip strip leading/trailing whitespace
+ no_white strip all whitespace
+ gate set to blank unless scratch variable
+ with same name is non-blank
+ n (where n is an integer) length limit
+ remove delete existing filter (if any)
+
+* Filter directive allows filtering of certain CGI variables
+ for input conditioning; this is not session dependent and
+ automatically operates on any iteration of the variable...
+
+ Filter phone digits 10
+
+ That removes all non-digit values from the variable "phone",
+ then limits length to 10. Any session-based filters are applied
+ after this one.
+
+* [input-filter name=foo] CODE [/input-filter]
+
+ Sets a routine passed to the equivalent of a "[calc]" tag.
+ The value to be filtered is placed in the variable "$mv_filter_value",
+ and the name is set to "$mv_filter_name". It is possible to
+ do something like:
+
+ [input-filter name=country tables=country]
+ my $val = $mv_filter_value;
+ my $prospect = &tag_data('country', 'name', $val);
+ return $prospect || $val;
+ [/input-filter]
+
+ That will return the name of a country if it is found as a key
+ in the database (assuming the simple demo country definitions).
+ The tables=country directive is necessary to prepare the database
+ for access this early in the process.
+
+* Major improvements in the parser, notably optimization when
+ [pragma no_html_parse] and/or positional parameters are used.
+
+* ECML is supported via the Vend::ECML module. To map the
+ checkout form values from MiniVend UserDB names, with an [ecml ...]
+ tag:
+
+ [ecml state]
+
+ is equivalent to:
+
+ <INPUT TYPE=text
+ VALUE="[value state]"
+ NAME=Ecom_ShipTo_Postal_StateProv
+ SIZE=2>
+
+* The [price] tag now supports pricing with attributes (size/color etc.).
+ If you do
+
+ [price code=99-102 size=XL color=RED]
+ [price code=99-102 size=L color=RED]
+ [price code=99-102 size=L color=BLUE]
+
+ in the demo, this will demonstrate it.
+
+* The idiom:
+
+ #include directory/*
+
+ now is supported (and used in the demo minivend.cfg file). This
+ includes all files in that directory (but not subdirectories)
+ and allows you to include the whole directory. It should make
+ maintaining multiple servers a bit easier.
+
+* Items can now be ordered "on-the-fly" in the standard
+ distribution by adding mv_order_fly.
+
+* Added form-remap based on catalog script-name (too early for
+ other methods). In minivend.cfg:
+
+ FormRemap /cgi-bin/simple code mv_order_item
+ FormRemap /cgi-bin/simple item mv_order_fly
+
+* Made some major changes in the demo. Notably, MySQL should install
+ out of the box.
+
+* Makecat now strips quotes from Apache parameters read from
+ httpd.conf file.
+
+* Added Tagref.pm module which can document the implementation
+ of even UserTags. Add this to minivend.cfg to print one
+ to a MiniVend page:
+
+ UserTag tag-reference Routine <<EOR
+ sub {
+ require Vend::Tagref;
+ open (TAGREF, ">mv_tagref.pod");
+ my $reference = Vend::Tagref::tag_reference();
+ print TAGREF $reference;
+ close TAGREF;
+ my $out = `pod2html mv_tagref.pod`;
+ if(! $out) {
+ $Vend::StatusLine = "Content-Type: text/plain\r\n";
+ $out = $reference;
+ }
+ return $out;
+ }
+ EOR
+
+* Removed all dependencies on ProductsFiles containing 'products'.
+
+* Complete internationalization of error messages via Locale,
+ sample locale.error file included.
+
+* Added Legacy directive to minivend.cfg to support older
+ catalogs that don't define "products" database.
+
+* Catalog directive can now be specfied as:
+
+ Catalog simple
+ Catalog simple dir /home/minivend/simple
+ Catalog simple script /cgi-bin/simple
+ Catalog simple alias /secure-bin/simple
+ Catalog simple alias /simple
+
+ Most importantly, certain global directives can be
+ set on a catalog basis:
+
+ Catalog simple directive ErrorFile /var/log/minivend/simple.log
+
+* The [more-list] tag now accepts a [decade-next][/decade-next] and
+ [decade-prev][/decade-prev] setting to break match lists into groups
+ of 10 pages. Alternatively, the search setting mv_more_decade can be
+ set true (two-letter equivalent is md=1) then you need not provide
+ the [decade-next] tag. Actually "decade" is a tad deceiving, for if
+ mv_more_decade (or md=) is set to an integer greater than 1,
+ that is the number of pages that will be grouped.
+
+=head2 AutoModifier
+
+Sets an attribute in a shopping cart entry to the field of the same name
+in the ProductsFile pertaining to this item.
+
+This is useful when doing shipping calculations or other embedded Perl
+that is based on item attributes. To set whether an item is defined as
+"heavy" and requires truck shipment, you can do:
+
+ AutoModifier heavy
+
+When an item is added to the shopping cart using MiniVend's routines, the
+C<heavy> attribute will be set to the value of the C<heavy> field in
+the products database. In the default demo that would be C<products>; any
+changes to C<ProductFiles> would affect that, of course.
+
+* Syslog error logging (global only) is supported via the
+ global SysLog directive.
+
+ Syslog command /usr/bin/logger
+ Syslog tag mv1
+ Syslog alert local3.warn
+ Syslog warn local3.info
+ Syslog info local3.info
+
+ This would cause global errors to be logged with the command:
+
+ /usr/bin/logger -t mv1 -p local3.alert
+
+ and cause system log entries something like:
+
+ Oct 26 17:30:11 bill mv1: Config 'co' at server startup
+ Oct 26 17:30:11 bill mv1: Config 'homefn' at server startup
+ Oct 26 17:30:11 bill mv1: Config 'simple' at server startup
+ Oct 26 17:30:11 bill mv1: Config 'test' at server startup
+ Oct 26 17:30:13 bill mv1: START server (2345) (INET and UNIX)
+
+ This facility is alpha and is subject to change. Of course you can
+ wrap your own wrapper around it to get it to behave how you want.
+
+* Added Scratch variable mv_data_enable to gate the update_data
+ function; prior to this it was possible to update a database
+ willy-nilly.
+
+* Many bug fixes, of course. Notably [and ...] and [or ..]
+ were broken in some cases.
+
+* "Message" directive allows you to display messages at startup, both
+ global and catalog.
+
+REMOVAL
+
+Many things were removed as redundant, deprecated, or just plain
+crufty:
+
+* All frame features removed, frames are managed by the user in HTML.
+
+* Tags removed:
+
+buttonbar Replace with Variable.
+random Replace with [ad random=1] or custom code
+rotate Replace with [ad ...]
+help No replacement
+body Replace with templates
+finish_order No replacement
+last_page No replacement
+item-link No replacement, just use [page [item-code]]
+loop-link No replacement, just use [page [loop-code]]
+sql-link No replacement, just use [page [sql-code]]
+accessories Replace with normal data functions
+
+* Compatibility routines for many popular tags like [random], [rotate], etc.
+are provided in the compat/ directory. To use, include the files in minivend.cfg:
+
+ #include compat/*
+
+* Directives removed:
+
+ ActionMap
+ AdminDatabase
+ AdminPage
+ AsciiBackend
+ BackendOrder
+ ButtonBars
+ CheckoutFrame
+ CheckoutPage
+ CollectData
+ DataDir
+ Delimiter
+ DescriptionTrim
+ FieldDelimiter
+ FrameFlyPage
+ FrameLinkDir
+ FrameOrderPage
+ FrameSearchPage
+ ItemLinkDir
+ ItemLinkValue
+ MsqlDB
+ MsqlProducts
+ Mv_AlinkColor
+ Mv_Background
+ Mv_BgColor
+ Mv_LinkColor
+ Mv_TextColor
+ Mv_VlinkColor
+ NewReport
+ NewTags
+ OldShipping
+ OrderFrame
+ PageCache
+ PriceDatabase
+ Random
+ ReceiptPage
+ RecordDelimiter
+ ReportIgnore
+ Rotate
+ SearchFrame
+ SearchOverMsg
+ SecureOrderMsg
+ SpecialFile
+ SubArgs
+ Tracking
+
+* Minor operations removed:
+
+ - auto-substitution of mp= on [loop search=profile],
+ [search-region arg=profile]
+ - [tag scan]...
+ - [tag sql]...
+
+Many of these are related to one of:
+
+ * Removal of frames logic
+ * Removed tags
+ * Obsolete methods
+ * Old routines for 2.0x compatibility
+
+----------------------------
+UPGRADING from MiniVend 3
+
+Form Data updates:
+
+ * Added Scratch variable mv_data_enable to gate the update_data
+ function; prior to this it was possible to update a database
+ willy-nilly. Do:
+
+ [set update_database]
+ [if type=data term="userdb::trusted::[data session username]"]
+ [set mv_data_enable]1[/set]
+ [else]
+ [set mv_data_enable]0[/set]
+ [/else]
+ [/if]
+ [/set]
+ <INPUT TYPE=hidden NAME=mv_click VALUE=update_database>
+
cat <<EOF
- MiniVend Version 3.0x Configuration
+ MiniVend Version 4.0x Configuration
- Copyright 1996-1998 Michael J. Heins, <mikeh@minivend.com>
+ Copyright 1996-2000 Michael J. Heins, <mikeh@minivend.com>
- MiniVend is largely based on Vend 0.2
+ MiniVend was originally based on Vend 0.2
Copyright 1995 Andrew M. Wilcox <awilcox@maine.com>
Portions from Vend 0.3
echo
fi
-if test -f dist/minivend.cfg.dist
-then
- $PERL Makefile.PL
- make
- make test && make install
-else
- $PERL ./configure.pl $DEBUG $INSTALL $PERL
-fi
+$PERL Makefile.PL
+make
+make test && make install
+++ /dev/null
-@echo off
-perl Makefile.PL
-configure2
-echo If you got a bad command or filename message, this means you
-echo do not have Perl in your PATH (or maybe even installed on your
-echo machine). See www.perl.com for information.
-echo ------------------------------------------------------------
-echo IF YOU DO HAVE PERL 5.004 installed,
-echo unzip the file to a directory and try:
-echo ------------------------------------------------------------
-echo cd minivend-3.15
-echo c:\perl\bin\perl Makefile.PL
+++ /dev/null
-<HTML><HEAD>
-<TITLE>MiniVend Administration</TITLE>
-</HEAD>
-<BODY BGCOLOR="#C0C0C0">
-
-<H1>MiniVend Startup</H1>
-
-<I>(Wait until the MiniVend server starts...could take several seconds.)</I><BR><BR><BR>
-<A HREF="http://localhost:7786/mv_admin/makecat_step1">Make a new catalog</A></B><BR><BR>
-
-</BODY>
-</HTML>
+++ /dev/null
-# MiniVend V3.15
-#
-# Copyright 1996-1998 by Michael J. Heins <mikeh@minivend.com>
-#
-# Based on Vend 0.2
-# Copyright 1995 by Andrew M. Wilcox
-#
-# Portions from Vend 0.3
-# Copyright 1995,1996 by Andrew M. Wilcox
-#
-# This program is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later
-# version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program; if not, write to the Free
-# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
-# USA.
-
-Welcome to MiniVend, originally based on Vend. This program is
-completely unsupported, without warranty of any kind. The author is
-interested in problems, suggestions, or comments, but does not have time
-to offer free individual support in most cases. See the MiniVend website at
-http://www.minivend.com/minivend/ for more information.
-
- IMPORTANT NOTE: MiniVend 3.15 requires Perl 5.004 or higher.
- (It will probably work with 5.003 on some UNIX systems and *may*
- work with Perl 5.002 -- IF you comment out any lines which
- contain "use locale;". Neither are supported.)
-
-The information you need is in the following files:
-
- README Copyright info, roadmap to installation
- and pointers to support system
-
- Copying Your MiniVend license -- please read.
-
- INSTALL Installation instructions
-
- README.OS OS-specific information, if any
-
- doc/ The MiniVend documentation.
-
- WHATSNEW Change information for all versions in this
- version family.
-
- MANIFEST List of all core distribution files.
-
-Major files/directories in the distribution:
-
- configure
- configure.bat
- Makefile.PL The installation scripts. Try typing "./configure"
- or "configure" to install.
-
- dist/ The distribution files, exclusive of library
- modules. Includes:
-
- minivend.cfg.dist Distribution minivend.cfg
- simple/ The simple demo application.
- bin/ Executables including scripts
- src/ C and Perl code for CGI links
-
- doc/ The documentation.
-
- lib/ The library modules needed to run MiniVend.
-
- win/ Windows-specific files
-
---------------------------------------------------------------
-
- M I N I V E N D
-
- MiniVend is a full-featured electronic catalog system (commonly known
- as a shopping cart) with online ordering capability. It is designed to
- provide an interface complete with SSL security and full database
- support.
-
- MiniVend is freely-redistributable under the GNU General Public
- License -- you can download it via FTP.
-
- MiniVend 3.0 Features
-
- * Users maintain a "shopping cart" for ordered items
- * Multiple independent or shared catalogs allow one server
- to run many storefronts or a "mall"
- * SSL support means secure and practical credit card ordering
- * PGP support for secure off-site mailing of orders
- * Catalogs can be of almost unlimited size with excellent
- performance
- * Multi-server mode for very high capacity on systems with
- sufficient memory
- * Cookie support allows browsers to leave catalog and come
- back without losing session state
- * Complete addressable database support with virtually
- unlimited rows and columns
- * Complete SQL support including ODBC
- * Many, many, other features
-
- Powerful search capability
-
- * One-click scan and search -- build a whole search in a single HREF
- * Versatile built-in text search
- * Complete Glimpse interface
- * Fast binary search
- * Range searching, numeric and alphanumeric
- * Search sorting with reverse, numeric and case-insensitive options
- * Independent field search selection and return
- * Search any file, build results from any database
-
- Complete control of appearance
-
- * Full frames support
- * Catalog pages automatically selected -- either built
- "on the fly" from the database or pre-made for popular items
- * The on-the-fly page is selectable from the database
- * Embedded Perl and conditional HTML allow complex and
- flexible catalog pages to be completely built from
- the database
-
- Flexible Ordering Process
-
- * Multi-level order screens with configurable field
- verification
- * Multiple shopping carts per catalog, allows both buy
- and sell operations
- * Shipping calculation, mixed modes, with UPS table lookup
- * Sales tax calculation, with fully independent non-taxable
- item and taxed shipping
- * PGP encryption of credit card information or
- the entire emailed order
- * Fully-configurable discounts with coupons or
- across-the-board discounts
- * Fully-configurable quantity pricing
- * Fully-configurable item price adjustments
- * Sophisticated back end order entry capability including CyberCash(R)
- * Full client-side imagemap support, including frame targets and form
- submits
- * Fully configurable order reports and receipts
-
- Easy Administration
-
- * Automated installation and configuration
- * Runs under Perl 5.004, Windows, and almost any UNIX
- * Designed to be secure
- * Offline database builds
- * Static page build option for high performance
- * Works well with all browsers
-
-
--------------------------------------------------------------------
-
- D E M O
-
-There is a simple demo application included.
-
-To install the demo, go to the MiniVend installation directory
-and run:
-
- bin/makecat simple
-
-Follow the prompts and after restarting the MiniVend server you
-should be able to access the demo catalogs.
-
--------------------------------------------------------------------
-
- A V A I L A B I L I T Y
- A N D
- C O M P A T I B I L I T Y
-
-MiniVend has been well-tested on Solaris 2, SunOS, Linux, HP-UX,
-BSDI, FreeBSD, and OSF/Alpha. It also reportedly runs on SCO,
-AIX, and other Unix ports. It should work on any UNIX or Win32
-OS with Perl 5.004 or higher. It may run with Perl 5.003 or
-Perl 5.002, but the author disavows all responsibility for
-the results.
-
-IMPORTANT NOTE FOR WINDOWS: MiniVend will NOT run with the
-ActiveState port, otherwise known as 5.003 build 1XX. It
-REQUIRES, repeat REQUIRES, the standard version Perl 5.004. See
-http://www.perl.com/ for information on how to obtain it.
-
-Windows does not support fork(), so the server runs in the
-foreground. You need the DB_File module for best results,
-and that is not included in the standard distribution. You can
-get it at http://www.perl.com/CPAN-local (or any CPAN archive)
-in the ports/win32/Standard/x86/ directory.
-
-BSDI and FreeBSD are known to have problems with Perl socket
-code, which MiniVend relies heavily upon. You will probably
-need to run in INET/TLINK mode instead of UNIX/VLINK mode.
-
--------------------------------------------------------------
-
- I N S T A L L A T I O N
-
-WINDOWS INSTALLATION
---------------------
-
- Obtain the self-extracting executable minivend-3.15.exe
- and double-click on it. You MUST already have Perl 5.004
- INSTALLED and in your PATH.
-
- Alternatively, you can unzip the file yourself and run
- "setup".
-
-UNIX INSTALLATION
-------------------
-Here is the short version:
-
- gzip -dc minivend-3.15.tar.gz | tar xvf -
- cd minivend-3.15
- ./configure
-
-More information is in the file INSTALL.
-
--- WHEN IN DOUBT, RE-START THE SERVER. It won't take but a few
- seconds, and changes in configurable options don't take effect
- until it is done. You may even change a page and not see the
- effect until the server is restarted.
-
--------------------------------------------------------------
-
- D O C U M E N T A T I O N
-
-The documentation is in 2 files in the doc/ subdirectory of
-the main MiniVend directory:
-
- toc.html Table of contents
- minivend.html Main documentation file
-
-These files will be copied to the same HTML directory as
-the simple demo gateway files -- they would normally
-be referenced as:
-
- http:/www.yourserver.com/simple/toc.html
-
--------------------------------------------------------------
-
- K N O W N P R O B L E M S
-
-RedHat Linux 5.0:
- RedHat Linux 5.0 has a bad Perl distribution that causes
- problems with POSIX. The real solution is to obtain the
- latest.tar.gz file from CPAN and build a new Perl. Here
- is the script to do that once you have obtained the
- latest.tar.gz file:
-
- tar xzf latest.tar.gz
- cd perl5.004*
- perl -pi.dist -e \
- "s:/ bsd / /:/ net / /' | sed -e 's/ bsd / c g /:; \
- s/^#(POSIX_cflags)/POSIX_cflags/" \
- hints/linux.sh
- ./Configure -des && make test
-
- That should get you a Perl which passes make test
- one hundred percent and that works with MiniVend and
- other programs which use the POSIX library. After
- you have verified the "make test" passes fully
- you should of course su to root and "make install".
-
- This may soon be corrected by the Perl porters or by
- RedHat, so bear in mind this is time-sensitive. The above
- works well as of Jun. 3, 1998.
-
-IRIX, Solaris, Digital UNIX:
- The server may not terminate immediately,
- as the select() call blocks signals. It
- will stop at the next request, or at the
- end of the occasional houskeeping
- cycle, set by the directive HouseKeeping in
- minivend.cfg. Set to less than 10 to achieve
- decent response.
-
-BSDI, FreeBSD:
- The BSDI library code is not safely re-entrant
- when used in combination with signals, so no
- signals are sent during server usage. This is
- transparent to the user.
-
- MiniVend may not as of this writing work with
- BSDI 3.0 in UNIX mode, so you should use the INET
- mode and the tlink program. This is the catalog
- configurator default.
-
- If the kernel parameter CHILD_MAX is not configured
- above the default of 40, expect problems. Same with
- SO_MAXCONN and some other kernel parameters.
-
-Solaris:
- If you are trying to run with Perl 5.003, which is
- NOT recommended, you must use the File::Lock
- module -- flock() emulation in Perl 5.003 does not
- work properly, and fcntl() locking must be used.
- This version of MiniVend includes File::Lock,
- and attempts to install it.
-
- Solaris 2.4 has problems with UNIX-domain sockets
- and you can expect problems. Bottom line is that
- I will not support Solaris releases before 2.5, nor
- Perl before 5.004.
-
- You may not use OrderCounter when running Perl
- 5.003 and Solaris.
-
- If you have Perl 5.004 you can disregard File::Lock.
-
- It is STRONGLY RECOMMENDED that you update to Perl 5.004
- when running on Solaris.
-
-Windows:
- This is a new port, and just a few things don't work the
- same as UNIX. See the README-win.txt file for more information.
-
----------------------------------------------------------------------
-
-I, the author, am very interested in learning your problems with
-MiniVend, and am interested in clarifying the documentation for
-future improvements. I am not much interested in BEING your
-documentation, though, unless you pay well and promptly. Please
-send kudos, comments, questions, and complaints to:
-
- mikeh@minivend.com
-
-Note that I receive thousands of emailed questions per year and cannot
-answer them all. The more research you do on your own the more likely
-I am to respond. Helpful suggestions and real bug reports are almost
-always acknowledged.
-
-Good luck with MiniVend!
-
+++ /dev/null
-# MiniVend V3.15
-#
-# Copyright 1996-1998 by Michael J. Heins <mikeh@iac.net>
-#
-# Largely based on Vend 0.2
-# Copyright 1995 by Andrew M. Wilcox
-#
-# Portions from Vend 0.3
-# Copyright 1995,1996 by Andrew M. Wilcox
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
--------------------------------------------------------------
- M I N I V E N D O N W I N D O W S
-
- System Requirements:
-
- * Windows 95 or Windows NT. Tested on Windows 95
- and NT 4.0 workstation.
-
- * Perl 5.004 for Win32 -- accept no substitutes. THIS
- PROGRAM WILL RUN ON NO EARLIER VERSION OF PERL. PERIOD. It
- will not run on the ActiveState port build 3xx series;
- it does appear to run very well with the "Merge" version. The
- version you need is also variously known as the "CORE",
- "Standard", or "Gurusamy Sarathy" version.
-
- * Web server. Almost any that has CGI capability
- should work. Tested on Microsoft Personal Web Server,
- NT IIS, and OmniHTTPD.
-
- * Memory, memory, memory -- best guess is that things
- will not run well on less than 32 MB of RAM, but your
- mileage may vary. I don't trust the Windows system
- performance indicator, as it indicates 86% free RAM on
- my machine with 32M while MiniVend is running. I find
- it hard to believe. That is the smallest RAM machine
- I have, and MV ran fine on it -- it is a 486DX/100.
-
- IMPORTANT NOTE:
-
- If you use the Windows notepad or other editor which
- willy-nilly adds carriage returns, and you edit
- configuration files that may contain Perl code, or
- that use EOF markers, or have data, you may have to
- remove carriage returns before running MiniVend. If
- you have problems, perform the following commands from the
- DOS prompt:
-
- perl -npi.bak -e "s:\r::g" <file-you-edited>
-
- The error "illegal character \015" would be an indication
- of this problem.
-
- There are also reports that using DOS edit causes problems
- with profiles.
-
- Prior to Installation:
-
- 1. Make sure Perl 5.004 is fully installed. Perl 5.004
- is mandatory -- you can get it at:
-
- http://www.perl.com/CPAN/ports/win32/Standard/x86/
-
- A list of CPAN sites is always available at:
-
- http://www.perl.com/CPAN
-
- 2. From the same place you obtained Perl 5.004, get the
- DB_File module, latest version of which is 1.54
- at this writing. Install it according to the
- instructions in the README.NOW file.
-
- MiniVend will run without OK without DB_File, but
- the user database will not be persistent.
-
- 3. Obtain and install BLAT if you wish to
- send emailed orders.
-
- http://gepasi.dbs.aber.ac.uk/softw/Blat.html
-
- Adjust the catalog.cfg parameter SendMailProgram
- according to the path that you install it at -- MiniVend
- should find it if it is in your path, and append the
- right options. An example of a SendMailProgram:
-
- SendMailProgram blat - -t
-
- (You must run 'blat -install' before it will work. Try
- testing blat from the command line if your order is
- not sent.)
-
- Installation:
-
- 1. Download the minivend-3.15.exe distribution file
- and run it in the normal Windows fashion.
-
- ( If you don't want to execute the self-extracting ZIP file,
- then you can obtain the standard minivend-3.15.tar.gz file and
- install that instead. )
-
- You will have to obtain the CYGWIN.DLL file if you want to
- use TLINK.EXE as your link CGI. The standard distribution .EXE
- file has it included -- the minivend-3.15-nodll.exe file
- eliminates it.
-
- 2. Select a directory to install MiniVend in -- it defaults
- to /mvend on the default hard drive but you may put it anywhere.
-
- 3. You will need to know where your Web document root and
- CGI directories are located. The defaults are set for
- Microsoft personal web server.
-
- 4. If your catalog is for testing purposes, you can
- use the server name "127.0.0.1". If you want the catalog
- to be accessible from the outside world, you will have
- to enter a valid IP address or server name.
-
- 5. MiniVend will run as a service if you set it up with
- srvany.exe or a similar program. Because the server
- is single-tasked, it is recommended that you set up
- a system agent to shut down the MV server, expire the
- session database, and restart at least once per day.
- (Expiration will always be needed to prevent the DBM files
- or session directories from getting too big, and possible
- memory leaks in Safe.pm make this a good idea anyway.)
-
- 6. Be careful of long-running searches -- because the server
- will not handle multiple simultaneous requests as it does
- on UNIX, searches will hold off user access. It is recommended
- that you break your results pages into small (less than the
- default 50-result) chunks by setting mv_matchlimit.
-
--------------------------------------------------------------
-
- W I N D O W S D I F F E R E N C E S
-
- * ODBC works fine, but you will need to have the
- DBI::ODBC module properly installed. DBI also works
- with MS SQL Server according to user reports.
-
- * No fork() on Windows means that only one server
- can run at a time. This means multiple requests
- will be queued. In any case, lack of file locking
- would mean big problems for multiple servers.
-
- * The support scripts are mostly untested, and
- some probably will not work. In particular, the
- expire script must not be run while the server
- is running, as no file locking is available.
-
- * You will need to close the DOS window to stop
- the server, at least on Win95.
-
- If you obtain the excellent Cygnus GNU toolset
- for Windows 95/NT, you can run bash.exe, enabling
- you to start the server with:
-
- perl /minivend/mvend/bin/minivend -serve &
-
- You can then use the kill.exe program to kill the
- server.
-
- * Memory leaks in the Safe.pm module may mean that
- you will need to restart the server due to running
- out of memory. It is recommended that you shutdown
- and restart at least once a day.
-
+++ /dev/null
-# MiniVend V3.15
-#
-# Copyright 1996-1999 by Michael J. Heins <mikeh@minivend.com>
-#
-
- M I S C E L L A N E O U S
- O S N O T E S
-
-
-Operating Recommended
-System DBM Tested on Notes
--------- ------------------------- -----------------------
-Linux GDBM 2.0.x & up This is what MiniVend is
- developed on -- all features
- should work normally provided
- you have a good Perl. The
- best thing to do is install
- Perl 5.005 *without removing
- any RPM packages*.
-
-
- IMPORTANT NOTE FOR REDHAT 5.0:
- If MiniVend fails "make test" this usually means that the POSIX
- library is broken on the distributed Perl. You should update
- Perl.
-
- And RedHat 5.1 and earlier have *gaping* security holes,
- so you should update your operating system.
-
-Windows 9x DB_File ????? MiniVend may not stand up
- well for high-use
- catalogs. Some features
- cannot be used because
- of foreground operation;
- for instance modifying
- $Safe{config}.
-
-
-Windows NT DB_File ????? Some features of MiniVend
- will not work, mostly in
- support scripts. MiniVend
- will run as a service.
- Some features cannot be
- used because of foreground
- operation; for instance
- modifying $Safe{config}.
-
-
-FreeBSD DB_File all Many users run MiniVend on
- this OS. You need Perl 5.004,
- which not all BSD distributions
- provide (some have Perl 4 as
- the default Perl!).
-
-BSDI DB_File all Many users run MiniVend on
- this OS. You need Perl 5.004,
- which not all BSD distributions
- provide (some have Perl 4 as
- the default Perl!).
-
-Solaris 2 GDBM 2.x Many users run MiniVend on
- this OS, no known problems.
- Problems with installation
- are usually due to poor or
- missing development tools.
-
-SunOS 4.1.x DB_File 4.1.x Has been known to run on
- this OS, no known problems.
-
-
-DEC/OSF, aka GDBM 3.0 Some users run MiniVend on
-Digital UNIX this OS, no known problems.
-
-
-IRIX GDBM 5.3,6.2 Server may be difficult to
- stop for re-configuration,
- setting HouseKeeping value to
- 10 or less is recommended.
- Some reports of "zombie"
- processes probably due to
- signal handler problems.
-
-HP/UX - 10.1 A few users, may be some
- trouble with vlink/tlink
- compilation.
-
-SCO - 3.2 Should work fine as of MV3.05
-
-AIX - 4.1 Reported to work with little
- difficulty
-
-UNIXware - 2.1 Should work fine as of MV3.05
-
+++ /dev/null
-
- W H A T ' S N E W
-
-MiniVend 3.15 incorporates some new features -- I couldn't resist. 8-)
-
- * A new ASP-style syntax is supported:
-
- <HTML MV=mvasp><BODY>This is HTML</BODY>
- <%
- $Document->write('This is code');
- %>
- HTML again.
- <%
- $Document->write('Code again.');
- %>
-
- * A new Perl object set is there to support the ASP, but
- it also is available via
-
- [perl arg=new]
- $Document->write("Your name is $Values->{name}");
- [/perl]
-
- Objects supported are:
-
- $CGI->{key} Hash reference to submitted values
- $Document->write() Writes to page
- $Carts->{cartname} Direct reference to shopping carts
- $Config->{key} Direct reference to $Vend::Cfg
- $Items->[n] Direct reference to current cart
- $Scratch->{key} Direct reference to scratch area
- $Session->{key} Direct reference to session area
- $Tag->tagname(@args) Call a tag as a routine (UserTag too!)
- $Values->{key} Direct reference to user form values
- &Log($msg) Log to the error log
-
- * Tag parameters quoted with parameter=`code` are the equivalent of
- parameter="[calc]code[/calc]".
-
- * Tag parameters can be quoted with | to strip whitespace:
-
- [page href=|
- [value name="whatever"]
- |]
-
- is equivalent to
-
- [page href="[value name="whatever"]"]
-
- * Tag parameters can be quoted with | to strip whitespace:
-
- [page href=|
- [value name="whatever"]
- |]
-
- is equivalent to
-
- [page href="[value name="whatever"]"]
-
- * Tag parameters can be quoted with @ to insert a scratch
- value:
-
- [value name=foo set=@bar@]
- [value name=foo set="[scratch bar]"]
-
- This can be useful when setting large values into variables,
- as it is much more efficient than the previous method.
-
- * Input values filters can be set up by quoting with ! and
- an operation:
-
- <INPUT TYPE=text NAME=phone VALUE="[value name=!phone:digits!]">
-
- This guarantees that the value of "phone" will be digits only
- when sent to MiniVend. Filters include:
-
- uc UPPER CASE
- lc lower case
- digits only digits
- word only A-Z a-z _ 0-9
- urlencode space becomes %20
- entities < becomes <
- strip strip leading/trailing whitespace
- no_white strip all whitespace
- gate set to blank unless scratch variable
- with same name is non-blank
- n (where n is an integer) length limit
- remove delete existing filter (if any)
-
- Filters can also be created with Filter directive
- and/or [input-filter op="uc"][/input-filter]
-
- * Filter directive allows filtering of certain CGI variables
- for input conditioning; this is not session dependent and
- automatically operates on any iteration of the variable...
-
- Filter phone digits 10
-
- That removes all non-digit values from the variable "phone",
- then limits length to 10. Any session-based filters are applied
- after this one.
-
- * [input-filter name=foo] CODE [/input-filter]
-
- Sets a routine passed to the equivalent of a "[calc]" tag.
- The value to be filtered is placed in the variable "$mv_filter_value",
- and the name is set to "$mv_filter_name". It is possible to
- do something like:
-
- [input-filter name=country]
- my $touched = '[tag touch country][/tag]';
- my $val = $mv_filter_value;
- my $prospect = &tag_data('country', 'name', $val);
- return $prospect || $val;
- [/input-filter]
-
- That will return the name of a country if it is found as a key
- in the database (assuming the simple demo country definitions).
-
- * Small improvements in the parser, notably optimization when
- positional parameters are used.
-
- * ECML is supported via the Vend::ECML module. To map the
- checkout form values from MiniVend UserDB names, with an [ecml ...]
- tag:
-
- [ecml state]
-
- is equivalent to:
-
- <INPUT TYPE=text
- VALUE="[value state]"
- NAME=Ecom_ShipTo_Postal_StateProv
- SIZE=2>
-
- * The [price] tag now supports pricing with attributes (size/color etc.).
- If you do
-
- [price code=99-102 size=XL color=RED]
- [price code=99-102 size=L color=RED]
- [price code=99-102 size=L color=BLUE]
-
- in the demo, this will demonstrate it.
-
- * The idiom:
-
- #include directory/*
-
- now is supported (and used in the demo minivend.cfg file). This
- includes all files in that directory (but not subdirectories)
- and allows you to include the whole directory. It should make
- maintaining multiple servers a bit easier.
-
- * Items can now be ordered "on-the-fly" in the standard
- distribution by adding mv_order_fly.
-
- * Added form-remap based on catalog script-name (too early for
- other methods). In minivend.cfg:
-
- FormRemap /cgi-bin/simple code mv_order_item
- FormRemap /cgi-bin/simple item mv_order_fly
-
- * Made some minor changes in the demo:
-
- - updated flypage to show attribute-based price tag
- - fixed query/check_orders using st=db
- - removed some syntax errors
- - added [email to=addr from=addr subject=subj] message [/email]
- UserTag which is better then the form_mail GlobalSub. It will
- allow $Tag->email() to be used, among other things.
- - Static build should work out of the box if you
- have DBM and define:
-
- StaticDBM static
-
- * Makecat now strips quotes from Apache parameters read from
- httpd.conf file.
-
- * Added Tagref.pm module which can document the implementation
- of even UserTags. Add this to minivend.cfg to print one
- to a MiniVend page:
-
- UserTag tag-reference Routine <<EOR
- sub {
- require Vend::Tagref;
- open (TAGREF, ">mv_tagref.pod");
- my $reference = Vend::Tagref::tag_reference();
- print TAGREF $reference;
- close TAGREF;
- my $out = `pod2html mv_tagref.pod`;
- if(! $out) {
- $Vend::StatusLine = "Content-Type: text/plain\r\n";
- $out = $reference;
- }
- return $out;
- }
- EOR
-
- * Removed all dependencies on ProductsFiles containing
- 'products'.
-
- * Added Legacy directive to minivend.cfg to support older
- catalogs that don't define "products" database.
-
- * Many bug fixes, of course. Notably [and ...] and [or ..]
- were broken in some cases.
-
-MiniVend 3.14 is a bug fix release with a couple of new features:
-
- * You can now specify a database in minivend.cfg. It becomes
- global and is available in all catalogs. It also remains connected
- all of the time, so no connection overhead exists. Careful;
- it is writable by any catalog unless you use WRITE_CONTROL
- defined below.
-
- * Added write control to all databases including SQL. If you wish to
- control writing of a global database, or to a certain catalog within
- a series of subcatalogs, or make one read only, you can do so.
-
- To enable write control:
-
- Database products WRITE_CONTROL 1
-
- Once that is done, you can make a database read only, which won't
- allow writing even if [tag flag write]products[/tag] is specified:
-
- Database products READ_ONLY 1
-
- If you want to have control with [tag flag write]products[/tag]:
-
- Database products WRITE_TAGGED 1
-
- If you want to limit write to certain catalogs, you can set:
-
- Database products WRITE_CATALOG simple=0, sample=1
-
- The "simple" catalog will not be able to write, while "sample"
- will if [tag flag write]products[/tag] is enabled.
-
- If you want a database to be always writable without having
- to specify [tag flag write] ... [/tag], then you can
- define:
-
- Database products WRITE_ALWAYS 1
-
- The default behavior of SQL datbases is equivalent to
- WRITE_ALWAYS, while the default for GDBM_File, DB_File,
- and Memory databases is equivalent to:
-
- Database products WRITE_CONTROL 1
- Database products WRITE_TAGGED 1
-
- As a side effect, I also removed the server error if a write
- fails on a DBM database. It simply doesn't write and logs
- the problem.
-
- * Added a DbSearch.pm module which adds a new search type called
- "db". This searches a SQL database with MiniVend search types,
- or searches a MiniVend database instead of the ASCII file.
-
- If it is a SQL table being searched, you can specify a coordinated
- search and any "==" or "eq" operators will be used to filter the
- initial search return. Otherwise, all rows of the database are
- scanned upon each search. This can get slow, so you won't want to
- do this for large tables.
-
- The major difference between this and the TextSearch type is that
- you must set base_directory to the table name/identifier of the
- default database being searched; it defaults to 'products', which
- is probably not what you want. This sets the field specifications
- for the SQL qualification, so you must be careful. You can search
- multiple tables, which will work well if the column names and orders
- are the same. It will not work well if they are different, so it will
- be rare when you want to search multiple tables.
-
- Bug fixes:
-
- * Set default for NewReport to "yes", which prevents the occasional
- problem with returning a bogus error report if mv_order_report is
- not set.
-
- * Fixed some weirdness in parsing certain search parameters, notably
- mv_sql_query and index search specifications.
-
- * Changed sort variables to globals so that sorting should be
- reliable. I hope.
-
- * Fixed quantity problem for [price code].
-
- * Made mv_order_subject work for order routing.
-
- * Order tracking now can be done in order routing.
-
-MiniVend 3.12 is a major release with multiple new features,
-particularly in the area of user access control.
-
-New features:
-
- * Major rework of the "simple" demo. (The HTML in that demo
- was circa 1995 when the first work on MiniVend was done.)
- Made it into the cookie-cutter style favored today, and
- combined frames/non-frames demo.
-
- * Added a new demo, "flycat". Documentation is sparse, will
- remain sparse, and is totally located in the README.flycat
- page.
-
- * Rolled the former demonstration add-on feature UserDB.pm
- into the main distribution. Added a [userdb ....] tag which
- performs operations like login, logout, password change, etc.
-
- * UserDB is now completely documented. It has many new
- features.
-
- * Added four types of access control based on User database
- login. The preferred method uses a .access_gate file to specify
- per-page access -- this is demonstrated in the demo with the
- [page reconfig/reconfig] page and is completely documented.
- Another simple method allows checking of page names before loading;
- a db_acl allows checking for read/write permission on a database;
- and a file_acl allows read/write checking on file names. The two
- latter ones are only enforced by your own programs; the simple
- integrated method can be automatic.
-
- * CookieLogin directive allows you to set a cookie with the
- username and password of a user for auto-login.
-
- * [set-cookie name value expire] and [read-cookie name] tags added.
-
- * Added a feature I have been thinking about for a long time --
- form-linked page refs. If you want to order an item with configurable
- size/color by a link, you can now do:
-
- [page form="
- mv_order_item=99-102
- mv_order_size=L
- mv_order_quantity=1
- mv_separate_items=1
- mv_todo=refresh"] Order t-shirt in Large size </A>
-
- It was so simple to add I don't know why I didn't before now.
-
- You must have TolerateGet set (which is now the default) and
- all normal MiniVend form caveats apply -- you must have an action,
- you must supply a page if you don't want to go to the default,
- etc.
-
- You can theoretically submit any form with this; it is best
- if none of the included values have newlines. You can also
- use it for submitting foreign forms if you like; it will
- not touch the href if it begins with http:, ftp:, or the
- like.
-
- The [area ...] tag works the same way, though the deprecated
- [pagetarget ....] and [areatarget ...] were left out.
-
- * Added user-definable fields and command scripts to the command-line
- makecat procedure.
-
- * Added rudimentary documentation on building your own catalog
- template.
-
- * Added [import table type] tag for importing database
- records. Supports all types including NOTES, the best mode to
- use for inline text. Also supports import directly from a file.
-
- * Glimpse now fully supports coordinated searching, though
- you must make sure you have at least one regular-expression
- based match.
-
- * Added support for file upload/download. A demonstration is
- included in the simple demo.
-
- * [sql-param ...] and [item-param ...] now both support named
- fields.
-
- * Totally removed support for the old Msql.pm module. If you
- still use this, use an older version or update to DBI.
-
- * You can set an UPPERCASE parameter in the Database directive:
-
- Database products UPPERCASE 1
-
- You want to apply this to SQL only.
-
- This allows lowercase field references in [item-field column]
- and [item-data table column] (and sql- and loop- too). This
- should make it easier to get things working with Oracle
- and other DBs which won't return a lowercase field name for
- fetchrow_hashref. Note that this is not used in [item-param
- field] where you should know what the name is.
-
- * There is an [if-param name] and [if-sql-param name] tag
- ala [if-field ...] and [if-data ...].
-
- * Added a [value-extended ...] tag which allows access to
- the array values of a form variable.
-
- * In my continuing quest to get people to use the UserTag
- capability, provided a few new ones in the demos -- notably
- a summary tag that is employed to total shipping weight in
- the demo, and a [table-font] [/table-font] tag which removes
- the onerous chore of setting a default font for every table
- cell.
-
- * Added multi-field searching for the coordinated search.
- You may pass a field like ":0..9" and have it search
- fields 0 through 9 for that search term only.
-
- * Added [next-anchor], [prev-anchor], and [page-anchor] container
- tags for complete configurability of [more-list][/more-list]
- area. This also closes complaints about no spacing between
- Previous and first page; prior behavior kept for compatibility.
-
- * Added a Storable interface selectable at software
- configuration time. If Storable is installed, and the
- file _db_storable is present in the MiniVend software root,
- (or the environment variable MINIVEND_STORABLE_DB is true)
- then Storable will be used not only for sessions but for
- all GDBM and DB_File storage. THIS BREAKS EXISTING CATALOGS.
- If you want to use Storable only for sessions, just set
- the environment variable $ENV{MINIVEND_STORABLE} to 1 as usual.
- You can also create a _session_storable file in the MiniVend root.
-
- * Verified the DBI interface to work with DBD::XBase (subject
- to the usual limitations like fieldname length), which
- allows XBASE/DBF files to be used directly. This is probably
- not useful for anything except an import interface; something
- like:
-
- [tag export products_dbf products.asc TAB][/tag]
-
- This would allow a user to upload a DBF file and
- then import that into a standard TAB-delimited.
-
- * Added a perhaps more convenient Locale language facility,
- which looks like:
-
- [LC] This is the default text
- [de_DE] Text for de_DE locale [/de_DE]
- [en_US] Text for en_US locale [/en_US]
- [fr_FR] Text for fr_FR locale [/fr_FR]
- [/LC]
-
-Bugs fixed:
-
- * [setlocale] currency and persist parameters were
- swapped; fixed.
-
- * Multiple selection checks that contained non-word characters
- would not be re-selected upon building an item-accessories
- box. Fixed.
-
- * Memory databases were getting imported too often, fixed
- bug in database initalization routines.
-
- * Fixed ownership problems in the mv_admin catalog; the
- installation should work flawlessly as root providing parent
- directories have the proper permission.
-
- * Due to persistent Perl problems with signal handling, the
- default demo is now distributed with PIDcheck enabled.
- New behavior when PIDcheck is in force is to reset the
- number of active servers based on the presence of PID files,
- while still rate-limiting to MaxServers iterations between
- housekeeping checks. The SafeSignals directive is deleted
- (it will generate a deprecated warning but allow startup
- to continue).
-
- This problem would occasionally cause busy servers to
- "freeze" as they reached and failed to go below the MaxServers
- level.
-
- If the PIDcheck directive is set, the number of servers will
- be automatically adjusted every HouseKeeping seconds according
- to the pid files. The recommended value for PIDcheck is now
- 180-600 seconds; the demos will come set to 300.
-
- * Fixed "bad search column" error when searching the first
- column of the products file or key column of a file.
-
- * Fixed security hole allowing user-specification of absolute
- search file names.
-
- * Fixed error with CyberCash number formatting when
- using a non-english number format (i.e. spaces and
- commas in non-english places).
-
- * mv_sort_field works even without mv_sort_command.
-
- * Indexing works for Windows.
-
-MiniVend 3.11 is a major release enhancing many aspects of installation,
-product pricing, secure authorization, searching, and database updates.
-
- * New experimental internal HTTP server means very fast
- request handling direct from the browser, and built-in
- internal security for admin tasks and protected catalog
- pages. Will authorize users from the add-in userdb database
- or any other MiniVend database. Supports crypt, minimal
- access logging.
-
- This internal HTTP server is not meant for production use.
- It may have difficulty with MS Internet Explod^Her.
-
- * New catalog configuration "wizard" and admin interface
- built in. The installation should be a one-step
- operation, completely automatic providing you have
- the MIME::Base64 and URI::URL modules.
-
- * New mv_admin catalog implements HTTP-based reconfiguration
- from a central place. Tags provided for you to gate it
- for individual users.
-
- * CPAN module installation improved.
-
- * The makecat script now can be completely run from the command
- line, no interactive steps necessary. Values can be partially
- filled in from the command line and you will be prompted
- for the rest. A "guess" mode returns a reference as a
- string guessing certain parameters from the ones you
- supply. And you can do a --nocopy test run to check the
- results before you actually copy the files.
-
- Unfortunately the only documentation is the usage message.
-
- * Makecat program adds catalogs to a running server.
-
- * German error messages added to error locale file (thanks to
- Karsten Mueller).
-
- * New CommonAdjust price setting scheme allows chained
- conditional lookups in pricing, shipping, and taxing. Added
- mv_price attribute for easy setting of prices in embedded
- Perl. Added [discount-subtotal] tag which will reliably give
- an item subtotal with discounts applied. New mv_discount
- attribute allows individual line item discounts.
-
- * TemplateDir (both local and global) allows missing
- pages to "fall back" to other places. This allows
- a catalog distribution that might only contain one
- or two pages.
-
- * Added LocaleDatabase, VariableDatabase, and DbDatabase;
- these allow setting of the Locale, Variable, and Database
- directives from a database table. This will allow maintenance
- improvements (they still only change value on startup or
- reconfigure.)
-
- LocaleDatabase is implemented in the demo.
-
- * Added support for CyberCash 3 (thanks to Gunnar Hellekson),
- AUTHORIZE.NET, and PAYMENTNOW.COM.
-
- * New [goto LABEL] and [label LABEL] allow chunks of a
- page to be skipped.
-
- * DB_File databases can be automatically compacted with
- the expire program; a standalone "compact" script is
- also provided.
-
- * Added PIDcheck global directive to allow monitoring of
- "hung" processes. This should make MiniVend more reliable
- especially in combination with Glimpse searching.
-
- * Text search engine now will combine binary searching with
- database-based searches. New mv_search_map allows reliable
- coordinated searchspecs even with empty search specifications.
-
- * Fixed multi-page sorting problems that were in MiniVend
- since 3.00.
-
- * Added new WideOpen directive so that catalogs can individually
- be set to tolerate no IP address qualification. It is named
- that because that is what you will be; you should not use this
- if you ever store unencrypted credit cards (or other sensitive
- info). It is also recommend that you shorten your expire time
- to a small number of hours, maybe even 1 or 2.
-
- * Added new FallbackIP directive to allow quasi-cookie capability
- by IP address and browser id string. Use if you have lots of
- users who don't take/give cookies. Suggest also that expire
- times be made short, though two users would have to have the
- same exact browser string and IP address. It will work with
- cookies if they have them.
-
- * Added va=var=value parameter to one-click search so you
- can set a value with a link.
-
- * Allow deletes with form database maintenance (mv_data_*).
- Added mv_data_decode to gate HTML::Entities decoding of data;
- this will allow easy and reliable display of multi-line fields
- in a <TEXTAREA>.
-
- * Added "expireall" script that expires all catalogs
- in minivend.cfg by calling expire -c <name> [-r].
-
- * Fixed longstanding "untie attempted" bug.
-
- * Fixed mv_save_session so it actually will send the
- user back to their saved session.
-
-MiniVend 3.10 is a bug-fix release with a few minor updates.
-
- * New IpQuad global directive allows removal of any IP address
- qualification from the session name, allowing transferred
- sessions from server to server. Just set
-
- DomainTail No
- IpHead Yes
- IpQuad 0
-
- in minivend.cfg and transfer of sessions from AOL or WebTV
- should now be possible. This makes it possible to use different
- domains for the secure server and the non-secure server, even
- when the browser will not set cookies outside the current
- domain.
-
- IMPORTANT NOTE: Remember that security is compromised
- greatly by this; it should be used in combination with
- PGP-encrypted credit card information with CreditCardAuto,
- or with MiniVend's internal CyberCash routines. YOU SHOULD
- NEVER STORE ANY UNENCRYPTED CREDIT CARD INFORMATION ANYWHERE
- WHEN USING THIS WORKAROUND.
-
- * New URLDECODE tag, specific to the new/HTML tag style, provides
- unescape and URL translation services for <A HREF...> and
- <IMG ....> tags. If you use FrontPage or other
- HTML editors they will translate spaces to %20 within
- an image SRC or anchor HREF. Now you can do:
-
- <IMG MV=urldecode SRC="[value%20saved_image]">
-
- Flypages and search lists are done automatically.
-
- * HTML-style CHECKED and SELECTED now works properly.
-
- * Fixed EXCEL import mode so it also strips paired double quotes.
-
- * Lotus NOTES format can now be exported.
-
- * Now can have separate language and currency locales,
- using the mv_currency scratch variable just as with mv_locale;
- and with [setlocale locale=fr_FR currency=en_US].
-
- * New Global Locale tag gives global default for error
- messages. Error messages are numbered by module, and can
- be changed. A default file locale.error will define the
- usable keys; it is not configured in by default.
-
- * Error messages are numbered and the current locale can
- be used to generate many of them. This is not yet complete,
- but should be much improved. See the locale.error file for
- a list of keys to define for translation.
-
- * MiniVend should work with the Storable module version
- 0.6@3 or higher, greatly increasing speed of session
- storage and recall. To use, install at least that version
- and set the environment variable MINIVEND_STORABLE to 1.
-
-MiniVend 3.09 is a release that optimizes speed and adds features
-that allow operation with some HTML editors.
-
- * SQL optimizations make dramatic differences in table
- construction speed. MiniVend now uses internal structures to
- maintain SQL column headings. This means that if you change
- your SQL table structure, you must restart Minivend, but you
- gain quite a bit of speed.
-
- [if-data]/[item-data], [(if-)?loop-data], and [(if-)?sql-data]
- tags are optimized across rows in the corresponding iterative
- list. This means that two selects are done where dozens might
- have been done before. Speed really increases.
-
- This optimization works for [if-field]/[item-field] and friends
- as well if there is only one products table (i.e. you didn't
- set ProductFiles). If you have more than one, you should use
- [item-data products ...] instead of [item-field ...] for best
- speed when appropriate.
-
- * To improve page response time, you can specify a SEND=1
- attribute to any new-syntax MiniVend tag -- it sends the
- output that has accumulated to that point. If you have named
- your link program to begin with nph- (i.e. nph-simple instead
- of simple) the program will start sending output immediately.
- This can greatly improve apparent response time on large search
- or loop lists.
-
- The nph-executable can also be optionally used with an
- alias:
-
- Catalog simple /catalogs/simple /cgi-bin/simple /cgi-bin/nph-simple
-
- If you reduce your vlink buffer size to 512 bytes, this will
- improve likelihood of immediate response at some cost in CPU
- utilization. (This change requires editing vlink.c and compiling --
- don't worry about it if you don't know how to do that.)
-
- * Search cache is *much* improved. Paging and caching should now
- be completely reliable. If the user hits reload, it will refresh the
- page, as Pragma: no-cache is honored. Search paging is cached as well.
- You can invalidate the cache for the next page only with
- [set mv_no_cache]1[/set].
-
- * You can encase a set of links in:
-
- [set mv_no_count]1[/set]
- [page whatever]A page[/page]
- [page whereever]Also a page[/page]
- [set mv_no_count]0[/set]
-
- The link count will be updated but not appended, making links
- repeatable. This allows the browser to highlight visited links,
- especially nice for paged searches.
-
- * The last search can be reproduced with the [data session last_search]
- via [page href="[data session last_search]"]. This includes
- links to different pages of a multi-page search return.
-
- * If you don't have the MD5 module for some reason (get it!)
- MV does some better cache key generation with checksums,
- reducing the likelihood of a collision.
-
- * Fixed spurious "ClearCache" error at startup.
-
- * MiniVend tags can now be contained within HTML tags, allowing MV
- to work somewhat with most any HTML editor. The problem before was
- that tags could not be placed between table rows with certain HTML
- editors (like FrontPage and Netscape Composer). It is triggered by
- including MV="tag arg arg.." as the *first* attribute of the HTML tag.
- (Actually it can be later in the tag if no ] or > characters intervene.)
- For example:
-
- <TABLE>
- <TR MV="loop" MV.search="ml=2000/se=Impressionists/sf=category">
- <TD> [loop-field title] </TD>
- <TD> [loop-code] </TD>
- </TR>
- </TABLE>
-
- will display:
-
- Sunflowers 00-341
- The Starry Night 00-342
-
- Arguments can be combined with tags if there is whitespace
- in the first mv="tag arg.." call:
-
- <TABLE>
- <TR MV="loop 1 2 3">
- <TD> [loop-code] </TD>
- <TD> row </TD>
- </TR>
- </TABLE>
-
- will display:
-
- 1 row
- 2 row
- 3 row
-
- There are some differences in operations depending on the tag --
- for instance, <A MV="page somepage" HREF="some_other_page.html">
- will replace the instance of HREF with its own HREF. This allows
- hrefs to work both for static HTML and MiniVend pages.
-
- Also, <TR MV="if value whatever"> will pair with the matching
- </TR>, but also "look ahead" for an [elsif ...] and [else] in
- the next table rows (or tag set -- could be <LI MV="if ...">
- </LI>, etc).
-
- The <PRE MV="perl"> </PRE> combination will work for
- cognitively-challenged HTML editors like Netscape Composer -- it
- will retranslate the entities that it auto-translates. And you can
- use <PARAM MV="if whatever"> </PARAM> <PARAM MV="else"> </PARAM> --
- Netscape and Microsoft editors won't auto-delete those when they
- read the file. ( I really have learned to hate Netscape Composer
- during the testing of this -- when loading a page, it deletes many
- things it doesn't understand, without asking or even *telling* you.
- Sheesh. Microsoft FrontPage, much to my surprise, is much better --
- it allows you to add extended attributes keeps them in the tag. There
- might be hope for it yet. In fact, look for me to add a "MiniVend"
- menu for the FrontPage editor in the release.)
-
- A special case comes with <SELECT ...> since the <OPTION> tag doesn't
- support extended attributes (at least in FrontPage) there is now an
- attribute MV.OPTION=varname for the loop tag. It has the effect of
- SELECTED to the <OPTION> which is has the same value as the loop-code.
- It will work limited circumstances like:
-
- <SELECT MV=loop MV.ARG="__SHIPMODES__" MV.OPTION="mv_shipmode">
- <OPTION VALUE="[loop-code]">
- [shipping-desc [loop-code]] [shipping [loop-code]
- </SELECT>
-
- or
-
- <SELECT MV=loop NAME=country
- MV.SEARCH="se=./ra=yes/fi=country.txt">
- MV.OPTION="country" >
- <OPTION> [loop-code]
- </SELECT>
-
- Bear in mind this is very preliminary editor support, there will
- be lots of anomalies and deficiencies. More shall be revealed....
-
- * Now can test for more than one condition via [and ...] and
- [or ...]. This works like:
-
- [if value whatever]
- [or value whomever]
- [and value however]
- Do it. 2 out of 3 is enough.
- [/if]
-
- The last condition pertains, and there is no parentheses,
- so you can't do [if ...][and ....][or ...]. But you could
- still do:
-
- [if value whomever]
- [and value whatever]
- Do it. 2 out of 3 is enough.
- [elsif value whomever]
- [and value however]
- Do it. 2 out of 3 is enough.
- [/elsif]
- [/if]
-
- * If conditions not containing an operator now have the
- comparison optimized away, removing a call to Safe. This
- means much faster compares for things like [if value whatever]
- and [if data table::column::row], where there is no equality
- or regex pattern check.
-
- * UPS-style lookup now can have up to 27 zones, can handle
- alphanumeric postal codes (i.e. Canada), can use more than
- three significant digits, can multiply weights by a factor
- for pound/kg conversion, and is much better documented.
-
- * [body ...] tag now accepts additional arguments to modify
- a preset scheme. [body 1 TEXT=GREEN] will send the preset
- scheme "1" with an additional parameter. Also can put in
- an HTML body tag with <BODY MV="body 1 TEXT=GREEN"> to make
- HTML editor processing easier.
-
- * SQL search type can now be specified in a profile, a demi-bug
- fixed.
-
- * Greatly improved independent field matching that supports
- the standard Perl operators plus "em" for exact match. Full
- case sensitivity is included.
-
- * When doing independent field matching a suitable qualifying
- search is made when available. This greatly speeds searches
- that depend on several conditions.
-
- * [subtotal], [total-cost], [salestax], [shipping], and [price]
- tags now all have a "noformat" option which just returns a raw
- number.
-
- * [price ...] tag fixed to fit documented behavior.
-
- * Precision error in [salestax] fixed. Salestax and shipping
- now use Locale->frac_digits places of precision (normally 2). Be
- careful if you use frac_digits less than 2 -- if you want
- even-dollar pricing you could instead use price_picture for
- currency formatting and keep frac_digits at 2.
-
- * [random], [rotate], [calc] and [currency] tags now auto-interpolate in
- new mode.
-
- * UPS-style lookup now can be used in up to 27 originating zones
- in one catalog, non-numeric lookups are allowed, and lookups can
- be more than three characters in length.
-
- * Shipping can now be set to use the PriceDivide setting for
- currency rate conversion, either global or individual.
-
- * A new import format, Lotus Notes/structured text, is added.
- Very useful for editing databases by hand.
-
- * UseModifier can be set in scratch variables with a simple
- [set mv_UseModifier]size color[/set], so you can have any number
- of options for an item without having to set them all.
-
- * Added order profile checks for "state", "province",
- "province_or_state", "postcode", "ca_postcode", and "zip". Sorry,
- only US/Canada supported, but you can add a check yourself
- in a GlobalSub:
-
-GlobalSub <<EOF
-sub set_up_extra_check {
- BEGIN {
- package Vend::Order;
- sub _pt_postcode {
- # $ref is to Vend::Session->{'values'} hash
- # $var is the passed name of the variable
- # $val is current value of checked variable
- my($ref, $var, $val) = @_;
-
- if ($ref->{country} =~ /^(PT|portugal)$/i) {
- return $val =~ /^\d\d\d\d$/ ? 1 : 0;
- }
- else {
- return 1;
- }
- }
- }
-}
-EOF
-
- Now you can specify in an order profile:
-
- postcode=pt_postcode
-
- There must be an underscore preceding the routine name in this
- case. Very elaborate checks are possible, of course. If some user
- takes on the polyglot it would be appreciated if they contribute
- the routines.
-
- To you MiniVend hackers out there, this is a general technicque you can
- use to override MV subroutines. For the most part, I try to keep the
- same call interface, and this should make updates *much* easier.
-
- * You can set a form variable value with the new "set" attribute
- for the [value ...] and [default ...] tags.
-
- Set the variable name to "Mike Heins" and do not return a value:
-
- [value name=name set="Mike Heins"]
-
- Set the country to "US", but only if not already defined, and return
- the value:
-
- [default name=country default=US set=1]
-
- New syntax only, for safety reasons.
-
- * Added a -r option to the "expire" script. When using GDBM
- sessions (and only GDBM) this will recover disk space and
- shrink a large session file.
-
-
-MiniVend 3.08 is a maintenance release, but as usual adds a few
-features:
-
- * Syntax of [search] tag much improved. Added auto
- search for loop tag, allowing specification with
- [loop search="se=searchstring/sf=searchfield"].
- Use of search profiles is improved.
-
- * Microsoft did not fix Excel in Office '97 as earlier
- reported -- its TAB-delimited exports still surround
- any field containing a comma with quotes. A new import
- parameter has been added to deal with this.
-
- * ProductFiles added to the list of directives updated
- with a locale change.
-
- * "display" option added to [item-accessories ...] tag,
- to display only the *label* for the selected option.
-
- * Radio and check box options added to [item-accessories ...]
- tag. These display checkbox or radio groups for options. Can
- also group boxes in tables, including columns if passed a
- numerical parameter.
-
- * Can now select options based on database field keyed
- on something besides item code.
-
- Fixes for:
-
- * MiniVend used MakeMaker to install some distributed copies
- of non-core Perl modules (and a modified Carp.pm). If you
- installed with the parameter UNINST=1 then it would remove
- the module. That is bad news, and it is fixed. The module
- Carp.pm was removed from the distribution, and other modules
- are installed only by copying if appropriate versions are
- not available, and are only installed in a private library
- directory.
-
- * Continuing "tar" problems with makecat. The system tar
- program is now used for UNIX machines.
-
- * Bad domain passing in a cookie. This should remove the
- last problems with proxy servers losing sessions, providing
- the secure server and regular HTTP server are in the same
- domain for cookie purposes.
-
- * Update of shopping cart caused loss of session only when
- in master item/sub-item mode. Fixed.
-
-MiniVend 3.07 is a major release adding complete POSIX-style
-I18N features and many other tag language enhancements.
-
- * Complete multiple currency sets based on locale. Uses
- standard POSIX definitions.
-
- * POSIX gettext/LC_MESSAGES style message display
- for multiple language capabilities. A script called
- localize is included which helps build Locale definitions.
-
- * Price number display greatly enhanced.
-
- * Sort lists now can specify a beginning entry
- and a length, allowing pageable browse lists. Previous
- versions needed to be done entirely in Perl. Demo
- includes example.
-
- * Simple demo now uses NewTags by default. Several
- deficiencies cleaned up. Locale example (French front
- page and currency) example given. Several additional
- examples given. Examples using deprecated features
- changed to use current features.
-
- * Added simple user login facility as an add-on module.
- documented in UserDB.pm and shown in the demo. This is
- also a useful example of how you can add your own extensions
- to MiniVend.
-
- * All iterative lists now have an [item-next] and [item-last]
- (or [loop-next] and [loop-last]) capability for exiting and
- skipping entries in loops.
-
- * PriceAdjustment now handles embedded MiniVend
- tags, allowing completely flexible product pricing.
-
- * OrderProfile and SearchProfile now can be specified
- in the page.
-
- * Cookies now set for every path and domain in Mall
- mode.
-
- It also fixes some bugs/deficiencies:
-
- * Static builds handle #name anchors when you use
- [pagetarget page#name].
-
- * Fixed simple demo so scratch directory 'tmp' gets
- created on new install.
-
- * Documentation corrections.
-
- * Search [more-list] did not work under Windows -- fixed.
-
-MiniVend 3.06 fixes some bugs with 3.05 and adds some features.
-
- * Catalog permissions configuration for multi-user,
- multi-catalog servers greatly improved.
-
- * Added [if ordered ...] back in, inadvertantly deleted
- in 3.05.
-
- * Added ! comparisons for [if ....][/if], [if-data ...],
- [if-field ...] and the like.
-
- * Made UserTag available globally in minivend.cfg.
-
- * Only call CPAN if it was previously used by somebody.
-
- * PriceAdjustment can now be absolute, where an
- adjustment value of =10.99 will set the price
- directly to 10.99. Previously the adjustment was
- only relative to the single price for the item.
-
- * Added new CONTINUE modifier to allow more flexible
- specification of long database fields during ASCII
- import. DITTO format allows you to add additional text
- on the next line, while UNIX accepts \ as a line
- continuation. This allows you to maintain very
- large description fields while still remaining within
- the 255 character limit of many databases and
- spreadsheets.
-
- * Added passed default to [default variable]
- tag, now can be [default variable passed-default].
-
- * We can't always use POSIX::strftime anymore because of
- bad RedHat 5.0 Perl release. 8-( A substitute routine is
- provided and should be selected if POSIX::strftime doesn't
- work. Instructions provided for making a good Perl, should
- build OK.
-
- * Added grouped items with mv_order_group. Using this,
- Sub-items can be tied to a master item placed on a
- form-based order. The first mv_order_item defined
- becomes the master, additional are sub-items. All
- sub-items are deleted when a master item is deleted
- from the cart.
-
- * Fixed path problems with database/search path
- resolution.
-
- * Fixed VendURL mangling when going to a SecureURL
- with a different SCRIPT_NAME.
-
- * [compat] [/compat] tag pairs are stripped from [old]
- pages.
-
- * Static pages were shown to all browsers -- now only
- shown to those which have given us back our cookie.
-
- * [loop ...] lists are now reliably nested with
- [loop with="-a" arg="A B C"] or [loop-a 1 2 3].
-
- * Tag end parsing fixed for [loop ...] and others that
- auto-interpolate.
-
- * Finally added a real debug facility, with multi-level
- control and in-page display. Messages are still crude,
- though, and user input is encouraged.
-
- * Errors during catalog configuration are now
- displayed to the console on startup.
-
- * Slightly refined [more-list] to accept a different
- border for selected and non-selected pages when using
- images.
-
- * Added error message in Windows install to prevent the
- large number of questions from users who try to install
- MiniVend without Perl 5.004 on the machine.
-
- * CYGWIN.DLL now installed in SYSTEMROOT/system, not just
- C:/windows/system.
-
- * Tested on Windows NT 4.0 x386.
-
-MiniVend 3.05 is a major update that adds the following:
-
- * Windows95/NT and UNIX versions unified, many changes
- to handle line-ending differences
-
- * SendMailProgram and EncryptProgram now accept 'none'
- as parameters, avoid the need for external programs.
-
- * Removed all autoloading options
-
- * Added rotate "floor"
-
- * Makecat program just a bit smarter about some things
-
- * No UNIX command dependencies
-
- * Removed sample demo from distribution, too outdated
-
- * Catalogs can be added online
-
- * Mode indicator file mode.{inet,unix} in MVROOT/etc
-
- * Removed final vestiges of DES encryption
-
- * Workaround for DBI <= 0.90 AutoCommit problem
-
- * Went to multi-README files
-
- Bug fixes include:
-
- * Numerous fixes to sql_search (mv_searchtype=sql)
-
- * Fixed tag_sort bug for multiple sorting of search lists
-
- * Fixed [tag sql] query [/tag] to match docs
-
- * Fixed missing Global variables
-
- * Fixed close_database, no more SQL disconnect warnings
-
- * Fixed bug in Windows file-based sessions
-
-MiniVend 3.04 is a minor release to fix bugs in 3.03:
-
- * If file test was failing on a Safe trap. Fixed.
-
- * PIPE databases did not work in 3.03 (only) -- they now
- work well even for searching.
-
- * Major bug in new parser fixed, now virtually every
- tag should be parsed by MiniVend in 'NewTags Yes'
- mode. Switching to the new parser is recommended,
- as new features will not be added to the old parser.
-
- * New [elsif ...] addition to [if ...] was not
- documented or announced.
-
- * Perl 5.003 should run MiniVend without changes.
-
- * Escape mechanism for values works properly.
-
- * [include file] tag added.
-
- * UserTag now accepts Interpolate option.
-
- * Other minor bug fixes.
-
-MiniVend 3.03 has many bug fixes and feature set improvements.
-
-There is one incompatible change:
-
- * If you are using Static builds, you must now define
- 'Static Yes' in the catalog.cfg file to get static
- pages to build or run. This was done to provide a
- single "on/off" switch for static builds.
-
-As well as adding the following features/fixes:
-
- * The new tag syntax is more reliable and trouble-free,
- and a UserTag directive allows user-defined tags. For example,
- you can do:
-
- UserTag caps Routine sub { return "\U@_" }
- UserTag caps HasEndTag
-
- and have "[caps]uppercase[/caps]" become "UPPERCASE".
-
- In addition, almost all old-style tags will be parsed
- properly by the new tag parser.
-
- * Sorting has been improved and regularized. All iterative
- lists may be sorted with the same syntax, and all may be sorted
- on any database field entry.
-
- [search-list]
- [sort products:category products:name:f]
- ...
- [/search-list]
-
- The above will sort a search return on two fields in
- the database -- and will work the same for shopping carts,
- loop lists, and [tag each products].
-
- There are unlimited levels of sort, and all sorts may individually
- have options for numeric, case-insensitive, and reverse. See the
- section SORTING in minivend.html.
-
- * Added [on-change name] tag to allow conditional nested search
- display.
-
- * Salestax bug fixed, 'default' now works.
-
- * AllowGlobal lets certain "trusted" catalogs define global
- subroutines. AdminSub restricts certain subroutine names.
-
- * ImageAlias does the same thing for MiniVend images that
- Apache/NCSA does with Alias.
-
- * A robot defense now allows you to limit the number of line
- items in the shopping cart or cut off access to a host that
- accesses a certain number of pages without at least one 30
- second pause. Implemented with OrderLineLimit and RobotLimit
- directives on a per-catalog basis, and the LockoutCommand
- directive as a global parameter.
-
- * SQL numerical types are now handled properly if you set the
- NUMERIC option in catalog.cfg, i.e.:
-
- Database products NUMERIC price
- Database inventory NUMERIC on_hand
-
- * The server will now fall back to UNIX mode only if the
- TcpPort (7786 by default) is occupied and it cannot bind().
- This does not apply if MiniVend was started in INET mode only,
- but there will now be a better log message indicating the
- server is stopped.
-
- * Started allowing a lower case POST method -- many browsers
- seem to violate the HTTP spec in that regard. This mitigates
- the common "interaction error" problem.
-
- * Fixed bug in CyberCash processing that allowed only the
- 'mauthcapture' mode.
-
- * Deleted SearchOverMsg directive -- you must now set
- mv_search_over_msg directly if you want to use it.
-
-MiniVend 3.02 adds full SQL support. In addition, several minor
-demo flaws have been polished, and some bugs in the new geographic
-shipping changes have been fixed.
-
-Changes include:
-
- * Full SQL support, including for ODBC, using the powerful
- DBI/DBD interface. It should operate on all DBI-compliant drivers -- it
- has been tested with MySQL, mSQL, Solid, ODBC, and PostgreSQL.
-
- * All database documentation greatly improved.
-
- * Geographic qualification for shipping works.
-
- * mv_credit_card_valid now returned as blank false value
- instead of 0 false value.
-
- * =true added to order profile checks, will pass on Yes|True|1
- and fail on anything else.
-
-MiniVend 3.00 is greatly changed from MiniVend 2.03, though catalogs
-should be almost completely compatible. The exceptions are one or two
-pricing and shipping database changes. In both cases, there is available
-backward compatibility.
-
-Changes include:
-
- * Installation has been changed to fit the Perl model
- of 'perl Makefile.PL; make; make test; make install'.
- You can also just type './configure' to perform this
-&nbs