]> git.imager.perl.org - bse.git/blob - site/docs/bse.pod
fce5343dbab5183eadbc9ad33e632428dd2478b7
[bse.git] / site / docs / bse.pod
1 =head1 NAME
2
3 BSE - an engine for simple magazine style WWW sites.
4
5 =head1 DESCRIPTION
6
7 BSE is an engine for creating simple magazine type web sites.
8
9 Maybe I'll add some other bits here.
10
11 =head1 CHANGES
12
13 =head2 0.14_33
14
15 =over
16
17 =item *
18
19 user.pl now has an C<a_orderdetail> target which accepts the order
20 number in C<id>.  The order must belong to the currently logged on
21 user to be displayed.
22
23 =item *
24
25 affiliate.pl will no longer display pages for disabled users
26
27 =item *
28
29 the image manager will now display images as thumbnails if configured
30 to do so.
31
32 Currently the only imaging tool that can be used for the thumbnailing
33 process is Imager.
34
35 This adds the thumbimage, ifThumbs and ifCanThumbs tags to the article
36 editor pages.
37
38 See thumbnails.pod for more information.
39
40 =item *
41
42 localinst.perl (run with make testfiles) no longer deletes the content
43 of your htdocs/images directory.
44
45 =back
46
47 =head2 0.14_32
48
49 =over
50
51 =item *
52
53 logging out now clears the shopping cart
54
55 =item *
56
57 after logging in when you failed to add an item requiring logon now
58 refreshes back to adding the item again (#434)
59
60 =item *
61
62 setting [affiliate].subscription_required to an affiliate text id
63 should now work
64
65 =item *
66
67 trying to add a subscription product while not logged in now refreshes
68 more appropriately after you logon.
69
70 =item *
71
72 checks for renew/start only subscription products are now done when
73 you attempt to add the product to your cart.
74
75 =item *
76
77 SiteUser.pm was missing an import of sql_add_date_days(), which caused
78 a 500 error.
79
80 =item *
81
82 the subscription expiry date functions were checking the wrong field
83 name for the expiry date.  This caused problems when trying to add a
84 renewal product to the cart, amongst other things (#435)
85
86 =item *
87
88 the userpage now has access to a subscriptions iterator, includes
89 access to the subscription fields, and the ends_at, started_at and
90 max_lapsed status fields.  This only shows subscriptions the user is
91 subscribed to. (#436)
92
93 =item *
94
95 the options page now has a ifSubscribedTo tag.  This accepts one
96 parameter which is the text id of the subscription.
97
98 =item *
99
100 the subscription order summary on the subscription detail page now
101 multiplies the period by the number of units bought
102
103 =back
104
105 =head2 0.14_31
106
107 =over
108
109 =item *
110
111 you can now configure a required subscription for affiliates, see the
112 documentation for C<subscription_required> in L<config>.
113
114 =item *
115
116 the product tag on the checkoutfinal page now accounts for database
117 NULL values
118
119 =item *
120
121 the subscription detail template didn't display the usage field
122 correctly
123
124 =item *
125
126 the delete subscription link was incorrect
127
128 =item *
129
130 the delete subscription confirmation template wasn't supplied
131
132 =item *
133
134 the subscription edit/add templates were missing a closing </tr>
135
136 =item *
137
138 removed debug code from Squirrel::Row that was sending
139 C<add>I<classname> to the error log.
140
141 =item *
142
143 the test for whether a user was subscribed was incorrect.
144
145 =item *
146
147 the number of units of a product bought for a subscription product was
148 ignored, now 2 units of a 2 month sub product will act as 4 months.
149
150 =item *
151
152 it is now possible to include other config files from bse.cfg, see
153 [includes] in C<config.pod> for more information.
154
155 =item *
156
157 the doclink[] and popdoclink[] tags would not be removed from the
158 search page excerpts if the second parameter was present but empty.
159
160 =item *
161
162 more recent code using the m parameter could crash if the script was
163 passed two m parameters.
164
165 =item *
166
167 a method rename during development meant that some code was calling a
168 method that didn't exist, causing a 500 error.
169
170 =item *
171
172 if you supply an 'r' parameter that defines an 'm' parameter to
173 subadmin targets the code will no longer add it's own 'm' parameter.
174
175 =item *
176
177 DevHelp::Validate now includes some documentation of its built-in
178 rules.
179
180 =back
181
182 =head2 0.14_30
183
184 The basic processing for subscriptions is now done.
185
186 =over
187
188 =item *
189
190 added max_lapsed to the order_item table, to make sure subscription
191 expiries remain consistent.
192
193 =item *
194
195 the bse_subscriptions table was commented out for the last release (it
196 worked here because the table was created before I commented it out
197 <sigh>)
198
199 =item *
200
201 ordering items with a subscription now results in the
202 bse_user_subscribed table being updated, and hence most of the code
203 which checks if a user has subscribed now has something to check
204
205 =item *
206
207 the users iterator on the subscription details page now works
208
209 =item *
210
211 subadmin.pl now has a target to update all users subscription expiry
212 dates from their orders.
213
214 =item *
215
216 messages usually weren't displayed from a refresh by subadmin.pl, when
217 they should have been
218
219 =item *
220
221 modern iterators could cause 500 errors (bad parameter list
222 internally)
223
224 =item *
225
226 modern iterators could generated undefined value warning in the logs
227
228 =item *
229
230 switched off debugging for Squirrel::Template, which should reduce log
231 pollution considerably.
232
233 =back
234
235 =head2 0.14_29
236
237 =over
238
239 =item *
240
241 I'm planning on making all base BSE permission checks use a "bse_"
242 prefix to avoid conflicts with add ons like nPort.  The permission
243 checks should all now allow checks against bse_foo when only the foo
244 permission has been granted.
245
246 This should allow templates to be updated to use the C<bse_> prefix.
247 Note that the permission sets in bse.cfg must continue to use the
248 non-C<bse_> names for now.
249
250 =item *
251
252 most of the structure of subscriptions has been done, provided for
253 templating and testing.
254
255 Note in particular that the users iterator on the subscription details
256 page will return an empty list for now.
257
258 =item *
259
260 0.14_24 added ".html" to the end of "link title" links, this broke
261 regeneration.  This release changes that to "_html" at the end of the
262 links, which shouldn't break regeneration and will hopefully still
263 allow google to index them.
264
265 I'll probably preserve the current behaviour if we add a mechanism for
266 setting the content filenames, since unlike filename changes this
267 preserves the link, so a title change won't break links from external
268 sites.
269
270 =item *
271
272 added site/docs/future_plans.pod to the distribution
273
274 =back
275
276 =head2 0.14_28
277
278 Release in preparation for subscriptions implementation
279
280 =over
281
282 =item *
283
284 deleting site user images didn't work - the SQL used to remove the
285 record was incorrect
286
287 =back
288
289 =head2 0.14_27
290
291 =over
292
293 =item *
294
295 it's now possible to associate images with a site user (member), these
296 are editable both by the admin and the user themselves.
297
298 They work the same as the nport member images.
299
300 By default they are stored in the same location as uploaded files
301 (defaulted in the config file.)
302
303 Don't forget to change your custom admin edit site user template to
304 use the right enctype for the form.
305
306 =item *
307
308 you can now use siteuser images on the affiliate page.
309
310 =item *
311
312 SiteUser.pm was still using Orders rather than BSE::TB::Orders <sigh>
313
314 =item *
315
316 affiliate_name can now be set during registration or during addition
317 in the admin interface.
318
319 =item *
320
321 the require_affiliate_name flag in the config file is now supported
322 (it wasn't necessary for the original application)
323
324 =item *
325
326 [site users].display_affiliate_name is now used in validation errors
327 for the affiliate name field.
328
329 =back
330
331 =head2 0.14_26
332
333 =over
334
335 =item *
336
337 the referer checks for affiliate.pl extracted the Referer header
338 domain incorrectly.
339
340 =item *
341
342 the order affiliate_code is now accepted as a CGI parameter during
343 purchase if it isn't set in the session.
344
345 =item *
346
347 the order siteuser_id field wasn't being set
348
349 =item *
350
351 added an affiliate_name column to the siteusers table.  This value is
352 required to be unique if non-empty and may only contain alphanumeric
353 characters.  You will need to add this to any custom templates.
354
355 =item *
356
357 affiliate.pl now accepts alternatives to the id parameter:
358
359 =over
360
361 =item *
362
363 lo - the logon name of the user
364
365 =item *
366
367 co - the affiliate name of the user
368
369 =back
370
371 =item *
372
373 some prep work for site user images
374
375 =back
376
377 =head2 0.14_25
378
379 =over
380
381 =item *
382
383 a few modules were still using Orders/OrderItems instead of
384 BSE::TB::...
385
386 =item *
387
388 work around a discrepancy in the way mysql handles dates, step child
389 records marked to be released on a given date should now be released
390 on that date rather than the next day
391
392 =item *
393
394 added affiliate.pl, which can display an affiliate page or set the
395 saved affiliate code.
396
397 =item *
398
399 extra fields have been added to the site users table to allow for
400 custom data on the affiliate page.
401
402 =item *
403
404 a new debug flag dump_session has been added. if this is true then a
405 data dump of the session hash is performed after it is retrieved from
406 the database.
407
408 =item *
409
410 some of the order processing code checked incorrectly for
411 subscriptions (which don't exist yet anyway).
412
413 =back
414
415 =head2 0.14_24
416
417 This release includes some structural changes to article editing,
418 please test before deploying it.
419
420 =over
421
422 =item *
423
424 doing a sort of all children wouldn't include the unreleased
425 (step)childen in the sort (#389)
426
427 =item *
428
429 with access control enabled, using the reorder.pl script while not
430 logged (including due to a cookie timeout) on would produce a server
431 error (#419)
432
433 =item *
434
435 the Orders / Order / OrderItems / OrderItem classes are now
436 BSE::TB::Orders / BSE::TB::Order / BSE::TB::OrderItems /
437 BSE::TB::OrderItem, to try to use a more consistent naming system and
438 clean up the top level namespace
439
440 =item *
441
442 the prePurchase target has been disabled in shop.pl, since it's
443 effectively unmaintained, and probably completely broken
444
445 =item *
446
447 updated the document list of session values in BSE::Session.
448
449 =item *
450
451 defaults (both internal and configured) are now used to set
452 article/product fields on creation, this should allow simplified
453 creation templates to omit fields that don't need to be explicitly set
454
455 =item *
456
457 the warning about $Text::Wrap::columns only appearing once should
458 disappear
459
460 =item *
461
462 a shipping_cost column has been added to the order table.  This is not
463 set by BSE at all yet, but is available for use by custom order save
464 code.
465
466 =item *
467
468 some fields and code have been added to support subscriptions (no, not
469 the newsletter stuff)
470
471 =item *
472
473 removed some debug dump code from the shop
474
475 =item *
476
477 "link title" links now include ".html" at the end to allow Google to
478 index them
479
480 =item *
481
482 some preperatory work has been done to handle affiliates and
483 subscriptions
484
485 =back
486
487 =head2 0.14_23
488
489 =over
490
491 =item *
492
493 differences in whether CR chars are passed in line separators could
494 cause formatting problems with ##/**/%% lists in body formatted text
495
496 =item *
497
498 a ##, %% or ** which wasn't at the beginning of a line could be
499 treated as part of a formatted list
500
501 =back
502
503 =head2 0.14_22
504
505 =over
506
507 =item *
508
509 the logon page used the user side help icons (#371)
510
511 =item *
512
513 the admin user and admin site user pages used the user side help icons
514 (#373)
515
516 =item *
517
518 the change password page used user side help icons  (#378)
519
520 =item *
521
522 the admin logon page now accepts an m parameter
523
524 =item *
525
526 in general, moved the common admin tags call after the common basic
527 tags call so that admin tags (like the admin help icon) replaces the
528 basic help icon.
529
530 =item *
531
532 remove blank lines from the error messages produced on the admin user
533 administration pages (#382)
534
535 =item *
536
537 a very rough attempt at changes to support UTF-8 content has been made.
538
539 Don't rely on this.
540
541 =item *
542
543 previously, if an error occured in producing a template that wasn't a
544 template not found error, while using an alternate template, a 500
545 error would be produced with no message in the error_log.  Now an
546 error page is produced, with the message sent to STDERR (and hence to
547 the error_log).
548
549 =item *
550
551 BSE::DB::Mysql no longer reports that it found SQL in the database.
552
553 =item *
554
555 when link titles were enabled they were being produced twice.
556
557 =item *
558
559 added the <:today:> tag - returns the current date, by default
560 formatted as "dd-mm-yyyy", but can be reformatted as per the <:date
561 ...:> tag, for example <:today "%d/%b/%Y":>
562
563 =item *
564
565 added the <:arithmetic ...:> tag.  Any text [I<word> ...] text in the
566 argument is replaced with the corresponding tag value and the final
567 result is then evalled.  Do not ever use [cgi ...] values or any other
568 unvalidated data with this tag, to avoid security issues.
569
570 =item *
571
572 the <:sorthelp ...:> tag now seperates the returned URL arguments with
573 &amp; instead of just & to produce correct HTML.
574
575 =item *
576
577 the url tag now generated absolute URLs in subscriptions
578
579 =back
580
581 =head2 0.14_21
582
583 =over
584
585 =item *
586
587 non-lower-case link[] commands in subscription body text was causing
588 500 errors, (doclink[] with unknown article names/ids could cause the
589 same issue)
590
591 =item *
592
593 the <:help file entry:> tag can now be used in all templates, and
594 optionally takes a style argument, with the default style depending on
595 context.  This tag is replaced as pregeneration time for pregenerated
596 pages.
597
598 In user pages (including the admin version of article pages) the style
599 defaults to "user".
600
601 In admin pages the style defaults to "admin".
602
603 The style chosen can select a template, and change icons and path
604 depending on the configuration file, see [help style ...] in
605 L<config.pod>.
606
607 =back
608
609 =head2 0.14_20
610
611 =over
612
613 =item *
614
615 BSE::Mail::* now accept a bcc address parameter.  This is intended for
616 use by nPort.
617
618 =back
619
620 =head2 0.14_19
621
622 =over
623
624 =item *
625
626 image[...|url] was HTML encoding the url twice.
627
628 =item *
629
630 added an output_result() method to BSE::Request.  This is currently a
631 shim around BSE::Request->output_result(), but it may change in the
632 future.
633
634 =item *
635
636 added the <:oldi ...:> tag, for use on any dynamic page
637
638   <:oldi fieldname index func funcargs:>
639
640 This is used for extracting the correct previously entered value for a
641 multi-value field.
642
643 =item *
644
645 the default <:old ...:> tag was ignoring the fourth and subsequent
646 parameters, for example, if the tag was:
647
648   <:old fieldx taga arg1 arg2:>
649
650 only arg1 was being passed to taga.
651
652 =back
653
654 =head2 0.14_18
655
656 =over
657
658 =item *
659
660 site/util/mysql.str hadn't been updated to the new format
661
662 =item *
663
664 added some support code for use in nPort.
665
666 =back
667
668 =head2 0.14_17
669
670 =over
671
672 =item *
673
674 makeIndex.pl was passing in incorrect parameters in a few places to do
675 with article formatting
676
677 =item *
678
679 added the poplink[] and popdoclink[] a body text tags
680
681 =item *
682
683 the link[] tag now uses the URL as the link title if no title is
684 provided
685
686 =item *
687
688 the show_register target of user.pl now accepts a C<_t> argument as a
689 template selector.
690
691 =back
692
693 =head2 0.14_16
694
695 =over
696
697 =item *
698
699 upgrade_mysql.pl now takes a -i filename for the extra table
700 structures to be installed.  A -h for help option was added too.
701
702 =item *
703
704 the format of the database structure file for upgrade_mysql.pl has
705 changed, to allow for column types containing commas (like
706 decimal(9,2)).
707
708 =item *
709
710 tbe table[htmloption="value" ... ] form of the table body tag no
711 longer HTML escapes the options. (#348)
712
713 =item *
714
715 one of the changes to use the new formatter for summaries mixed up an
716 argument order, breaking the <:summary ... :> tag (#347)
717
718 =item *
719
720 fixed some problems with the new sorting features in reorder.pl.
721
722 =item *
723
724 BSE::DB::Mysql will now attempt to search the sql_statements table for
725 any SQL needed that isn't found in its internal table.  This is
726 intended for use by external applications using BSE's database support
727 tools, specifically for the nport project.
728
729 =back
730
731 =head2 0.14_15
732
733 This adds several destabilizing changes, test before using in any
734 production setting.
735
736 =over
737
738 =item *
739
740 you can now specify that BSE uses the configured secure URL, the
741 normal URL or a separate admin base URL for access to administrative
742 functions.  The action parameter on any custom admin/logon.tmpl should
743 be changed to include the new <:adminbase:> tag.
744
745 =item *
746
747 reorder.pl now accepts a more sophisticated C<sort> parameter, it can
748 now be a comma separated list of fields to sort by, most significant
749 at the front.  Any unknown fields are ignored.  You can put C<-> in
750 front of any field name to sort that field in reverse.
751
752 =item *
753
754 the image[] and gimage[] tags now take a fourth parameter which can
755 either be a simple class name (all alphanumeric), a set of parameters
756 to the C<padding:> style command, or actual CSS style commands.
757
758 =item *
759
760 lastModified is now a datetime rather than a date, be sure to run
761 upgrade_mysql.pl
762
763 =item *
764
765 applied a change to the default table mapping from extension to MIME
766 content type, sent in by Adrian.
767
768 =back
769
770 =head2 0.14_14
771
772 =over
773
774 =item *
775
776 added the style[] body text tag
777
778 =item *
779
780 doclink[], class[] and style[] are now removed correctly from summary
781 and excerpt text.
782
783 =item *
784
785 the hr[] body tag now correctly uses C<size> instead of C<height>.
786
787 =item *
788
789 moved the custom_class() function to the new BSE::CfgInfo class.
790
791 =item *
792
793 first steps towards administration via the secure URL (or some other
794 base URL)
795
796 =item *
797
798 the <:admin:> tag can now produce output based on a template.
799 <:admin:> in an article template uses C<admin/adminmenu/article.tmpl>,
800 <:admin:> in a product template uses C<admin/adminmenu/product.tmpl>,
801 <:admin:> in a catalog template uses C<admin/adminmenu/catalog.tmpl>,
802 <:admin foo:> uses C<admin/adminmenu/foo.tmpl>.
803
804 =item *
805
806 sorting the site user list by id should now sort numerically rather
807 than stringwise.
808
809 =item *
810
811 You can now you %% instead of ## in body text for an alphabetical
812 rather than numerical ordered list
813
814 =back
815
816 =head2 0.14_13
817
818 =over
819
820 =item *
821
822 reworked the doclink[] changes so an article didn't need to be
823 supplied to the formatted.  This fixed the <:bodytext ...:> tag.
824
825 =item *
826
827 word-wrapping in the text version of body text for subscriptions would
828 move the last word of a multi-line paragraph onto its own line,
829 whether it needed to be or not.
830
831 =item *
832
833 the way links appear in the text version of body text, and the link
834 list at the end can now be customized through the configuration file,
835 see the documentation on I<text_link_inline>, I<text_link_list> and
836 I<text_link_list_prefix> in config.pod for more information.
837
838 =item *
839
840 handle [] inside body text tags a little more intelligently.  We
841 assume they are balanced, so b[foo [1]] will do the right thing, but
842 b[foo [] won't.
843
844 =back
845
846 =head2 0.14_12
847
848 =over
849
850 =item *
851
852 added doclink[] body tag
853
854 =item *
855
856 cookie generation is now centralized to prevent differences in cookie
857 generation from causing problems.  This won't help with certain
858 configuration issues, which you'll need to fix yourself.
859
860 =item *
861
862 allow files not marked for sale, and listed in an ordered item to be
863 downloaded by a user from the userpage.
864
865 =item *
866
867 order files listed for an order on the userpage by item and display
868 order instead of alphabetically
869
870 =item *
871
872 filenames for uploaded files with non-alphanumeric characters are now
873 handled a bit differently - non-alphanumerics are now replaced with
874 '_' and then duplicate '_' are removed.
875
876 =item *
877
878 userpage base pages are now generated with an absolute link field to
879 force absolute article URLs to be generated
880
881 =item *
882
883 the text version of emails in subscriptions now includes the URL at
884 the bottom of the body text, with a bracketted number at the original
885 text
886
887 =item *
888
889 the edit member page now links to a list of orders for that user (if
890 any)
891
892 =item *
893
894 the order detail page now links to the user's order list and their
895 edit page.
896
897 =back
898
899 =head2 0.14_11
900
901 =over
902
903 =item *
904
905 logon.pl still required mod_perl.
906
907 =item *
908
909 subscription messages were being sent to subscribed but disabled
910 users.
911
912 =item *
913
914 the search results page tags are now XHTML compatible.
915
916 =item *
917
918 you can now set pp=-1 on the member list page to list every user.
919
920 =back
921
922 =head2 0.14_10
923
924 =over
925
926 =item *
927
928 the stepkid tag would sometimes result in a warning in the web server
929 error log
930
931 =item *
932
933 the templater would produce a warning from a <:switch:> tag under perl
934 5.8.
935
936 =item *
937
938 the installer while now set the #! line of scripts based on the "perl"
939 configuration option in test.cfg.
940
941 =item *
942
943 some scripts would produce compilation errors when run under a perl
944 without mod_perl installed.
945
946 =item *
947
948 the implementation top/bottom left/right image placement has changed.
949 When you select a "bottom" option the images are simply placed as if
950 they were present in reverse order.  This means that the image urls
951 are now used to form links.
952
953 =item *
954
955 gen.pl could produce a compilation error in some circumstances.
956
957 =item *
958
959 the telephone field is now actually required on checkout.
960
961 =item *
962
963 if the user options form included the email address but not the
964 subscriptions list and the user changed their email address, the
965 confirmation email wasn't being sent.
966
967 =item *
968
969 the <:ifItemAvail:> tag wasn't returning true for files that don't
970 require payment
971
972 =item *
973
974 spaces are now preserved in uploaded filenames, as underscores.
975
976 =back
977
978 =head2 0.14_09
979
980 =over
981
982 =item *
983
984 the <:switch:> template construct had required there be some text
985 between "<:switch:>" and the first case, this is no longer necessary.
986 You still might want to keep a newline there to make it easier to pick
987 out cases
988
989 =item *
990
991 the list of possible archive parents for subscriptions is now sorted
992 by title (#295) We now select the highest id article by default when
993 creating a new subscription, presuming it was created to store an
994 archive.
995
996 =item *
997
998 the <:recipient_count:> tag is now available on the subscription send
999 form, and the Send link is now always available on the subscriptions
1000 list. (#269)
1001
1002 =item *
1003
1004 the subscription send action, if it somehow is submitted with no users
1005 subcribed, will no longer archive an article and update the most
1006 recent send date.  This can happen if the last user unsubscribes while
1007 the administrator is composing their newsletter.
1008
1009 =item *
1010
1011 the class[] body text tag now nests correctly when spanning over
1012 paragraphs
1013
1014 =back
1015
1016 =head2 0.14_08
1017
1018 =over
1019
1020 =item *
1021
1022 If the last value of a parsed tag parameter list was an unquoted 0,
1023 the 0 was not passed to the tag for processing.
1024
1025 =item *
1026
1027 added the cfgsection iterator.
1028
1029 =item *
1030
1031 iterators that allowed sorting/filtering now actually sort on the
1032 right value
1033
1034 =item *
1035
1036 the stepkid tag on edit pages now checks the article is a stepkid
1037 before doing a hash lookup, preventing an undefined value warning
1038
1039 =item *
1040
1041 the admin/edit_steps template was using invalid article names in
1042 ifUserCan checks
1043
1044 =item *
1045
1046 the flags iterator and ifFlagSet tags weren't available on the add
1047 site user page.
1048
1049 =item *
1050
1051 saving a site user in nopassword mode would result in a validation
1052 error if the email field was present but no confirmation email field
1053 was present.  The confirmation email field is now only required if the
1054 supplied email address is different from that currently stored for the
1055 user.
1056
1057 =item *
1058
1059 changing the user's email address in nopassword mode (and possibly in
1060 normal mode with subscriptions) resulted in a server error.
1061
1062 =item *
1063
1064 printable.pl wasn't looking in the printable/ directory for it's
1065 templates (#298)
1066
1067 =item *
1068
1069 printable.pl's error reporting wasn't supplying the config value to
1070 the templater
1071
1072 =item *
1073
1074 printable.pl's error page now uses the article templater rather than
1075 the base templater
1076
1077 =item *
1078
1079 added smoke test for errors from printable.pl
1080
1081 =item *
1082
1083 added smoke test for admin/siteusers.pl
1084
1085 =item *
1086
1087 trying to call "site users" "site members" now.
1088
1089 =item *
1090
1091 you can now select subscriptions for a site member with the admin
1092 tool.  This still results in a confirmation email if the user hasn't
1093 been confirmed at their email address. (#293)
1094
1095 =back
1096
1097 =head2 0.14_07
1098
1099 You will need to run upgrade_mysql.pl for this release.
1100
1101 =over
1102
1103 =item *
1104
1105 checkoutfinal_base.tmpl now uses the new <:if Payment I<name>:> tags,
1106 and includes a payments customization shim.
1107
1108 =item *
1109
1110 shop.pl now uses [shop].display_I<field-name> to convert stored field
1111 names into display names for error messages.
1112
1113 =item *
1114
1115 cardType and cardHolder fields are now required fields for credit card
1116 payments
1117
1118 =item *
1119
1120 admin access control now requires that a configuration option to be
1121 set before it will accept admin user authentication information from
1122 the server (typically basic authentication.)
1123
1124 =item *
1125
1126 the class[I<classname>|I<text>] tag was lost when integrating the
1127 common tag handling code, added it back in (#284)
1128
1129 =item *
1130
1131 you can now define custom flags for site users, the flag value is a
1132 single letter or digit, case-sensitive.  Add an entry like:
1133
1134    I<letter-or-digit>=I<description>
1135
1136 to the [site user flags] section of the config file.  For example:
1137
1138    a=Access to private area of the site
1139    b=Accept orders on account
1140
1141 You can check this on templates where the user is visible with the
1142 <:if Match:> tag:
1143
1144   <:ifMatch [siteuser flags] "b":>Accept orders on account<:or:><:eif:>
1145
1146 =back
1147
1148 =head2 0.14_06
1149
1150 =over
1151
1152 =item *
1153
1154 the article editor was using [catalogs].template as the default
1155 template rather than the documented [products].template
1156
1157 =item *
1158
1159 added the [products].extra_templates configuation file entry.  This is
1160 a comma-separated list of extra templates that can be used for
1161 products.  You can also just put templates into the C<products>
1162 directory (and have been able to for a while.)
1163
1164 =item *
1165
1166 the <:include ...:> meta-tag now takes a second optional argument, if
1167 this is the word "optional" then no error text is inserted if the file
1168 specified is not found.
1169
1170 =item *
1171
1172 updated includes of custom shims to use the "optional" option
1173
1174 =item *
1175
1176 removed custom includes from the distribution that didn't have any
1177 real content
1178
1179 =item *
1180
1181 reorganized menu.tmpl a bit and added the member ("site user") manager
1182 to the list
1183
1184 =item *
1185
1186 added <:if Payments I<name-of-type> :> and <:checkedPayment
1187 I<name-of-type> :> tags to the checkout page, and <:if Payment
1188 I<name-of-type> :> to the checkoutfinal page.  If I<name-of-type> is
1189 unknown these will return false (or the empty string) to allow their
1190 use in portable templates where a specific type might not be
1191 configured.
1192
1193 =item *
1194
1195 the checkout page now uses the ifUser tag to check if there's a logged
1196 in user rather than hacking on the user cookie.
1197
1198 =back
1199
1200 =head2 0.14_05
1201
1202 This is still a development release.
1203
1204 There have been database changes in this release.  You will need to
1205 run upgrade_mysql.pl.
1206
1207 =over
1208
1209 =item *
1210
1211 CRITICAL: nopassword wasn't checking the password at all.  If you
1212 don't want to upgrade completely you can include just the three line
1213 change that checks the password.
1214
1215 =item *
1216
1217 blank lines are no longer included in the error messages on add/edit
1218 site user validation errors
1219
1220 =item *
1221
1222 the shop now uses the site user authentication hook
1223
1224 =item *
1225
1226 the domain value sent to the browser in cookies now has the port
1227 number stripped.
1228
1229 =item *
1230
1231 you can now configure new payment types through the [payment type
1232 names], [payment type descs] and [payment type required] sections of
1233 the configuration file.
1234
1235 =item *
1236
1237 various templates include custom sub-templates which can be used to
1238 add custom payment types.
1239
1240 =item *
1241
1242 new <:checkedPaymentI<payment-type-name> :> tag on the checkout form
1243 to make retaining the selected payment type easier.
1244
1245 =item *
1246
1247 new basic template facility, C<with> allows sections of text to be
1248 processed by a tag:
1249
1250   <:with begin I<tagname> :>
1251     I<some text>
1252   <:with end I<tagname :>
1253
1254 =item *
1255
1256 <:with ... wrap:> tag added to order email tag sets:
1257
1258   <:with begin wrap:>Special Instructions: <:order instructions:><:with end wrap:>
1259
1260 =item *
1261
1262 the site user editor would include empty lines for valid fields in
1263 error messages
1264
1265 =item *
1266
1267 cookies were being generated with the port numbers included in the
1268 domain value.
1269
1270 =item *
1271
1272 billing address fields are now included in the default checkout form,
1273 optionally
1274
1275 =back
1276
1277 =head2 0.14_04
1278
1279 This is a development release and is not suitable for production use.
1280
1281 =over
1282
1283 =item *
1284
1285 sort ordering, pagination information is now saved in the site user
1286 list
1287
1288 =item *
1289
1290 added a customization hook called when a change is made to the site
1291 users list
1292
1293 =item *
1294
1295 added a site user authentication hook.  You must set user_auth=1 in
1296 the [custom] section of the config file for this to be used.
1297
1298 =back
1299
1300 =head2 0.14_03
1301
1302 This is a development release and is not suitable for production use.
1303
1304 =over
1305
1306 =item *
1307
1308 in some cases registration or saving user options wasn't outputting a
1309 page, producing a 500 error
1310
1311 =item *
1312
1313 user options templating changes:
1314
1315 =over
1316
1317 =item *
1318
1319 for the textOnlyEmail option to be saved, a saveTextOnlyMail hidden
1320 field should be present with a non-zero value
1321
1322 =item *
1323
1324 for the keepAddress option to be saved, a saveKeepAddress hidden field
1325 should be present with a non-zero value
1326
1327 =item *
1328
1329 for the subscriptions to be saves, a saveSubscriptions hidden field
1330 should be present
1331
1332 =back
1333
1334 =item *
1335
1336 added site user manager, this still needs some template work
1337
1338 =item *
1339
1340 user registration can be disabled with the C<user_register> option in
1341 the C<[site users]> section of the config file (you can still create
1342 users using the site user manager.)
1343
1344 =item *
1345
1346 billing information fields have been added to the site_users table.
1347
1348 =item *
1349
1350 adminNotes field has been added to the site users table (editable only
1351 by admins.)
1352
1353 =item *
1354
1355 instructions field has been added to the orders table, for shipping
1356 instructions (or any).  This still needs some support on the admin
1357 templates, and the email templates.
1358
1359 =item *
1360
1361 added config option C<billing_on_main_opts> to control whether billing
1362 options are on the main user options page.  This is managed by the
1363 templates, not the code.
1364
1365 =back
1366
1367 =head2 0.14_02
1368
1369 =over
1370
1371 =item *
1372
1373 printable.pl was producing a server error (it hadn't been updated
1374 after the top tag was added.)  Also added a smoke test which would
1375 have caught it.
1376
1377 =item *
1378
1379 added a few more reports to the experiemental reports system
1380
1381 =item *
1382
1383 report.pl now handles being called when the user isn't (or is no
1384 longer) logged on, correctly
1385
1386 =item *
1387
1388 added some cookie debugging code
1389
1390 =item *
1391
1392 confirmation emails weren't being sent when a user registered with
1393 subscriptions selected (with nopassword unset)
1394
1395 =back
1396
1397 =head2 0.14_01
1398
1399 =over
1400
1401 =item *
1402
1403 you can no longer register or save in options a blacklisted email
1404 address
1405
1406 =item *
1407
1408 email address blacklisting now works
1409
1410 =item *
1411
1412 user options can now be set during registration
1413
1414 =item *
1415
1416 you can configure which user options are required (during both
1417 registration and in user options)
1418
1419 =item *
1420
1421 the subscription boxes can individually or all be set to checked
1422 during registration by default.
1423
1424 =item *
1425
1426 the error_img tag now works on the registration and user options pages
1427
1428 =back
1429
1430 =head2 0.14
1431
1432 No changes in this release, just a stable release.  Enjoy.
1433
1434 =head2 0.13_08
1435
1436 This is a release candidate for 0.14, please report any problems with
1437 it as soon as possible.
1438
1439 Once I release 0.14 I'll start on a new round of changes
1440
1441 =over
1442
1443 =item *
1444
1445 the common <:old I<name> I<func> I<args>:> tag was HTML escaping the
1446 result from the <:I<func> I<args>:> call, which gave a double escaped
1447 result.
1448
1449 =item *
1450
1451 the test count in t/t40images.t was incorrect
1452
1453 =item *
1454
1455 even more tests have been added to t/t40images.t
1456
1457 =back
1458
1459 =head2 0.13_07
1460
1461 =over
1462
1463 =item *
1464
1465 URI::Escape escaped a different set of characters by default in older
1466 versions, not including &, we now supply the set of characters that is
1467 the default in modern versions.
1468
1469 =item *
1470
1471 you shouldn't be able to add an article to itself as a stepchild or
1472 stepparent
1473
1474 =item *
1475
1476 some admin forms now include name attributes, as an aid to regression
1477 testing
1478
1479 =item *
1480
1481 added some simple tests for Squirrel::Template
1482
1483 =item *
1484
1485 added some simple tests for the image manager (needs more work)
1486
1487 =back
1488
1489 =head2 0.13_06
1490
1491 Making steps towards improved stability.
1492
1493 =over
1494
1495 =item *
1496
1497 the subscriptions formatting was broken when I made arrows refresh
1498 back to their original article. D'oh.
1499
1500 =item *
1501
1502 the test text only email flag was ignored
1503
1504 =item *
1505
1506 an old problem, only products were listed as stepchildren to catalogs
1507 in the article editor
1508
1509 =item *
1510
1511 changes to the way named images interact with automatic image placement:
1512
1513 =over
1514
1515 =item *
1516
1517 named images are never automatically placed
1518
1519 =item *
1520
1521 named images are not included in the list produced by the article
1522 display template images iterator
1523
1524 =item *
1525
1526 referring to a named image either with image[name] in the article
1527 body, or <:imagen name:> in the template will not suppress automated
1528 image placement
1529
1530 =item *
1531
1532 image[1] or <:image 1:> will continue to suppress automatic image
1533 placement (or <:image:> within the images iterator)
1534
1535 =back
1536
1537 This should provide reasonable behaviour that's compatible with
1538 existing sites running 0.13 or earlier.
1539
1540 =back
1541
1542 =head2 0.13_05
1543
1544 If you get configuration errors from this release, it probably means
1545 you've been using some of the default email addresses, which were
1546 either nonsense, or my address.  Either update Constants.pm or set the
1547 appropriate value in bse.cfg.
1548
1549 There have been a lot of changes in this development release, so
1550 there's probably at least one bug.
1551
1552 =over
1553
1554 =item *
1555
1556 removed my email address from the config files
1557
1558 =item *
1559
1560 datadump.pl now uses $DATA_EMAIL as a default for the configuration
1561 [datadump].to value, as documented.  Also, aborts with a configuration
1562 error if this isn't set.
1563
1564 =item *
1565
1566 swapped the order of the parts in the multi-format emails sent by the
1567 subscriptions manager, since the old order didn't work with some mail
1568 clients.
1569
1570 =item *
1571
1572 subscription confirmations were being sent with a from derived from
1573 the [confirmation].from key instead of the [confirmations].from key in
1574 the config file.
1575
1576 =item *
1577
1578 the configured from address is now checked before attempting to send
1579 the subscription.
1580
1581 =item *
1582
1583 title and body are now validated on sending a subscription (#264,
1584 #265)
1585
1586 =item *
1587
1588 parameters supplied with the <:wrap ...:> construct now have tags of
1589 the form [tagname parameters] replaced in values.
1590
1591 =item *
1592
1593 the subscriptions send form now allows sending a test subscription
1594 message.  Defaults for the email and name are controlled by the
1595 [subscriptions] section of the config file.
1596
1597 To use this you must be authenticated in some way, either by BSE's
1598 user logon system, or through browser authentication (.htpasswd), this
1599 is done to prevent abuse of the system by spammers.
1600
1601 =item *
1602
1603 imageclean.pl should no longer remove global images
1604
1605 =item *
1606
1607 changepw.pl now accepts the r paramater as a refresh URL on the save
1608 step
1609
1610 =item *
1611
1612 select tags generated by BSE in various places should now be XHTML
1613 compatible
1614
1615 =item *
1616
1617 most object reordering arrows are now generated using a common function
1618
1619 Only the <:moveUp:> and <:moveDown:> tags are excluded from this, and
1620 are now considered obsolete, please use the new <:movekid:> tag
1621 instead.
1622
1623 =item *
1624
1625 URLs in object reordering arrows included unescaped & characters
1626
1627 =item *
1628
1629 BSE generated select tags were using "checked" instead of "selected"
1630 in some places, oops.
1631
1632 =item *
1633
1634 if a user subscribes, and a confirmations from address is configured
1635 we now display an error before the attempt to send a message, and no
1636 longer record that an attempt has been made.
1637
1638 =item *
1639
1640 the subscriptions help file was missing </a> on the <a name="..."> tags
1641
1642 =item *
1643
1644 some templates are now more XHTML compatible (if anyone know how to
1645 make http://validator.w3c.org accept wrap="virtual" without adding "]
1646 >" to the top of the displayed page, please let me know.)
1647
1648 =item *
1649
1650 arrows on the display pages should return you to your original article
1651 now
1652
1653 =item *
1654
1655 added the <:top I<field>:> tag which allows access to the top level
1656 article being generated
1657
1658 =item *
1659
1660 the shop now complains if either shop email address is not configured
1661 when a customer attempts a purchase.
1662
1663 =item *
1664
1665 you can now disable encryption of the email order to your shop email
1666 address, this disables credit card orders.  Check the documentation on
1667 the C<noencrypt> option in the C<[shop]> section of the config file in
1668 L<config.pod>.
1669
1670 =item *
1671
1672 you can now control whether the shop sends an email of your order to
1673 the shop email address through bse.cfg, see C<email_order> in the
1674 C<[shop]> section, documented in L<config.pod>.
1675
1676 =back
1677
1678 =head2 0.13_04
1679
1680 I'm still looking for feedback on article image names and the
1681 interaction with automatic image placement.  See the options described
1682 under the 0.13_02 release notes.
1683
1684 This development release has some major changes.
1685
1686 =over
1687
1688 =item *
1689
1690 the delete item handler in the shop now uses the common refresh code,
1691 preventing problems with Safari.
1692
1693 =item *
1694
1695 the <:old:> tag on the checkout page didn't work correctly in some
1696 cases
1697
1698 =item *
1699
1700 moved the response dispatch code template to BSE::Template to avoid
1701 duplication
1702
1703 =item *
1704
1705 admin/menu.tmpl now uses admin/base.tmpl
1706
1707 =item *
1708
1709 cookie handling was broken in various annoying ways:
1710
1711 =over
1712
1713 =item *
1714
1715 the userid cookie didn't have a timeout
1716
1717 =item *
1718
1719 the change to the userid cookie wasn't
1720 propagated to the secure side when the user logged out (or to the
1721 non-secure side if they used a secure-side logout)
1722
1723 =item *
1724
1725 The wrong path was used when propagating the sessionid to the secure
1726 side, making it almost completely pointless
1727
1728 =item *
1729
1730 The cart is now copied from the old secure side cookie, if any.
1731
1732 =back
1733
1734 =item *
1735
1736 admin users can now change their own passwords
1737
1738 =item *
1739
1740 the templater now supports a new type of conditional, a switch statement:
1741
1742   <:switch:>
1743    text here is ignored
1744    <:case conditional-function1 conditional-args1:> result text 1
1745    <:case conditional-function1 conditional-args2:> result text 2
1746    ...
1747   <:endswitch:>
1748
1749 Each condition is checked in order.
1750
1751 A special:
1752
1753    <:case default:>
1754
1755 always returns (and should always be last, since all conditions after
1756 it are ignored.)
1757
1758 If there is no tag for the given condition-function on the page then
1759 the text of the switch tag will be returned, hopefully to be replaced
1760 by a second pass during processing of a pre-processed page (like the
1761 checkout page.)
1762
1763 Hopefully this will reduce the need for nested ifs, but will probably
1764 introduce it's own problems related to partially generated pages <sigh>.
1765
1766 Since the code attempts to do the innermost switch first it shouldn't
1767 have nesting problems for complete pages, but may have some when a
1768 page is partially generated, like with the shop and search templates.
1769 If this becomes a problem I'll add a version with 'names' to act as a
1770 nesting aid, but it will be ugly.
1771
1772 =item *
1773
1774 you can now manage site global images, accessible with the gimage[]
1775 tag from body text, and the <:gimage name ... :> from templates
1776
1777 =back
1778
1779 =head2 0.13_03
1780
1781 Make sure you update your config file.
1782
1783 =over
1784
1785 =item *
1786
1787 custom templates may choose not to set the keywords field, this could
1788 cause makeIndex.pl to complain about undefined values.  makeIndex.pl
1789 now skips indexing NULLs.
1790
1791 =item *
1792
1793 BSE::Request's url() method was HTML encoding when it should have been
1794 URI encoding.
1795
1796 =item *
1797
1798 the distributed menu.tmpl now includes menu_custom.tmpl for local
1799 customization.
1800
1801 =item *
1802
1803 you can specify where under the site tree an article and it's children
1804 will be stored using the [article uris] section of bse.cfg
1805
1806 =back
1807
1808 =head2 0.13_02
1809
1810 Another development release.
1811
1812 Please play with this and consider how named images and automatic image
1813 placement should interact.  Should using a named image:
1814
1815 =over
1816
1817 =item *
1818
1819 completely suppress automatic image placement?
1820
1821 =item *
1822
1823 suppress placement of just the used named images?
1824
1825 =back
1826
1827 Or should named images never be automatically placed, with no effect
1828 on automatic placement of other images?
1829
1830 Changes from the last release:
1831
1832 =over
1833
1834 =item *
1835
1836 0.13_01 shipped an out of date mysql.str file
1837
1838 =item *
1839
1840 the spacer <img> tag used to align arrows now has the alt value set
1841 (to the empty string, since it has no semantic meaning) (#262)
1842
1843 =item *
1844
1845 the new formatting code was missing a library include
1846
1847 =item *
1848
1849 the body image[] tag wasn't suppressing automatic image placement (due
1850 to the replacement of the body formatting code.)
1851
1852 =item *
1853
1854 adding an image was requiring an image name (it shouldn't)
1855
1856 =item *
1857
1858 the title for the image wizard help file was "Files Wizard".
1859
1860 =item *
1861
1862 added test script for the [] tag parameter processor
1863
1864 =back
1865
1866 =head2 0.13_01
1867
1868 Time to get a little adventurous.
1869
1870 =over
1871
1872 =item *
1873
1874 images can now have an identifier associated with them.  This can be
1875 used by the body text image[] tag to reference an image by name.
1876
1877 =item *
1878
1879 the C<< <:imagen >> I<imagename> I<alignment> I<rest> C<< :> >> tag
1880 can be used to insert images by name.
1881
1882 =item *
1883
1884 body text formatting is now based on the DevHelp::Formatter module.
1885
1886 =item *
1887
1888 b[], i[], tt[], font[], fontcolor[] over paragraph breaks are now
1889 closed properly at the paragraph breaks.
1890
1891 =item *
1892
1893 newlines within pre[] are no-longer converted to paragraph or line
1894 breaks.  As a consequence of this you can't nest character formatting
1895 within each other within pre[text], ie pre[b[foo]] is ok, but
1896 pre[b[i[foo]]] won't work.
1897
1898 =item *
1899
1900 the width and height parameters to the hr[] markup weren't handled
1901 correctly.
1902
1903 =item *
1904
1905 the row options to the table[] tag were inserted HTML escaped, so:
1906
1907   tr[...
1908   bgcolor="black"|col|...
1909   ]
1910
1911 produced a tr tag like:
1912
1913   <tr bgcolor=&quot;black&quot>...
1914
1915 =item *
1916
1917 list items in ** or ## lists are now closed with </li>
1918
1919 =item *
1920
1921 we now put newlines between lines and paragraphs in the output of
1922 formatted text, hopefully this will make it easier to read the source.
1923
1924 =item *
1925
1926 <:error_img:> now accepts a [...] format expression to get the field
1927 name
1928
1929 =item *
1930
1931 the <:recipient_count:> tag is now available on the subscription
1932 listing page.  This is used for display, and to hide the Send option
1933 if the subscription has no recipients.
1934
1935 =item *
1936
1937 it's now possible to format the output of the subscription send
1938 process by changing the C<admin/subs/sending.tmpl> template
1939
1940 =item *
1941
1942 if an article has an image with an identifier of C<bse_title> then it
1943 will be used as the title image for the article.
1944
1945 =item *
1946
1947 you should be able to use one level of nested [] inside [] expressions
1948 in tags now
1949
1950 =back
1951
1952 =head2 0.13
1953
1954 No changes since 0.12_31.
1955
1956 =head2 0.12_31
1957
1958 Hopefully this will become 0.13.
1959
1960 =over
1961
1962 =item *
1963
1964 selection of archive parents for subscriptions is now even more
1965 strict, now you can't select the shop or catalogs as archive parents
1966
1967 =item *
1968
1969 eliminated debug output from the <:include ...:> meta tag
1970
1971 =item *
1972
1973 the move.pl C<r> parameter no longer pre-prepends the base url.
1974
1975 =item *
1976
1977 eliminated some undefined value and non-numeric value warnings
1978
1979 =item *
1980
1981 push "Flags" on the article edit page back into place
1982
1983 =item *
1984
1985 the top-level <:movecat:> tag in the product list now accepts the
1986 custom arrow prefix and the url suffix parameters
1987
1988 =back
1989
1990 =head2 0.12_30
1991
1992 =over
1993
1994 =item *
1995
1996 the refresh function for the subscriptions list wasn't including the ?
1997 when adding a message parameter
1998
1999 =item *
2000
2001 the order_detail target now accepts an C<m> parameter to set the new
2002 <:message:> tag (which allows <:ifMessage:> too)
2003
2004 =item *
2005
2006 each of the targets in shopadmin.pl that accepted a message for
2007 display through the C<message> parameter will now I<also> accept that
2008 message through the C<m> parameter
2009
2010 =item *
2011
2012 the C<msg> tag is no longer available on the report system pages.  Use
2013 the C<message> tag instead.
2014
2015 =item *
2016
2017 C<move.pl> now accepts the refresh URL through the C<r> parameter as
2018 well as through the C<refreshto> parameter.
2019
2020 =item *
2021
2022 the list of possible parents for archiving a subscription now only
2023 includes articles the user has permission to add children to.  This is
2024 also validated on saving/adding the subscription.
2025
2026 =item *
2027
2028 check that the user has rights to add children to the selected archive
2029 parent on sending the subscription
2030
2031 =item *
2032
2033 a confirmation message is supplied when refreshing after saving
2034 changes to an existing subscription, or deleting a subscription
2035
2036 =item *
2037
2038 disabled some debugging code in the subcription send code
2039
2040 =item *
2041
2042 removed old code from shopadmin.pl
2043
2044 =item *
2045
2046 you can supply a refresh to url using the C<r> parameter to actions in
2047 subs.pl to override the default refresh back to the subcriptions list
2048
2049 =item *
2050
2051 all generated C<img> tags now use a XHTML closing " />".  The space is
2052 prevent problems with older browsers.  If you find a generated img tag
2053 I've missed, please open a ticket.  C<img> tags in template might
2054 still not be XHTML compatible, this isn't a bug.
2055
2056 =back
2057
2058 =head2 0.12_29
2059
2060 =over
2061
2062 =item *
2063
2064 makeIndex.pl now redirects directly to menu.pl rather than to /admin/
2065 after rebuilding the index
2066
2067 =item *
2068
2069 added the "Don't index even if listed" and "Don't index this article
2070 or it's descendants" flags
2071
2072 =item *
2073
2074 the custom session hash is now supplied to the order_save() custom
2075 hook
2076
2077 =item *
2078
2079 the product tag on the cart pages now checks for undef values to
2080 prevent warnings
2081
2082 =item *
2083
2084 field names in the validation messages produced by subs.pl now have
2085 the first letter upper-cased.
2086
2087 =item *
2088
2089 creating a subscription now mentions that it's successful
2090
2091 =item *
2092
2093 the experimental report.pl compiles
2094
2095 =item *
2096
2097 added line-breaks between article flags on the edit pages
2098
2099 =item *
2100
2101 the image and file lists are now accessed using the default target in
2102 add.pl.  Use _t=img and _t=file to access the lists now.
2103
2104 =item *
2105
2106 admin/edit_2.tmpl through admin/edit_5.tmpl are no longer distributed,
2107 all normal article editing now use admin/edit_1.tmpl.  If you need
2108 different pages for different levels remove the mappings from the
2109 [templates] section in bse.cfg
2110
2111 =item *
2112
2113 the C<order_detail> target in shopadmin.pl now accepts a message
2114 parameter
2115
2116 =item *
2117
2118 the edit_add_child security check will now fail if the article is a
2119 product or if the article is too many levels deep to have a child.
2120
2121 =back
2122
2123 =head2 0.12_28
2124
2125 =over
2126
2127 =item *
2128
2129 the adduser and addgroup forms have been split off into their own
2130 pages
2131
2132 =item *
2133
2134 the a_saveuser and a_savegroup targets for adminusers.pl now supply
2135 the _t parameter passed to them to their default refresh targets.  The
2136 _t parameter must only contain letters and digits.
2137
2138 =item *
2139
2140 the orders iterator for the order_list target in shopadmin.pl now uses
2141 a generated iterator, so tags like <:order_count:> are now available.
2142
2143 =item *
2144
2145 the page specific date and money tags (<:date order_field:> and
2146 <:money order_field:>) are no longer available on the order_list
2147 pages, use the general date and money tags (<:date tag args:> and
2148 <:money tag args:>).
2149
2150 =back
2151
2152 =head2 0.12_27
2153
2154 =over
2155
2156 =item *
2157
2158 added <:error_img:> support to the logon form (IRC request)
2159
2160 =item *
2161
2162 the <:childtype:> tag is now available on user/group permissions pages
2163 which control access to articles (IRC request)
2164
2165 =item *
2166
2167 new tags <:add I<number> I<number>...:>, <:concatenate I<string>
2168 I<string> ...:>, <:match I<string> I<regexp> I<output> I<default> :>,
2169 <:lc I<string>:>, <:uc I<string>:>, <:lcfirst I<string>:>, <:ucfirst
2170 I<string>:>, <:capitalize I<string>:> and <:replace I<string>
2171 I<regexp> I<with> I<global>:> now available everywhere.
2172
2173 =item *
2174
2175 the code to parse [...] and "..." parameters for tags now passes
2176 through backslashes (\) not followed by " or another \ inside "...".
2177 This makes it easier to enter a regular expression in "...".
2178
2179 =back
2180
2181 =head2 0.12_26
2182
2183 =over
2184
2185 =item *
2186
2187 Dynamically generated templates that don't explicitly define an
2188 <:old:> tag now have a new <:old:> tag by default.  Usage:
2189
2190   <: old I<field> :>
2191   <: old I<field> I<func> I<args> :>
2192
2193 If a cgi parameter called I<field> has been supplied it will be
2194 returned, otherwise an existing function I<func> is called with
2195 I<args> and that value is used as the value of the <:old:> tag.
2196
2197 Returns an empty string if no CGI parameter I<field> or function
2198 I<func> is defined. (#235)
2199
2200 =item *
2201
2202 userlist.tmpl and grouplist.tmpl now include appropriate
2203
2204   value="<:old I<foo>:>"
2205
2206 tags
2207
2208 =item *
2209
2210 the "Your system has no groups" message in grouplist.tmpl did not span
2211 across enough columns
2212
2213 =item *
2214
2215 the <:typename I<which>:> and <:articleType:> tags now work on the
2216 user/group permissions pages which control access to articles. (#235)
2217
2218 =item *
2219
2220 the C<crumbs> iterator now works on user/group permissions pages which
2221 control access to articles (#235)
2222
2223 =item *
2224
2225 <:error_img:> is now available on the userlist/grouplist templates for
2226 displaying errors in adding a new user/group. (#235)
2227
2228 =item *
2229
2230 #235 mentions a problem with the <:cgi:> tag - could not reproduce
2231
2232 =item *
2233
2234 most save/add functions in adminusers.pl should now accept an C<r>
2235 parameter to override the default refresh location (#253)
2236
2237 =item *
2238
2239 a save of an empty administration user name was being ignored, the
2240 empty name is now saved (#250)
2241
2242 =item *
2243
2244 the name of a administration group can now be changed (#251)
2245
2246 =item *
2247
2248 quotes surrounding the URL in Refresh headers have been removed (#232)
2249
2250 the Refresh header is only briefly documented at 
2251 http://wp.netscape.com/assist/net_sites/pushpull.html, and is not part of
2252 the HTTP specification, so all I can do is guess.
2253
2254 =item *
2255
2256 entry of a blank release date when editing an article now results in a
2257 validation error instead of a database error (seen as a 500 error)
2258 (#240)
2259
2260 =item *
2261
2262 template admin/subs/list.tmpl checked the C<subs_edit> permission when
2263 it should have checked the C<subs_send> permission when choosing to
2264 display the B<Send> link.
2265
2266 =item *
2267
2268 subscriptions can now be deleted (#173)
2269
2270 =item *
2271
2272 experimental reports system added (work in progress)
2273
2274 =back
2275
2276 =head2 0.12_25
2277
2278 =over
2279
2280 =item *
2281
2282 admin/edit_product.tmpl had two <:error_img title:> tags
2283
2284 =item *
2285
2286 C<$SHOP_FROM>, C<$SHOP_TO_NAME> and C<$SHOP_TO_EMAIL> from
2287 Constants.pm can now be overridden in the config
2288 file. (C<[shop].from>, C<to_name> and C<to_email>)
2289
2290 =item *
2291
2292 the name of the custom class can now be specified in the config file
2293 (defaulting to C<BSE::Custom>) (C<[basic].custom_class>)
2294
2295 =item *
2296
2297 you can specify an alternate library path to search for your custom
2298 class (C<[paths].libraries>)
2299
2300 =item *
2301
2302 the custom class can now handle validate and store extra fields for
2303 articles (and relates types, like products)
2304
2305 =item *
2306
2307 two custom date fields (C<customDate1> and C<customDate2>) and two
2308 custom string fields (C<customStr1> and C<customStr2>) have been added
2309 to the article table to allow simplfied customization.
2310
2311 =item *
2312
2313 the default article, product and catalog editing template now include
2314 C<admin/custom_article.tmpl>, C<admin/custom_product.tmpl> and
2315 C<admin/custom_catalog.tmpl> includes to allow adding custom form
2316 fields without having to modify the main distributed editing templates
2317
2318 =back
2319
2320 =head2 0.12_24
2321
2322 =over
2323
2324 =item *
2325
2326 DevHelp::HTML, used to provide HTML and URI escaping wasn't including
2327 a required module.  D'oh.
2328
2329 =item *
2330
2331 the keywords tag in the search page was being overridden by a tag of
2332 the same name in the global article tags.  The old global C<keywords>
2333 tag wasn't very useful and has been removed.
2334
2335 =item *
2336
2337 the templates drop-down in the subscriptions system included
2338 duplicates
2339
2340 =item *
2341
2342 the crumbs iterator is now available on the article edit pages, and we
2343 now present a path on the main edit page
2344
2345 =item *
2346
2347 you can now use <:crumb I<fieldname>:> to get to crumb article
2348 information.  The current <:crumbs I<fieldname>:> will be obsoleted at
2349 some point in the future.
2350
2351 =item *
2352
2353 the content of the help files no longer render as links in Mozilla
2354
2355 =item *
2356
2357 C<< <:typename I<which>:> >> tag added to the article editor pages
2358
2359 =item *
2360
2361 the list of articles available to page generation was in the wrong
2362 order
2363
2364 =item *
2365
2366 when access control was switched off, links were displayed to permit
2367 deletion of articles with children, when they shouldn't have. (#221)
2368
2369 =item *
2370
2371 Most article editor actions now accept an r parameter which can be
2372 used to decide what happens after the action.  (#225, #226)
2373
2374 The save_new action adds an id parameter onto the end of the supplied
2375 url if the r parameter is supplied.
2376
2377 =item *
2378
2379 more messages are included when the article editor successfully
2380 performs an action (#225)
2381
2382 =item *
2383
2384 article editor and generator tags that generate arrows now take an
2385 image prefix parameter which can be used to select alternate arrow
2386 images.  A second parameter can also be used to add onto the refresh
2387 URL to supply extra information to the refreshed to page. (#224, #225,
2388 #226)
2389
2390 =item *
2391
2392 some code in BSE::Util::Tags was calling CGI::escapeHTML() at regen
2393 time (#223)
2394
2395 =back
2396
2397 =head2 0.12_23
2398
2399 =over
2400
2401 =item *
2402
2403 the list of templates in the drop down on the article edit page didn't
2404 reflect the local_templates config option correctlt.
2405
2406 =item *
2407
2408 validation errors weren't always reported (or acted upon) correctly
2409
2410 =item *
2411
2412 when an invalid product options string was stored a 500 error was
2413 produced when generating the page
2414
2415 =item *
2416
2417 the image tag wasn't including a closing " at the end of the alt
2418 attribute
2419
2420 =item *
2421
2422 the article generation code no longer relies upon CGI.pm functions for
2423 escaping HTML, URIs or producing product option popups, this should
2424 make it possible to use gen.pl from cron jobs without getting prompts
2425 for CGI parameters
2426
2427 =item *
2428
2429 catalogs had two buttons labelled "Add product", but one added
2430 catalogs.  Relabelled the one that adds catalogs to "Add Sub-catalog".
2431
2432 =item *
2433
2434 the ifnew tag on edit templates is no longer available, use ifNew
2435 instead (this was true as of 0.12_22)
2436
2437 =item *
2438
2439 added a flags field to articles, this is used for both BSE internal
2440 flags and for site specific flags.
2441
2442 =item *
2443
2444 the search index builder will now only index articles that are listed,
2445 or have the "Index even if hidden" (I) flag set.  Changed the simple
2446 search test to search for a non-hidden article.
2447
2448 =item *
2449
2450 the title field of all articles are now validated to include at least
2451 one non-space character
2452
2453 =item *
2454
2455 validation failures on images and files are now available via the
2456 error_img tag
2457
2458 =item *
2459
2460 the move image up/down action on the images manager were refreshing to
2461 the wrong page after reordering the images
2462
2463 =item *
2464
2465 changed default level names in Constants.pm and bse.cfg
2466
2467 =item *
2468
2469 changed tests to use the new level names
2470
2471 =item *
2472
2473 templates admin/subs/add.tmpl and admin/add_product.tmpl have be
2474 consolidated into their edit versions
2475
2476 =back
2477
2478 =head2 0.12_22
2479
2480 =over
2481
2482 =item *
2483
2484 added iterator allkids_of to iterate over the children and
2485 stepchildren of a given article.
2486
2487 =over
2488
2489  <:iterator begin allkids_of I<parent_id1> ...:>
2490  <:ofallkid I<field>:>
2491  <:iterator end allkids_of:>
2492
2493 =back
2494
2495 =item *
2496
2497 when you clicked send from the subscriptions list the archive parent
2498 field wasn't being set from the value set when adding/editing the
2499 subscription
2500
2501 =item *
2502
2503 generate_search() wasn't supplying a config object when creating the
2504 article generator.  This caused problems when some article types were
2505 embedded within the search page.
2506
2507 =item *
2508
2509 added mailing list info
2510
2511 =item *
2512
2513 $TMPLDIR is no longer present or used in Constants.pm.  Use templates
2514 in the [paths] section of the config file.
2515
2516 =item *
2517
2518 The path specified by the local_templates entry in [paths] is now
2519 searched for templates before the path specified by the templates
2520 entry in [paths].  This can be used to keep locally modified versions
2521 of templates separate from the distributed templates.
2522
2523 =item *
2524
2525 reordering arrows now display a filler image where there's a single
2526 missing arrow image (at the top and bottom of the list).  No spacer is
2527 displayed if there's a single item.
2528
2529 =item *
2530
2531 added tt[text], pre[text], h1[class|text] through h6[class|text],
2532 class[class|text] tags to the body text formatter.  Paragraphs are now
2533 closed by the body text formatter.
2534
2535 =item *
2536
2537 added a few more tests
2538
2539 =back
2540
2541 =head2 0.12_21
2542
2543 =over
2544
2545 =item *
2546
2547 template change from adrian (edit_steps.tmpl):
2548
2549 Finally fixed something that has bugged me for a while... I simply 
2550 moved the "if Kids" conditional to include the note about "Delete 
2551 only removes the stepkid relationship..." since not much point in 
2552 showing that is no step kids available... the step parent panel 
2553 already did this.
2554
2555 =item *
2556
2557 printable.pl now attempts to look for a content type for a given
2558 template.  This can be used for different types of presentation, for
2559 example WAP.
2560
2561 =item *
2562
2563 printable.pl now uses the configured charset if set.
2564
2565 =back
2566
2567 =head2 0.12_20
2568
2569 =over
2570
2571 =item *
2572
2573 the change to using HTML::Entities cause CR characters to be encoded
2574 when written to the browser.  This causes some browsers some
2575 confusion.  The article and product tags in BSE::Edit::Article and
2576 BSE::Edit::Product now remove these before output.
2577
2578 =item *
2579
2580 if a ## or ** list didn't have a final newline the final item wasn't
2581 included in the conversion to a HTML list
2582
2583 =item *
2584
2585 some new templates from Adrian
2586
2587 =item *
2588
2589 Adrian added some more default user level permissions
2590
2591 =back
2592
2593 =head2 0.12_19
2594
2595 =over
2596
2597 =item *
2598
2599 article matching for global permissions was still broken.  The change
2600 broke access to the descendants flag, but it all seems to be working
2601 now.
2602
2603 =item *
2604
2605 forgot to include access.pod in the MANIFEST. Added it.
2606
2607 =item *
2608
2609 added descriptions of the step child/parent permissions to access.pod
2610
2611 =item *
2612
2613 the possible stepparents drop-down checked if the possible stepparents
2614 could have children, but didn't check if the current article could
2615 have stepparents.
2616
2617 =back
2618
2619 =head2 0.12_18
2620
2621 =over
2622
2623 =item *
2624
2625 article and global permissions should now be listed sorted by their
2626 identifier
2627
2628 =item * 
2629
2630 the not and descendants flags were being ignored on global permissions
2631
2632 =item *
2633
2634 stepchildren and stepparents had no access control at all, now they
2635 do.  Note that you may sometimes get a save button on the step
2636 parent/children page with no fields to edit - this means you have save
2637 rights on the current article but not on any of the listed step
2638 children/parents.
2639
2640 =item *
2641
2642 fixed shopitem template from Adrian
2643
2644 =item *
2645
2646 more navigation links in the user/group management pages
2647
2648 =back
2649
2650 =head2 0.12_17
2651
2652 =over
2653
2654 =item *
2655
2656 the logon processing code was calling the logon processing code rather
2657 than the logon form code on a failed logon.  This cause infinite
2658 recursion.
2659
2660 =item *
2661
2662 removed the pointless Admin menu link from the logon form
2663
2664 =item *
2665
2666 add.pl was producing a warning when called without an id parameter
2667
2668 =item *
2669
2670 generate.pl didn't refresh properly if the user didn't have permission
2671 to regenerate
2672
2673 =item *
2674
2675 the menu now only shows the regenerate options if the user has
2676 permission to do so
2677
2678 =item *
2679
2680 move.pl (used to handle the reording arrows) didn't even compile
2681
2682 =item *
2683
2684 the hide/show links on the product detail page pointed at the wrong
2685 place, and were still shown if the user didn't have the rights to do
2686 the job.
2687
2688 =item *
2689
2690 the edit_product template displayed the hide/show link even if the
2691 user wasn't permitted to do so
2692
2693 =item *
2694
2695 new templates from adrian to hardcode the text color in the file lists
2696 on article pages
2697
2698 =back
2699
2700 =head2 0.12_16
2701
2702 =over
2703
2704 =item *
2705
2706 the ifUserCan tag wasn't converting article names into numbers
2707 correctly
2708
2709 =item *
2710
2711 a few pages didn't supply the article parameter to ifUserCan correctly
2712 (or at all in some cases)
2713
2714 =back
2715
2716 =head2 0.12_15
2717
2718 =over
2719
2720 =item *
2721
2722 global permissions simply didn't work, due to a dumb bug
2723
2724 =item *
2725
2726 the user/group admin pages now display buttons and checkboxes more
2727 intelligently, depending on the user's rights
2728
2729 =item *
2730
2731 the user/group save processing was trying to call an undefined method
2732 if the user didn't have access to a function.  As was the add form in
2733 add.pl if there wasn't an article the user could add to at the given
2734 level
2735
2736 =item *
2737
2738 the hide/unhide links on the edit_product page pointed at the wrong
2739 place.
2740
2741 =item *
2742
2743 image, file, stepchild and stepparent changes now regenerate the
2744 article (depending on the auto generate flag in Constants.pm).  You
2745 will probably want to do a site regen when you're done still, since it
2746 only regenerates the article you're working with, not it's
2747 stepchildren and step parents.
2748
2749 =item *
2750
2751 link the edituser and editgroup help to the adduser and addgroup help
2752 files respectively and add entries for the groups and members field
2753 respectively.
2754
2755 =item *
2756
2757 added a help file for the access panel help icon to link to.
2758
2759 =back
2760
2761 =head2 0.12_14
2762
2763 =over
2764
2765 =item *
2766
2767 product_detail.tmpl hadn't been converted to use the global money tag
2768
2769 =item *
2770
2771 different versions of CGI::Cookie use different default paths, we now
2772 force a path of "/".
2773
2774 =item *
2775
2776 really store the date and _time_ in the order date.
2777
2778 =item *
2779
2780 if the system needs you to logon for checkout, it now supplies the
2781 correct parameter to the logon code to return you to the checkout
2782 after you logon.
2783
2784 =item *
2785
2786 when setting configuration values from test.cfg with the:
2787
2788 I<section>.I<key> = I<value>
2789
2790 syntax, I<section> can now have spaces in it.
2791
2792 =item *
2793
2794 added some basic permission descriptions, and documentation on the
2795 permissions system
2796
2797 =back
2798
2799 =head2 0.12_13
2800
2801 =over
2802
2803 =item *
2804
2805 the title field could be changed on products that had been ordered (an
2806 edit field was presented for the summary field, but wasn't saved)
2807
2808 =item *
2809
2810 edit_0.tmpl had two manage access forms on it
2811
2812 =item *
2813
2814 use the new system logon rather than just checking for a browser
2815 authentication userid, when marking an order filled.
2816
2817 =item *
2818
2819 attempt to account for differences between what browsers send us for
2820 text areas (currently only for the body)
2821
2822 =item *
2823
2824 prevent <br> between each element of a <ol> or <ul> list, and try to
2825 prevent one after the end.  Double spaced entries in a list are now
2826 followed by <br>s to make it easier to do spaced out lists.
2827
2828 =item *
2829
2830 new hide and unhide targets for add.pl to make the links in the
2831 product list work again
2832
2833 =item *
2834
2835 the save target for existing articles in add.pl now checks the user is
2836 allowed to do it.
2837
2838 =item *
2839
2840 the product link on the final checkout page was broken (adrian)
2841
2842 =item *
2843
2844 the reordering links were displayed on the shop index page with the
2845 multicat template
2846
2847 =item *
2848
2849 the query used to retrieve user, group and everyone permissions from
2850 the database was broken.  Broke it into three separate queries.  I
2851 wish mysql supported unions
2852
2853 =item *
2854
2855 you can now logout if you logged in using the form based logon
2856
2857 =item *
2858
2859 creating a user, saving an existing user or deleting a user will now
2860 create an apache suitable user file, if the htusers field in [basic]
2861 is set.
2862
2863 =back
2864
2865 =head2 0.12_12
2866
2867 =over
2868
2869 =item *
2870
2871 mysql_build.pl wasn't cleaning up old tables, and since we use it for
2872 two different projects, the tables from another project were being
2873 included.
2874
2875 =item *
2876
2877 annoying and numerous warning from Squirrel::Template eliminated
2878
2879 =item *
2880
2881 change admin.pl to check the admin user is logged on
2882
2883 =item *
2884
2885 change generate.pl to check the admin user is logged on and has the
2886 access needed to regen
2887
2888 =item *
2889
2890 change move.pl to check the admin user is logged on and has the rights
2891 to perform the move requested
2892
2893 =item *
2894
2895 change reorder.pl to check the admin user is logged on and has the
2896 rights to perform the reorder requested
2897
2898 =item *
2899
2900 change shopadmin.pl to check the admin user is logged on and that they
2901 have the rights needed to perform the requested operation
2902
2903 =item *
2904
2905 change subs.pl to check the admin user is logged on and that they have
2906 the rights needed to perform the requested operation
2907
2908 =item *
2909
2910 BSE::Permissions::user_has_perms() now accepts an article id,
2911 simplifying some code
2912
2913 =item *
2914
2915 added orderfiles iterator to the userpage.
2916
2917 =item *
2918
2919 updates to BSE::Edit::Article to only allow movements when the user
2920 has appropriate rights
2921
2922 =item *
2923
2924 field change permissions
2925
2926
2927
2928 =back
2929
2930 =head2 0.12_11
2931
2932 =over
2933
2934 =item *
2935
2936 thumbnails are now saved when editing an existing article
2937
2938 =item *
2939
2940 the code to save keys to config sections which didn't already exist
2941 was broken
2942
2943 =item *
2944
2945 the total_extras custom hook now takes two extra parameters, the
2946 config object and a "stage" of processing, either "cart", "checkout",
2947 "confirm" or "final".
2948
2949 =item *
2950
2951 new customization hook order_mail_actions($order, $items, $products,
2952 $state, $cfg) for adding extra tags to the confirmation and order
2953 emails.
2954
2955 =back
2956
2957 =head2 0.12_10
2958
2959 =over
2960
2961 =item *
2962
2963 pass the configuration object to each BSE::Custom method
2964
2965 =item *
2966
2967 new shop target, "checkupdate" intended for updating information on
2968 the checkout page for customizations
2969
2970 =item *
2971
2972 you can now set extra configuration items in test.cfg using 
2973
2974 I<section>.I<key> = I<value>
2975
2976 (Adrian asked for this a while back.)
2977
2978 =item *
2979
2980 dynamic menu display
2981
2982 =item *
2983
2984 logon page (only seen if access control is enabled)
2985
2986 =item *
2987
2988 start of access control
2989
2990 =back
2991
2992 =head2 0.12_09
2993
2994 =over
2995
2996 =item *
2997
2998 ability to control permissions each admin user and group has access to
2999
3000 =item *
3001
3002 new help for image manager, other updated help files, many template
3003 changes, thanks to Adrian.
3004
3005 =item *
3006
3007 deleting admin users and groups
3008
3009 =item *
3010
3011 selectable payment types
3012
3013 =item *
3014
3015 when sending a subscription with HTML content, the boundary between
3016 MIME parts has been changed to hopefully prevent problems with some
3017 mail clients
3018
3019 =item *
3020
3021 when sending a subscription with HTML content, any carriage-returns
3022 are converted into linefeed to hopefully prevent problems when sending
3023 subscriptions based on Macintosh format files to some mail clients.
3024
3025 =item *
3026
3027 htmlemail/basic.tmpl now includes a DOCTYPE, which will hopefully
3028 prevent problems with some mail clients.
3029
3030 =item *
3031
3032 conditionals are now handled differently in the templating system to
3033 avoid some of the undefined value warnings it was producing.
3034
3035 =item *
3036
3037 added fields intended for custom processing to the orders table
3038
3039 =back
3040
3041 =head2 0.12_08
3042
3043 This is a development release.  If you want stable try 0.12_01, since
3044 many destabilizing changes have occurred since then.
3045
3046 If you install this release it's possible the upgrade_mysql.pl script
3047 cannot be used to upgrade to a later release.
3048
3049 =over
3050
3051 =item *
3052
3053 oops, forgot to implement deleting articles, so I implemented it for
3054 articles and unused products
3055
3056 =item *
3057
3058 you can now add admin groups and users.  This is in progress and the
3059 templates and code still need work.
3060
3061 =item *
3062
3063 image files weren't being deleted when an image was deleted from an
3064 article.
3065
3066 =item *
3067
3068 the page refreshed to the normal article edit page after deleting an
3069 image, it should refresh to the image list
3070
3071 =item *
3072
3073 updated and new templates and new file icons from Adrian
3074
3075 =back
3076
3077 =head2 0.12_07
3078
3079 =over
3080
3081 =item *
3082
3083 added handling for a default template based on parent, level and type.
3084 Returns to our original defaults from %LEVEL_DEFAULTS, but uses the
3085 config file instead.
3086
3087 =item *
3088
3089 now lists level specific templates in the templates drop-down for
3090 normal articles
3091
3092 =item *
3093
3094 updated templates from Adrian
3095
3096 =item *
3097
3098 since the default release date for new products is now the date the
3099 product was added, and release is a datetime, add_item()'s check to
3100 make sure the product had been released was broken, since it only
3101 compared it with a date.
3102
3103 =item *
3104
3105 the purchase() and prePurchase() functions in shop.pl had a similar
3106 problem
3107
3108 =item *
3109
3110 articles weren't being regenerated on save
3111
3112 =item *
3113
3114 report errors supplied to show_cart() in shop.pl
3115
3116 =item *
3117
3118 changed add_item() to report why it didn't add an item to the cart via
3119 show_cart() (#167)
3120
3121 =item *
3122
3123 t/t00smoke.t now checks add.pl for normal articles, catalogs and
3124 products
3125
3126 =item *
3127
3128 removed now unneeded onClick handler from delete in the image manager
3129
3130 =back
3131
3132 =head2 0.12_06
3133
3134 This release includes some inactive files for access control.
3135
3136 =over
3137
3138 =item *
3139
3140 replace edit_2.tmpl (which replaces edit_[345].tmpl) too
3141
3142 =item *
3143
3144 fix a dumb bug that prevented changes to the base article fields from
3145 being saved
3146
3147 =back
3148
3149 =head2 0.12_05
3150
3151 =over
3152
3153 =item *
3154
3155 test script to check that all modules and scripts have use strict and
3156 all scripts have -w in the #! line
3157
3158 =item *
3159
3160 the width and height values were swapped for display of an articles
3161 images in the image manager template
3162
3163 =item *
3164
3165 children weren't sorted on article editing pages
3166
3167 =item *
3168
3169 updated templates from Adrian.
3170
3171 =item *
3172
3173 added a previousLogon field to accept the last value of lastLogon at
3174 logon, so the previous value could be displayed.
3175
3176 =item *
3177
3178 editing an article would give a server error on save (due to some late
3179 changes)
3180
3181 =back
3182
3183 =head2 0.12_04
3184
3185 =over
3186
3187 =item *
3188
3189 the wrong url was redirected to after adding a new image or saving images
3190
3191 =item *
3192
3193 manage catalogs now points back at shopadmin.pl
3194
3195 =item *
3196
3197 removed the "Image Wizard" buttons and replaced them with "Manage
3198 Images" links in the image displays. (and fixed some missing </td> tags)
3199
3200 =back
3201
3202 =head2 0.12_03
3203
3204 =over
3205
3206 =item *
3207
3208 added child_types() method to BSE::Edit::Product so it knows what
3209 child types a product can have.  This meant that the Add Product
3210 button on the view in edit page was trying to add a normal article
3211 rather than a product.  Typically a type parameter should be supplied
3212 when creating new articles which aren't base articles.
3213
3214 =item *
3215
3216 shopadmin.pl was still using $imageEditor even though it wasn't
3217 defined
3218
3219 =item *
3220
3221 t00smoke.t wasn't checking shopadmin.pl
3222
3223 =item *
3224
3225 edit_[1-5].tmpl and edit_catalog.tmpl included the starting <form> tag
3226 in a conditional, breaking the form when creating a new article
3227
3228 =back
3229
3230 =head2 0.12_02
3231
3232 When installing this release over earlier releases:
3233
3234 =over
3235
3236 =item 1.
3237
3238 run mysql_upgrade.pl to upgrade the database schema
3239
3240 =item 2.
3241
3242 start the mysql shell and run the following query in your database:
3243
3244   update image set displayOrder = id;
3245
3246 to preserve image ordering.
3247
3248 =item *
3249
3250 the <:if art:> conditional tag is no longer available
3251
3252 =back
3253
3254 This is a development release, intended to test the new code in BSE,
3255 in preparation for adding security mechanisms.  This is not intended
3256 for production use yet.
3257
3258 Please see the known problems list.
3259
3260 =over
3261
3262 =item *
3263
3264 was parsing wrap parameters when there weren't any, which caused
3265 warnings in the error log
3266
3267 =item *
3268
3269 you couldn't create a new subscription with the archiving switched off
3270
3271 =item *
3272
3273 if you edited a subscription, and unset the archive check, the save
3274 left it as archived.
3275
3276 =item *
3277
3278 article editing is being almost completely rewritten to allow more
3279 code re-use.
3280
3281 =item *
3282
3283 article image management has been completely rewritten so that the
3284 changes you make are immediate, rather than relying on the user to
3285 save the article after making changes.  This prevents the problem that
3286 sometimes crops up where the images you're editing are for the wrong
3287 article, or left over from an aberted attempt to create a new article.
3288
3289 This change also means you can't add images to an article until the
3290 article has been created.
3291
3292 =item *
3293
3294 previously the order of images would change at the whim of the
3295 database, which happened pretty rarely but still happened.  Added a
3296 displayOrder field to images, and we base the ordering (and
3297 re-ordering) on that instead of whatever the database chooses to give
3298 us today.
3299
3300 =item *
3301
3302 products and catalogs use the new editing code
3303
3304 =item *
3305
3306 new tags on edit pages to give access to validation errors (most
3307 noticable on the add product page for now),
3308
3309 =item *
3310
3311 added an "old" tag to take a value from either the cgi parameters or a
3312 given other tag.  This makes error reporting more natural
3313
3314 =back
3315
3316 Known issues:
3317
3318 =over
3319
3320 =item *
3321
3322 the code allows the product title and summary to be changed.  The new
3323 security code will correct this (and allow them to be changed, or the
3324 product to be deleted, for unused products)
3325
3326 =item *
3327
3328 only add_product.tmpl has the new error reporting and old value access
3329 tags
3330
3331 =item *
3332
3333 the delete/undelete links for products don't work.  Currently the same
3334 functionality is available through the Listed drop-down, but it might
3335 be desirable to keep the links, comments welcome.
3336
3337 =back
3338
3339 =head2 0.12_01
3340
3341 Some derived tags may not work with the new fields, since I've
3342 switched to the version of Squirrel::Template used by Resource, which
3343 should reduce memory consumption a little, once all the tags are
3344 converted.
3345
3346 I think I have all the derived tags, but there might be one I
3347 missed...
3348
3349 =over
3350
3351 =item *
3352
3353 added ifAncestor conditional tag
3354
3355 =item *
3356
3357 added iterator children_of and tag ofchild, usage:
3358
3359 =over
3360
3361 <:iterator begin children_of I<parent_id1> ...:>
3362 <:ofchild I<field>:>
3363 <:iterator end children_of:>
3364
3365 =back
3366
3367 =item *
3368
3369 added iterator inlines and tag inline, usage:
3370
3371 =over
3372
3373 <:iterator begin inlines I<article_id1> ...:>
3374 <:inline I<field>:>
3375 <:iterator end inlines:>
3376
3377 =back
3378
3379 =item *
3380
3381 more test code to test the above (now I have the infrastructure to
3382 simplify adding these types of tests
3383
3384 =back
3385
3386 =head2 0.12
3387
3388 0.11_21 seems stable enough.
3389
3390 =head2 0.11_21
3391
3392 Assuming no other problems are found this will become 0.12
3393
3394 =over
3395
3396 =item *
3397
3398 oops, missed some updated templates from Adrian, applied bse_changes
3399 archive (#148)
3400
3401 =back
3402
3403 =head2 0.11_20
3404
3405 =over
3406
3407 =item *
3408
3409 another set of new templates from Adrian
3410
3411 =item *
3412
3413 extended title and email fields of site_user to 127 and 255 characters
3414 respectively
3415
3416 =back
3417
3418 =head2 0.11_19
3419
3420 =over
3421
3422 =item *
3423
3424 remove debugging code from Generate::excerpt() (#142)
3425
3426 =item *
3427
3428 added script interest.pl to send an email to the site owner when the
3429 user registers interest in a product (#133)
3430
3431 =back
3432
3433 =head2 0.11_18
3434
3435 =over
3436
3437 =item *
3438
3439 must_be_filled really fixed now (#128)
3440
3441 =item *
3442
3443 was calling function (now_sqldatetime()) that didn't exist
3444
3445 =item *
3446
3447 integrated new templates from Adrian, hopefully I got the right
3448 revisions.
3449
3450 =item *
3451
3452 <:moveallprod:> for the catalogs page (#122)
3453
3454 =item *
3455
3456 admin link for new catalogs now points at admin.pl (#120)
3457
3458 =back
3459
3460 =head2 0.11_17
3461
3462 =over
3463
3464 =item *
3465
3466 removed extraneous <:embed end:> from printable.tmpl
3467
3468 =item *
3469
3470 prevent access to parent fields from autovivifying $parent in
3471 Generate::Article::baseActs(), which caused ifParent to return true.
3472
3473 =item *
3474
3475 gen.pl now enables the query cache even for small batches, since it
3476 makes a big difference.
3477
3478 =item *
3479
3480 products pages now remove the <:embed start:> and <:embed end:>
3481 markers
3482
3483 =item *
3484
3485 need a space between "checked" and the closing "/>" in
3486 options_base.html for the checked to be recognized.
3487
3488 =item *
3489
3490 keepAddress stayed checked once checked
3491
3492 =item *
3493
3494 must_be_filled is now correctly looked up in [downloads] - it was
3495 looking in [download] (#128)
3496
3497 =item *
3498
3499 prevent a warning about using a regexp range of [\w-.] by making it
3500 [\w.-] (BSE::UserReg)
3501
3502 =item *
3503
3504 store the date _and_ time in the orderDate field so that orders are
3505 sorted correctly on the user page. (#132)
3506
3507 =item *
3508
3509 add sort order after date to sort by id descending for orders on the
3510 same date (#132)
3511
3512 =item *
3513
3514 highlight multi-word matches in search excerpts (#125)
3515
3516 =item *
3517
3518 help for body text from add product page (#118)
3519
3520 =item *
3521
3522 new templates from Adrian
3523
3524 =item *
3525
3526 when creating a new product, the release date was being set to
3527 2001-01-01, rather than the more useful C<today> (whatever day that
3528 happens to be).  This was mostly visible to the search engine. (#130)
3529
3530 =item *
3531
3532 images list now available on edit_product.html page
3533
3534 =back
3535
3536 =head2 0.11_16
3537
3538 =over
3539
3540 =item *
3541
3542 updated templates from Adrian (which I forgot to add in 0.11_15
3543 <sigh>)
3544
3545 =back
3546
3547 =head2 0.11_15
3548
3549 =over
3550
3551 =item *
3552
3553 moved step kids/step parents management to their own page (if you use
3554 the old edit templates you can keep them on the same page.)
3555
3556 =item *
3557
3558 added file_unlink option to [debug] in bse.cfg
3559
3560 =item *
3561
3562 added mail_encryption option to [debug] in bse.cfg
3563
3564 =item *
3565
3566 minor reorganization of mail encryption to avoid a "Odd number of
3567 elements in hash assignment" error in some circumstances.
3568
3569 =item *
3570
3571 added help to the article editor pages
3572
3573 =item *
3574
3575 added license
3576
3577 =item *
3578
3579 added <:movestepkid:> tag to the Generate::Article set of tags
3580
3581 =item *
3582
3583 added the BSE::Version class and the <:release:> tag
3584
3585 =item *
3586
3587 more admin templates (most of the edit_*.tmpl) can now be controlled
3588 from the config file.
3589
3590 =item *
3591
3592 fixed a broken in-page link from the refresh after adding a stepparent
3593
3594 =item *
3595
3596 fixed an uninitialized value warning introduced in 0.11_14
3597
3598 =item *
3599
3600 changed the misleading "Uploaded files" to "Uploaded images" on the
3601 edit pages.
3602
3603 =back
3604
3605 =head2 0.11_14
3606
3607 =over
3608
3609 =item *
3610
3611 imageclean.pl now keeps thumbnail images
3612
3613 =item *
3614
3615 new display templates from adrian
3616
3617 =item *
3618
3619 added the stepkids and allkids options to ifUnderThreshold.
3620
3621 =item *
3622
3623 documented the C<kb>, C<date>, C<ifEq>, C<ifMatch> and C<cfg> tags.
3624
3625 =back
3626
3627 =head2 0.11_13
3628
3629 This is a test release.
3630
3631 =over
3632
3633 =item *
3634
3635 added the kb tag which formats the result of it's arguments with a k
3636 suffix if the value is over 1000.  This can be used for making file
3637 size displays prettier.
3638
3639 =item *
3640
3641 the config variable wasn't being passed into the ImageEditor object in
3642 shopadmin.pl
3643
3644 =back
3645
3646 =head2 0.11_12
3647
3648 This is a test release.
3649
3650 =over
3651
3652 =item *
3653
3654 make the downloadable files feature available on other pages
3655
3656 =item *
3657
3658 add code to support downloads of non-paid for files
3659
3660 =back
3661
3662 =head2 0.11_11
3663
3664 =over
3665
3666 =item *
3667
3668 make the url tag generate the full url on "extra" pages.
3669
3670 =back
3671
3672 =head2 0.11_10
3673
3674 =over
3675
3676 =item *
3677
3678 test.cfg now has a C<securl> option to control the configured secure url
3679
3680 =item *
3681
3682 added site/doc/secure.pod, describing security considerations
3683
3684 =item *
3685
3686 article title field has been extended to 255 characters.  The title
3687 edit field maximum length can be controlled with the C<title_size>
3688 item in [field] in F<bse.cfg>.
3689
3690 =item *
3691
3692 you can get access to the currently logged in user on the checkout and
3693 cart pages using the C<ifUser> conditional tag and the C<user> value
3694 tag.
3695
3696 =item *
3697
3698 stripped some more common code out of shop.pl
3699
3700 =item *
3701
3702 extended the common cfg tag to take a third default value parameter
3703
3704 =item *
3705
3706 search result excerpts can now bold partial matches 
3707
3708 =item *
3709
3710 the page regenerator didn't handle the case where a port name was
3711 present in the secure url.
3712
3713 =item *
3714
3715 now generate gen.html from gen.pl
3716
3717 =item *
3718
3719 added POD to site/docs/makedocs and generate the HTML
3720
3721 =item *
3722
3723 added POD to site/util/upgrade_mysql.pod and generate a HTML version
3724
3725 =item *
3726
3727 when a user logs on and the secure url is different from the base url,
3728 BSE now refreshes to the other side of the site to set the same
3729 session cookie there.  This allows session information to be shared
3730 with the two sides of the site.
3731
3732 There is a known issue with this: any session information (like the
3733 shopping cart) stored on the other side of the site is not retained.
3734
3735 =back
3736
3737 =head2 0.11_09
3738
3739 =over
3740
3741 =item *
3742
3743 updated user/* templates from Adrian
3744
3745 =item *
3746
3747 checkout code for the shop didn't pass in the config object to the
3748 mail class
3749
3750 =item *
3751
3752 work around a bug in the search index builder
3753
3754 =item *
3755
3756 finally added some test code.  This isn't ready for general use yet and
3757 could damage your system.  So don't use it.
3758
3759 =item *
3760
3761 BSE::Cfg now checks the current directory as well as $FindBin::Bin,
3762 this lets initial.pl work
3763
3764 =back
3765
3766 =head2 0.11_08
3767
3768 This is a test release.
3769
3770 I still need to integrate some of the customization hooks from the
3771 realware branch.
3772
3773 =over
3774
3775 =item *
3776
3777 remove dependency on Time::HiRes (this was used for benchmarking while
3778 speeding up the site regen.)
3779
3780 =item *
3781
3782 the global date tag didn't handle a date where the time was missing
3783 (like article.lastModified).  And it ignored the time when it did
3784 manage to extract it.
3785
3786 =item *
3787
3788 remove query caching change reports (Table.pm)
3789
3790 =back
3791
3792 =head2 0.11_07
3793
3794 This is a test release.
3795
3796 =over
3797
3798 =item *
3799
3800 initial.pl now looks at the config file for the secure base url
3801
3802 =item *
3803
3804 BSE::Util::Secure wasn't importing md5_hex
3805
3806 =item *
3807
3808 added missing user/email_conferror_base.tmpl
3809
3810 =item *
3811
3812 the user/confirmed.tmpl entry was missing from [pregenerate] in the
3813 supplied bse.cfg.  Also user/email_conferror.tmpl
3814
3815 =item *
3816
3817 the randomdata key was missing from the [basic] section in the
3818 supplied bse.cfg
3819
3820 =item *
3821
3822 changed message in site/templates/user/toosoon_base.tmpl to prevent
3823 panic when the user goes back and selects another group
3824
3825 =item *
3826
3827 changed meaning of ifUser in user templates to accept a parameter if
3828 present
3829
3830 =item *
3831
3832 updated user/options_base.tmpl to display email confirmed information
3833 a bit more correctly
3834
3835 =item *
3836
3837 the admin can choose to hide some subscriptions
3838
3839 =back
3840
3841 =head2 0.11_06
3842
3843 This is a test release.
3844
3845 I wouldn't be suprised to find problems in this release, there have
3846 been a lot of changes.
3847
3848 Still needs some documenting.
3849
3850 =over
3851
3852 =item *
3853
3854 optimized generate_all() for large sites.  Despite the fact most of
3855 the improvement came from caching, generate seems to use less memory.
3856
3857 =item *
3858
3859 added gen.pl command-line regen script
3860
3861 =item *
3862
3863 added option to generate.pl to just regen extras and base pages
3864
3865 =item *
3866
3867 $URLBASE and $SECURLBASE from Constants.pm have been moved to C<url>
3868 and C<secureurl> in the C<[site]> section of bse.cfg
3869
3870 =item *
3871
3872 datadump.pl now uses the newer database configs (has it worked
3873 recently?) and the newer mail interfaces.
3874
3875 =item *
3876
3877 subscriptions management - interfaces to add new subscription
3878 (newsletter) types, and displays options in user options to allow a
3879 user to subscribe.  To prevent abuse by spammers (maybe) and by other
3880 attackers, we get the user to confirm subscription of their email
3881 address.  This is big.
3882
3883 =item *
3884
3885 %EXTRA_TAGS has been moved to C<[extra tags]> in bse.cfg
3886
3887 =back
3888
3889 =head2 0.11_05
3890
3891 This is a test release.
3892
3893 =over
3894
3895 =item *
3896
3897 added base_tags() to BSE::Custom (tags available during static
3898 generation of most pages.)
3899
3900 =item *
3901
3902 step(kids|parents) now available to all articles, though you may have
3903 some problems connecting the shop articles (catalogs,products) to
3904 others
3905
3906 =item *
3907
3908 standard date tag available in most places
3909
3910 =item *
3911
3912 the <:summary:> tag now takes an optional which parameter, defaulting
3913 to "child".
3914
3915 =item *
3916
3917 you can now specify the default template for children of a given
3918 article.
3919
3920 =item *
3921
3922 you can specify extra template directories to search while editing a
3923 given article.
3924
3925 =item *
3926
3927 moved the side bar logon form to it's own article (loaded by
3928 initial.pl) and added it to the side bar subsection.
3929
3930 =item *
3931
3932 shortened the long message used in the refresh back to user.pl when
3933 the user has file based products in their cart, but hasn't logged in.
3934 This was causing problems with IE6.  It now attempts to pull a longer
3935 message out of the config file.
3936
3937 =back
3938
3939 =head2 0.11_03
3940
3941 =over
3942
3943 =item *
3944
3945 handling of downloads from the user page is handled better: you don't
3946 get a download link unless the file is downloadable, and rejected
3947 download results in a refresh to the user page rather than just
3948 displaying the user page
3949
3950 =item *
3951
3952 the logon and register pages can now be passed a refresh url, which
3953 the shop uses when it refreshes to the logon page
3954
3955 =item *
3956
3957 add an orders button when logged in
3958
3959 =item *
3960
3961 the file list was messed up
3962
3963 =back
3964
3965 =head2 0.11_02
3966
3967 Another test release:
3968
3969 =over
3970
3971 =item *
3972
3973 actually tested the form filling with the user's defaults
3974
3975 =item *
3976
3977 modify localinst.perl to remove the default bse.cfg
3978
3979 =item *
3980
3981 have the checkout function return if the user needs to register (shop.pl)
3982
3983 =item *
3984
3985 check in a few more places if the user needs to register (shop.pl)
3986
3987 =item *
3988
3989 changed names of fields in SiteUsers to match the checkout form
3990
3991 =item *
3992
3993 added telephone and facsimile fields to the user options
3994
3995 =back
3996
3997 =head2 0.11_01
3998
3999 Test release:
4000
4001 =over
4002
4003 =item *
4004
4005 supports files attached to products for sale
4006
4007 =item *
4008
4009 user registration
4010
4011 =item *
4012
4013 we now have a config file
4014
4015 =back
4016
4017 =head2 0.11
4018
4019 Looks like all known problems are fixed.  Time to do a semi-major
4020 release.
4021
4022 =head2 0.10_16
4023
4024 =over
4025
4026 =item *
4027
4028 hopefully fixed an occasionaly problem where the images would reorder
4029 themselves
4030
4031 =back
4032
4033 =head2 0.10_15
4034
4035 =over
4036
4037 =item *
4038
4039 make the depth parameter in <:embed which template depth:> work
4040
4041 =item *
4042
4043 give the sitemap a lower depth since 7 levels (5 + the level1 and 2)
4044 is too much.
4045
4046 =back
4047
4048 =head2 0.10_14
4049
4050 =over
4051
4052 =item *
4053
4054 try to avoid dividing entered prices by 100 when there's an error on
4055 the product edit/add form.  There's still some potential problems
4056 here, but they're much less likely to cause a problem.
4057
4058 =item *
4059
4060 remove the border from image[] generated images
4061
4062 =item *
4063
4064 move the error message on the product add form so it isn't mixed up
4065 with the menu
4066
4067 =item *
4068
4069 the dummy product used to generate the product edit form after an
4070 error wasn't useful for getting step catalogs, get the real product
4071 object just for that.
4072
4073 =back
4074
4075 =head2 0.10_13
4076
4077 =over
4078
4079 =item *
4080
4081 remove the border from embedded images with a url
4082
4083 =item *
4084
4085 fixed an old bug that defaulted the threshold from the template (oops)
4086
4087 =item *
4088
4089 the ... in <:image which align ...:> or <:image which field ...:> is
4090 now appended to the attributes of the image field.  If it includes a
4091 border attribute the default border attribute is suppressed.
4092
4093 =back
4094
4095 =head2 0.10_12
4096
4097 =over
4098
4099 =item *
4100
4101 new order_list templates from adrian (moved the filter forms into the table)
4102
4103 =item *
4104
4105 fixed the image wizard for products.  I'm suprised this ever worked.
4106 Wasn't preserving parentid when creating a new product.
4107
4108 =item *
4109
4110 new edit_product template from adrian
4111
4112 =item *
4113
4114 stupid bug in BSE::Shop::Util
4115
4116 =item *
4117
4118 email is now in BSE::CustomBase->required_fields() and can be removed
4119 by BSE::Custom->required_fields().  If it is removed then no
4120 validation of the email address is performed.
4121
4122 =item *
4123
4124 state changes made in handling the confirm page are now saved
4125
4126 =item *
4127
4128 added strict to a few modules
4129
4130 =item *
4131
4132 added missing error handling methods to BSE::Mail.
4133
4134 =item *
4135
4136 old tag on the confirm tag now never gives the undef value message
4137
4138 =item *
4139
4140 if you specify a embedding depth less than the current maximum, you
4141 won't get an error message embedded when passing that depth.  This
4142 lets you do more interesting effects.
4143
4144 =item *
4145
4146 shop.pl now writes mail sending errors to STDERR (to the error log on
4147 apache) rather than aborting the order display (since the order
4148 actually exists at this point.)
4149
4150 =back
4151
4152 =head2 0.10_11
4153
4154 =over
4155
4156 =item *
4157
4158 support for filtering the order lists by dates entered by the user
4159
4160 =item *
4161
4162 make the add section link work, and make the link itself a little more 
4163 usable
4164
4165 =item *
4166
4167 removed some old debug code
4168
4169 =item *
4170
4171 make BSE::Custom->checkout_actions() work on the confirmation page
4172
4173 =back
4174
4175 =head2 0.10_10
4176
4177 =over
4178
4179 =item *
4180
4181 documented new tags for Product.pm and Article.pm
4182
4183 =item *
4184
4185 shopadmin.pl can list/move the stepkids (you can hide them too)
4186
4187 =item *
4188
4189 added some tests to test if various iterators show anything,
4190 ifProducts, ifAnyProds, ifStepProds.
4191
4192 =back
4193
4194 =head2 0.10_09
4195
4196 =over
4197
4198 =item *
4199
4200 put the reorder links into the edit templates
4201
4202 =item *
4203
4204 fix expire labels for edit_1.tmpl and edit_catalog.tmpl
4205
4206 =item *
4207
4208 reordering from the catalog works
4209
4210 =item *
4211
4212 reordering from the product editor works
4213
4214 =back
4215
4216 =head2 0.10_08
4217
4218 Making progress.
4219
4220 =over
4221
4222 =item *
4223
4224 fixed the ordering of items in the allprods tag
4225
4226 =item *
4227
4228 make allprods always work with products
4229
4230 =item *
4231
4232 realware wanted a confirmation page
4233
4234 =back
4235
4236 =head2 0.10_07
4237
4238 Another test release:
4239
4240 =over
4241
4242 =item *
4243
4244 initial step kids|parents for the shop
4245
4246 =item *
4247
4248 new popup menu templates from Adrian
4249
4250 =item *
4251
4252 added acknowledgements to AUTHOR section
4253
4254 =back
4255
4256 =head2 0.10_06
4257
4258 Test release for Adrian, with his new templates.
4259
4260 =head2 0.10_05
4261
4262 Test release for Adrian.
4263
4264 =head2 0.10_04
4265
4266 Don't use this version.
4267
4268 =over
4269
4270 =item *
4271
4272 URLs can be directly associated with an image
4273
4274 =item *
4275
4276 multiple levels of catalogs
4277
4278 =item *
4279
4280 shop item options
4281
4282 =item *
4283
4284 filtering/sorting of orders from the template
4285
4286 =item *
4287
4288 embedded templates can be based on the template of the article being
4289 embedded
4290
4291 =item *
4292
4293 order status information, marking an order has having been filled
4294
4295 =item *
4296
4297 better handling of generation errors
4298
4299 =item *
4300
4301 partial support for Microsoft SQL Server under IIS
4302
4303 =item *
4304
4305 extended price tag for the cart and checkout pages
4306
4307 =item *
4308
4309 prePurchase target for the shop, to allow custom credit card processing
4310
4311 =item *
4312
4313 template based filtering of the order list
4314
4315 =back
4316
4317 =head2 0.10_03
4318
4319 =over
4320
4321 =item *
4322
4323 added the admin/reorder.pl script
4324
4325 =item *
4326
4327 template names in <: embed :> tags have $ replaced with the template
4328 name of the article.
4329
4330 =back
4331
4332 =head2 0.10_02
4333
4334 =over
4335
4336 =item *
4337
4338 added the image[] tag  (image[index|align|url])
4339
4340 =item *
4341
4342 added printable.pl, site/templates/printable/printable.tmpl to allow
4343 printable versions of pages (among other things)
4344
4345 =item *
4346
4347 implemented the ifCurrentPage tag
4348
4349 =back
4350
4351 =head2 0.10_01
4352
4353 =over
4354
4355 =item *
4356
4357 added <:siteUrl:> tag in %EXTRA_TAGS (used by the RSS templates)
4358
4359 =item *
4360
4361 fixed broken template value for the formatting guide (initial.pl)
4362
4363 =item *
4364
4365 fixed broken admin links for the formatting guide (initial.pl)
4366
4367 =item *
4368
4369 the formatting guide now generates to
4370 http://your.site/a/format_guide.html (initial.pl)
4371
4372 =item *
4373
4374 RDF/RSS is now generated to /a/site.rdf.  This includes links and
4375 titles for the articles on the home page, and a search field (if the
4376 tool displaying the RSS supports that.)
4377
4378 =back
4379
4380 =head2 0.10
4381
4382 WARNING: the tag for articles found for a search has changed from:
4383
4384   article I<field>
4385
4386 to:
4387
4388   result I<field>
4389
4390 There is a new module required: HTML::Parser
4391
4392 =over 4
4393
4394 =item *
4395
4396 the <:embed child:> tags meaning has been expanded to allow embedding
4397 of any article with an optional template
4398
4399 =item *
4400
4401 there's now an embed[] tag for use in body text.  Both this and 
4402 <:embed ... :> are protected against infinite recursion.
4403
4404 =item *
4405
4406 changed display values for sections etc in Constants.pm, you can still
4407 put your own in when you customize.
4408
4409 =item *
4410
4411 the default templates for each level have been set to a single
4412 template, for a simpler default setup
4413
4414 =item *
4415
4416 new admin index pages, which may display a little better in some
4417 browsers
4418
4419 =item *
4420
4421 you can move articles between levels, if enabled in Constants.pm
4422
4423 =item *
4424
4425 unquoted search terms will do "start of word" searches if enabled in 
4426 Constants.pm
4427
4428 =item *
4429
4430 html[] tags and <html> body text now has tags stripped when displayed
4431 as a summary or as a search excerpt.  The search indexing can now
4432 handle both of these too.
4433
4434 =item *
4435
4436 the search template now uses 'result' rather than 'article' for the
4437 search result entries.  This is needed since the search base page is
4438 generated as an article, using a dummy article.  The title and
4439 titleImage for this dummy article can be specified in Constants.pm.
4440
4441 =item *
4442
4443 you can now control whether an unlisted level1 article is displayed in
4444 the crumbs for an article.  By default unlisted level1 articles are
4445 NOT listed anymore.
4446
4447 =item *
4448
4449 a bunch of new templates from adrian, including moving the common
4450 layout into base.tmpl where possible, support for "sidebars".
4451
4452 =item *
4453
4454 a formatting guide article in initial.pl (from adrian) (and then an
4455 updated version of it)
4456
4457 =item *
4458
4459 renamed INSTALL to INSTALL.txt to prevent wierdness if someone tries
4460 "make install" on a case-insensitive file system.
4461
4462 =item *
4463
4464 administration templates are now kept in the admin directory in the
4465 templates directory
4466
4467 =item *
4468
4469 added simple test installer.  WARNING: this destroys the existing content
4470 of your site.
4471
4472 =item *
4473
4474 distribution now includes site/htdocs/shop as a directory rather than
4475 as a file
4476
4477 =item *
4478
4479 schema/bse.sql now drops the tables if they already exist
4480
4481 =item *
4482
4483 the item description in the shopping cart is now a link to the item
4484
4485 =item *
4486
4487 changed some defaults in Constants.pm
4488
4489 =item *
4490
4491 catalog templates from $TMPLDIR/templates/catalogs weren't being handled
4492 correctly
4493
4494 =back
4495
4496 =head2 0.09
4497
4498 =over 4
4499
4500 =item *
4501
4502 added support for controlling access to the regenerate option
4503
4504 =item *
4505
4506 added the ability to disable auto-regeneration
4507
4508 this initially broke some buttons, fixed
4509
4510 =item *
4511
4512 properly escape child properties in add.pl
4513
4514 =item *
4515
4516 removing an article now removes any associated images
4517
4518 =item *
4519
4520 removing an image from an article now removes the image file when you
4521 save the article.
4522
4523 =item *
4524
4525 added datadump.pl (send an email containing a mysql datadump), with
4526 configuration in Constants.pm
4527
4528 =item *
4529
4530 added imageclean.pl - cleans up the image table and images directory
4531
4532 =item *
4533
4534 added an advanced admin page with links to datadump.pl and
4535 imageclean.pl (you can change these of course).
4536
4537 =item *
4538
4539 previously it was possible for a user with admin rights to choose a
4540 template that was outside the templates directory.  
4541
4542 =back
4543
4544 =head2 0.08
4545
4546 =over 4
4547
4548 =item *
4549
4550 modified administration templates
4551
4552 =item *
4553
4554 formatting is now stripped from body text before an excerpt is
4555 produced (for the search results).
4556
4557 =back
4558
4559 =head2 0.07
4560
4561 I'll add in the 0.07 change list as soon as I figure out what I changed...
4562
4563 Once I get my old 0.08 RC that may include the 0.07 change list.
4564
4565 =head2 0.06
4566
4567 Some changes are being made to allow the engine to be embedded into a
4568 site (specifically squirrelweb.com.au).
4569
4570 =over 4
4571
4572 =item *
4573
4574 Bug fix: shop.pl had a silly exporter mistake, and a sillier reference
4575 to an unknown variable name.
4576
4577 =item *
4578
4579 changed admin links to buttons for the catalog and product pages,
4580 added a Display button to the product page.
4581
4582 =item *
4583
4584 cleaned up the shopitem, cart_base, checkout_base, checkoutfinal_base,
4585 mailorder and mailconfirm templates, removing tags that don't work in
4586 them, removing references to bodyscoop, fixing broken images, removed
4587 thawte stamp.gif.
4588
4589 =item *
4590
4591 %EXTRA_TAGS now work in mailorder and mailconfirm templates
4592
4593 =item *
4594
4595 You can now use $SHOP_EMAIL_ORDER to disable sending the encrypted
4596 order.  (Useful only for testing or until you get encryption keys
4597 organized - there's no other way to get the credit card number and
4598 expiry date.)
4599
4600 =item *
4601
4602 Generate/Product.pm had a hard-coded link to the internal test
4603 site. (Doh!)
4604
4605 =item *
4606
4607 some base URIs can be configured, though this still needs some work.
4608
4609 =back
4610
4611 =head2 0.05
4612
4613 =over 4
4614
4615 =item *
4616
4617 Bug fix: only add the class attribute to thumbnails if one is supplied
4618 (doh!)
4619
4620 =item *
4621
4622 Moved shop configuration from shop.pl to Constants.pm
4623
4624 =item *
4625
4626 Extended template field to 127 characters so directories can be used
4627 without chopping off names.
4628
4629 =item *
4630
4631 Added installation documentation.
4632
4633 =item *
4634
4635 Templates in the drop-down lists in add.pl now includes templates from
4636 $TMPLDIR/$level and $TMPLDIR/common.
4637
4638 =item *
4639
4640 crumbs now include the section, whether or not they are listed.
4641
4642 =item *
4643
4644 added templates.pod, which contains most templating documentation,
4645 copied from new documentation in various places (shop.pl, search.pl,
4646 Generate::*.pm).
4647
4648 =item *
4649
4650 search.pl wasn't handling single-quoted search terms correctly
4651
4652 =item *
4653
4654 added ifInMenu tag
4655
4656 =item *
4657
4658 more changes to support multiple catalogs:
4659
4660 =over 4
4661
4662 =item *
4663
4664 the initial catalog can be removed.  The initial catalog isn't useful
4665 when you need more than one catalog.  If you want multiple catalogs
4666 you need to remove the initial catalog and then add new ones.  The
4667 templates need work too.
4668
4669 =item *
4670
4671 the link/admin fields for the new article are set correctly (oops)
4672
4673 =item *
4674
4675 added a sample section template for a multi-catalog shop
4676
4677 =back
4678
4679 =item *
4680
4681 the sample templates look better, along with better title images
4682
4683 =item *
4684
4685 the shop was being generated with a non-secure url
4686
4687 =item *
4688
4689 parent articles were not being regenerated when an article was deleted
4690
4691 =back
4692
4693 =head2 0.04
4694
4695 You will need to recreate the articles table, since a new column has
4696 been added to support article thumbnails.
4697
4698 =over 4
4699
4700 =item *
4701
4702 Added article thumbnails.
4703
4704 =item *
4705
4706 Multiple product catalogs.
4707
4708 =item *
4709
4710 leadTime is now modifiable in products.
4711
4712 =item *
4713
4714 Bug fix: only list .tmpl files from template directories in article
4715 editing forms.
4716
4717 =item *
4718
4719 Bug fix: prevent adding non-catalog subsections to the shop section.
4720
4721 =item *
4722
4723 Bug fix: the crumbs iterator no longer shows crumbs that have "don't
4724 list in menu" set.  Such subsections often shouldn't be linked to.
4725
4726 =item *
4727
4728 The documentation on article templates has been improved.
4729
4730 =item *
4731
4732 Some tags that operate on articles have been expanded to work on all
4733 article objects available in the template.
4734
4735 =back
4736
4737 =head1 AUTHOR
4738
4739 Tony Cook <tony@develop-help.com>
4740
4741 I originally wrote BSE while an employee at SquirrelWeb
4742 (http://www.squirrelgroup.com/) for one of VisualThought's clients,
4743 bodyScoop.com (http://www.bodyScoop.com.au/).
4744
4745 Most of the BSE templates were created by Adrian Oldham of Visual
4746 Thought Communications (http://www.visualthought.com.au) He also
4747 funded and suggested many improvements.
4748
4749 Realware Systems (http://www.realware.com.au/) funded the nested
4750 catalogs, IIS support, the image access tags, and many other shop
4751 improvements, including most of the BSE::Custom hooks.
4752
4753 =cut