Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

423 lines (292 sloc) 15.543 kb
Interchange 4.7.1 released 2001-03-28.
* Added ability to cascade mv_click statements, e.g.:
[set delete]
[page href="@@MV_PAGE@@"
"]Delete this</A>
* Added "clone item" to item pages. Allows you to clone an existing item
for purposes of adding new ones.
* Re-instituted multiple-table deletes for deleting an item. It will look
in __UI_ITEM_TABLES__ and delete records.
* Added clone_set and clone_row primitives in Data modules. Allows you to
copy a record except for certain fields.
* Added [item-options] tag which automatically finds and presents options
based on the options table. The table name is settable based on Variable
MV_OPTION_TABLE. Fields can be remapped with MV_OPTION_TABLE_MAP.
* Now can use "variant" items which are based on a base SKU but set in an
options table (same as the one for [item-options]). Changed behavior of
[item-field ...] to look in the code first, then the base SKU, for the
relevant product databases. [item-data ...] always works off of the
relevant base SKU.
* Price looks at variant code first, then the base SKU if that is zero;
or it can be made to do so with CommonAdjust.
* Fully modular options with cascade.
A UI module allows editing and definition of the modular options,
including "phantom" options that act to group additional items.
When an item is defined as modular upon order, it can have accompanying
it a series of other items in the same order group. The price of the
options is not shown, but is added to the price of the master item.
* Added [item-sku] tag to get base SKU for a variant.
* Added fall-through for sku to [item-field].
* Rerouted [item-data ...] to always point to sku, not the code for the
variant. (This will mean inventory has to be checked via a [data ...]
tag when variants are in use.)
* Added new [control] and [control-set] tags to set series of Scratch-
like option areas. Used for components in UI content editing.
* Added [mail ...]MESSAGE[/mail] tag to the core. Works with update_data
routine to send emailed notifications of database changes. Otherwise
works like combination of [email ...] and [email-raw] ... usertags.
* added [PREFIX-options] to get and parse options of all types.
* New [profile ...] tag allows you to set directives normally set in
catalog.cfg with a tag in the session Autoload. This is really the
same as the current Autoload, except it is automatic on login/logout,
faster, and leaves Autoload for user user.
[profile name=profile_name tag=tag set=1 run=1 restore=1]
name name of profile. Needed unless restore=1.
tag normally not set, defaults to "default". Matches what is
the UserDB profile.
run run profile code only, don't save.
set set profile for future only, don't run.
restore remove the current profile
[profile name] will run and set by default.
* UserDB now can set a price_level via the [profile ...]
tag routine. Set this in catalog.cfg for dealer pricing:
Profile dealer CommonAdjust <<EOR
Profile dealer NonTaxableField nontaxable
Quotes are needed (as in all locale-style directives) unless you want
to do a full hash set like:
Profile dealer <<EOR
CommonAdjust => q(
NonTaxableField => 'nontaxable',
which is also supported.
* Added SDBM database option for those poor Solaris folks.
* Added MINIVEND_ALLDBM environment check to prevent using unneeded
modules (takes more memory).
* Added [table-editor ...] tag which easily produces editable tables.
* Can edit the hash address books in userdb.
* Safe to place in user page with auto_secure=1. Generates a
[scratch mv_data_enable] matching the table:col1,col2,col3:key
you passed it.
* Reads from CGI array or from parameters.
* Automatically reads table info from mv_metadata if available.
* The following can be overridden compared to mv_metadata:
extra (JavaScript)
* Can auto-check with order_profile definitions.
* Can append or prepend your additional form information.
* Can generate an email copy of the data submission for review. (TBA)
Ready for a form widget? 8-)
* Added new mv_form_profile variable that sets profiles with any action.
Designed for easy checking of variables in submits.
* Speeded import of DBI databases by placing numeric pointers in an
array at initial config time.
* Added ability to set defaults for empty fields at import and record
creation time, regardless of the underlying DB, with:
Database userdb DEFAULT password=please_change
Operates exactly like COLUMN_DEF.
* Added database attributes
and logic to allow fallback to a second database server.
If you have ALTERNATE_DSN (and possibly ALTERNATE_USER and
ALTERNATE_PASS) defined for a table, and Interchange is unable to get
a database connection to the primary DSN, it will attempt to connect to
and use the ALTERNATE_DSN.
These are array values, so you can define any number of fallbacks. The
same approach works for LDAP databases except ALTERNATE_LDAP_HOST and
other appropriate parameters are set.
* Added interchange.cfg directive HotDBI, which takes a catalog name which
should use persistant database connections. When a connection is
persistent, it will be maintained and cached without reconnecting every
page request.
* Added Inet_mode and Unix_mode directives to interchange.cfg, which allows
you to guarantee the mode in which the server comes up.
* New filters:
mime_type: returns mime type based on file extension
compress_space: strip trailing/leading and s/\s+/ /g
checkbox: set value to "" if not defined in CGI space
* Added <optgroup> support to tag_accessories select build. Allows grouping
of options. When an option value is ^\s*~~something~~\*$, it is read as
an <OPTGROUP LABEL="something">, and options can be grouped per HTML 4.0.
* Added "tz" option to time/tag time, allowing display of time for a
particular time zone. Specified in the usual EST5EDT form.
* FileDatabase catalog.cfg directive now specifies a table:field which can
be used to store pages and other files. Will allow a catalog without any
system files stored on disk.
* Require directive now can require Perl modules, as in:
Require module SQL::Statement
* New Suggest directive is a non-fatal form of Require, which generates a
warning message but allows catalog to run.
Suggest module Business::UPS WWW-based UPS routines will not work!
* Bugfix: chaining character in CommonAdjust wrongly appended to atom
in some situations.
* ProductFiles was not resetting Vend::OnlyProducts when a locale change
was done. Caused [PREFIX-field ...] to fail.
* Variable MV_DEFAULT_SEARCH_TABLE now works for st=db searches like
Variable MV_DEFAULT_SEARCH_FILE works for text searches.
* Added [tree] tag to walk tree-based lists. It produces hash-based rows
which are iterated ala item-list (the hash-based list iterator). Sets
some information in the row. See the tag reference for behavior.
* Made tag_calc routine indirectly callable from within embedded Perl code
by doing straight eval when already in Safe compartment.
* Made [if-PREFIX-(data|field|modifier|param|pos) ...] nestable by checking
for nesting conditions in the run list and then generating integer
additions to the tags.
* There is a "links" type for the [accessories ...] tag. Builds a series
of clickable links based on an option list. Accepts the "form" and "href"
parameters to allow setting of the initial form, otherwise just generates
a link to the current page with the attribute passed as a CGI argument.
* Added "password" widget to [accessories ...].
* Added new [PREFIX-tag ...] which allows extending the tags that are
interpreted as a part of a PREFIX-list. Example in tag_address, called
with [PREFIX-tag-address]. Full attribute support and nesting.
* Added attr_list tag which allows tagging of attribute lists in hash-based
templates. Allows you to generate complex templating without needing to
have a complete search. Example of use is in tag_address_list.
* Added support for modular items, sets mv_mp parameter to *parent* item
of the item ordered, and mv_mi to the item group of the main item.
* Made failure to pass all quantities to quantity update (refresh)
non-fatal. Will update them if mv_update_quantity=1.
* Form profiles: added new format check routines, largely intended to
work with new mv_form_profile capability:
* variable=regex "EXPR" "Error message"
Checks for compliance with regex EXPR. If you wanted
to ensure two word-only characters were put in a "name"
variable, it would be:
variable=regex "^\w+\s+\w+$" "We need first/last name"
* variable=length MIN-MAX "Error message"
Checks for length between required MIN and optional MAX characters.
username=length 4-10 "Username must be between 4 and 10 characters"
* variable=unique TABLE
Checks to see that a key in a table (presumably to be inserted) is
unique. Errors out if key exists.
* Form profiles: Added new profile chaining capabiility. Can place &or or
&and on a line between different check parameters and create simple
* Form profiles: Reference to check can now be passed to the routine, so
you can check CGI stuff only for mv_form_profile.
* Form profiles: Fixed problem with second passing check on a variable
overwriting the error message from a first failing routine.
* Can now use - and _ interchangeably in parameter names, i.e.
[value-extended name=foo file-contents=1]
is the same as
[value-extended name=foo file_contents=1]
where it would have caused an error before.
* Bug fixes to make mv_sql_query work properly. There was a
push_spec('nu' ...) call which was in the wrong place, making numeric
hash all out of sync.
* Remove last dependencies on $! =~ /Some English error/ and move
to Errno settings, as in $!{EAGAIN}, etc.
* Add pragma to strip leading white space from HTML output. If you put
[pragma strip_white] to page, there will be no leading white space.
* Added ability to have a PRELOAD file for database imports, where a
table is parsed for field names and data before the normal file in
ProductDir. This allows adding fields without user intervention when
the database type is internal. Mostly useful for mv_metadata.
* Support for clone_row and clone_set, which clone a single row from an
existing one or clone a set of rows based on a common key.
* Added support for autonumbering. For SQL, the ability will be given to
override the autonumber routine with one set up by the capabilities.
Figured out solution to nagging File::CounterFile problem by always
initializing a counter object when database is opened in writable mode.
* Allow tables to have the same underlying name in their own database
with $config->{REAL_NAME}. For example, if you have two MySQL databases
each with a "products" table, you can set them up:
Database products products.txt dbi:mysql:construct1
Database prodstoo prodstoo.txt dbi:mysql:construct2
Database prodstoo REAL_NAME products
This should work fine in almost all cases.
* Added DEFAULT parameter to allow database-independent setting of
defaults. Particularly useful in avoiding NOT NULL errors from DBs that
don't have a DEFAULT setting in create(). This also works when doing
[data table=tab col=col key=key value=val] on a non-existent row.
* Improved speed of table open by reducing number of tests.
* Improved speed of import by pre-setting numeric array and no longer
requiring tests for each field on each row.
* Debian packaging files added (supplied by Stefan Hornburg
* Usertag formel added which composes form elements and signals errors
(supplied by Stefan Hornburg <>).
* Rewrite image background paths in <table>, <tr>, <td>, and <th> tags
according to ImageDir/ImageSecureDir by default. (Removed pragma
substitute_table_image that was just added in 4.6.2.) Set pragma
no_image_rewrite to disable all image path rewriting.
* Split RPM into two packages: base Interchange and foundation demo
catalog skeleton. Should make RPM upgrading safer.
* Removed There's now a normal ictags document instead.
* Move UI menus into icmenu database.
* Add ItemAction to map a subroutine to alter items every time toss_cart
is run, i.e. after an add or refresh.
Calling syntax is $sub->($item_reference), return value is not used.
* Add a new directive "Limit". It is designed to hold limits for
certain things. Implemented to begin with:
Limit chained_cost_levels 20
Limit cart_quantity_per_line 10000
* Rework server to allow preforking daemons, similar to Apache.
New global directives:
PreFork yes/no
StartServers number (0: old way; 1 or more: exact number to allow)
* New SOAP protocol support allows two-way communication with all sorts
of other web "objects". Features:
- Catalog and session ID are embedded in proxy call. This avoids
having to do fancy gyrations with the SOAP envelope.
- Allows most any tag to be called, with nearly the same syntax
as with embedded perl on IC.
- Embedded Perl (and variants like [item-calc] and [item-exec]
are not allowed by default, but can be enabled with SOAP_Enable.
- Can specify the ID, or accept one from Interchange.
- Can get and put entire Values, Scratch, and Session structures.
Documentation for using SOAP is forthcoming.
* Add mv_like_field and mv_like_spec to search specifications, designed
to filter SQL (only!) searches with
mv_like_field like 'mv_like_spec'.
This is a stackable field/spec set like mv_search_field and
mv_searchspec, and will eliminate any fields with empty mv_like_spec
Checks the known_capability to see if UPPER_COMPARE is set for that
database, and uses (pseudo-code) "UPPER($col) like "\U$spec" if that
is the case.
* Add known_capability UPPER_COMPARE (set for Pg and Oracle to begin
with) to allow upper-case transforms for case-insensitive compares.
* Add ability to call custom UserTag or other ITL in Vend::Cfg->{SalesTax}.
* Allow passing of extra parameters to button usertag with $opt->{extra}.
* Add beginnings of transaction support. New [flag type=transaction table=x]
allows you to open (write implied) a table for transactions. Will have no
effect on tables that don't support it, but will open tables that do
support it in non-AutoCommit mode. Sequence is:
[flag type=transactions table="transactions orderline"]
[import ...] or any other db update routines [/import]
[flag type=commit table="transactions orderline"]
Tested only on PostgreSQL at this point.
* Add ability to read files from a database instead of the filesystem.
Interchange 4.7.0 not publicly released.
Jump to Line
Something went wrong with that request. Please try again.