This repository has been archived by the owner on Dec 19, 2023. It is now read-only.
/
WHATSNEW
1265 lines (916 loc) · 47.9 KB
/
WHATSNEW
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
W H A T ' S N E W
MiniVend 3.14-4 adds file globbing to #include lines.
MiniVend 3.14-3 is a simple bug-fix release close on the heels
of the short-lived 3.14-2 (session id stuff not quite fixed
completely, forgot to transfer one line of code).
* Removes "index" warnings that appear in 5.004 perls.
* Added code to bypass retired IDs in session
MiniVend 3.14-2 is a simple bug-fix release close on the heels
of the defective 3.14-1 (session id stuff not really fixed).
* Bug in session naming REALLY fixed, one which could cause users
information to be displayed to others.
Keeps a DBM file of retired session ids.
If you use WideOpen, you should change your catalog.cfg
file to read:
SessionExpire 15 minutes
MiniVend 3.14-1 is a simple bug-fix release.
* Bug in session naming fixed, one which could cause users
information to be displayed to others.
If you use WideOpen, you should change your catalog.cfg
file to read:
SessionExpire 15 minutes
* Debug mode somewhat fixed (thanks to Stefan Hornburg)
* [page form=...] fixed.
* Now correctly reads Apache httpd.conf parameters with
surrounding quotes.
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