]> git.imager.perl.org - bse.git/blob - site/docs/bse.pod
c27771c71cd5398116826e9b053a21bb2e0e3f59
[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.12_24
14
15 =over
16
17 =item *
18
19 DevHelp::HTML, used to provide HTML and URI escaping wasn't including
20 a required module.  D'oh.
21
22 =item *
23
24 the keywords tag in the search page was being overridden by a tag of
25 the same name in the global article tags.  The old global C<keywords>
26 tag wasn't very useful and has been removed.
27
28 =item *
29
30 the templates drop-down in the subscriptions system included
31 duplicates
32
33 =item *
34
35 the crumbs iterator is now available on the article edit pages, and we
36 now present a path on the main edit page
37
38 =item *
39
40 you can now use <:crumb I<fieldname>:> to get to crumb article
41 information.  The current <:crumbs I<fieldname>:> will be obsoleted at
42 some point in the future.
43
44 =item *
45
46 the content of the help files no longer render as links in Mozilla
47
48 =item *
49
50 C<< <:typename I<which>:> >> tag added to the article editor pages
51
52 =item *
53
54 the list of articles available to page generation was in the wrong
55 order
56
57 =item *
58
59 when access control was switched off, links were displayed to permit
60 deletion of articles with children, when they shouldn't have. (#221)
61
62 =item *
63
64 Most article editor actions now accept an r parameter which can be
65 used to decide what happens after the action.  (#225, #226)
66
67 The save_new action adds an id parameter onto the end of the supplied
68 url if the r parameter is supplied.
69
70 =item *
71
72 more messages are included when the article editor successfully
73 performs an action (#225)
74
75 =item *
76
77 article editor and generator tags that generate arrows now take an
78 image prefix parameter which can be used to select alternate arrow
79 images.  A second parameter can also be used to add onto the refresh
80 URL to supply extra information to the refreshed to page. (#224, #225,
81 #226)
82
83 =item *
84
85 some code in BSE::Util::Tags was calling CGI::escapeHTML() at regen
86 time (#223)
87
88 =back
89
90 =head2 0.12_23
91
92 =over
93
94 =item *
95
96 the list of templates in the drop down on the article edit page didn't
97 reflect the local_templates config option correctlt.
98
99 =item *
100
101 validation errors weren't always reported (or acted upon) correctly
102
103 =item *
104
105 when an invalid product options string was stored a 500 error was
106 produced when generating the page
107
108 =item *
109
110 the image tag wasn't including a closing " at the end of the alt
111 attribute
112
113 =item *
114
115 the article generation code no longer relies upon CGI.pm functions for
116 escaping HTML, URIs or producing product option popups, this should
117 make it possible to use gen.pl from cron jobs without getting prompts
118 for CGI parameters
119
120 =item *
121
122 catalogs had two buttons labelled "Add product", but one added
123 catalogs.  Relabelled the one that adds catalogs to "Add Sub-catalog".
124
125 =item *
126
127 the ifnew tag on edit templates is no longer available, use ifNew
128 instead (this was true as of 0.12_22)
129
130 =item *
131
132 added a flags field to articles, this is used for both BSE internal
133 flags and for site specific flags.
134
135 =item *
136
137 the search index builder will now only index articles that are listed,
138 or have the "Index even if hidden" (I) flag set.  Changed the simple
139 search test to search for a non-hidden article.
140
141 =item *
142
143 the title field of all articles are now validated to include at least
144 one non-space character
145
146 =item *
147
148 validation failures on images and files are now available via the
149 error_img tag
150
151 =item *
152
153 the move image up/down action on the images manager were refreshing to
154 the wrong page after reordering the images
155
156 =item *
157
158 changed default level names in Constants.pm and bse.cfg
159
160 =item *
161
162 changed tests to use the new level names
163
164 =item *
165
166 templates admin/subs/add.tmpl and admin/add_product.tmpl have be
167 consolidated into their edit versions
168
169 =back
170
171 =head2 0.12_22
172
173 =over
174
175 =item *
176
177 added iterator allkids_of to iterate over the children and
178 stepchildren of a given article.
179
180 =over
181
182  <:iterator begin allkids_of I<parent_id1> ...:>
183  <:ofallkid I<field>:>
184  <:iterator end allkids_of:>
185
186 =back
187
188 =item *
189
190 when you clicked send from the subscriptions list the archive parent
191 field wasn't being set from the value set when adding/editing the
192 subscription
193
194 =item *
195
196 generate_search() wasn't supplying a config object when creating the
197 article generator.  This caused problems when some article types were
198 embedded within the search page.
199
200 =item *
201
202 added mailing list info
203
204 =item *
205
206 $TMPLDIR is no longer present or used in Constants.pm.  Use templates
207 in the [paths] section of the config file.
208
209 =item *
210
211 The path specified by the local_templates entry in [paths] is now
212 searched for templates before the path specified by the templates
213 entry in [paths].  This can be used to keep locally modified versions
214 of templates separate from the distributed templates.
215
216 =item *
217
218 reordering arrows now display a filler image where there's a single
219 missing arrow image (at the top and bottom of the list).  No spacer is
220 displayed if there's a single item.
221
222 =item *
223
224 added tt[text], pre[text], h1[class|text] through h6[class|text],
225 class[class|text] tags to the body text formatter.  Paragraphs are now
226 closed by the body text formatter.
227
228 =item *
229
230 added a few more tests
231
232 =back
233
234 =head2 0.12_21
235
236 =over
237
238 =item *
239
240 template change from adrian (edit_steps.tmpl):
241
242 Finally fixed something that has bugged me for a while... I simply 
243 moved the "if Kids" conditional to include the note about "Delete 
244 only removes the stepkid relationship..." since not much point in 
245 showing that is no step kids available... the step parent panel 
246 already did this.
247
248 =item *
249
250 printable.pl now attempts to look for a content type for a given
251 template.  This can be used for different types of presentation, for
252 example WAP.
253
254 =item *
255
256 printable.pl now uses the configured charset if set.
257
258 =back
259
260 =head2 0.12_20
261
262 =over
263
264 =item *
265
266 the change to using HTML::Entities cause CR characters to be encoded
267 when written to the browser.  This causes some browsers some
268 confusion.  The article and product tags in BSE::Edit::Article and
269 BSE::Edit::Product now remove these before output.
270
271 =item *
272
273 if a ## or ** list didn't have a final newline the final item wasn't
274 included in the conversion to a HTML list
275
276 =item *
277
278 some new templates from Adrian
279
280 =item *
281
282 Adrian added some more default user level permissions
283
284 =back
285
286 =head2 0.12_19
287
288 =over
289
290 =item *
291
292 article matching for global permissions was still broken.  The change
293 broke access to the descendants flag, but it all seems to be working
294 now.
295
296 =item *
297
298 forgot to include access.pod in the MANIFEST. Added it.
299
300 =item *
301
302 added descriptions of the step child/parent permissions to access.pod
303
304 =item *
305
306 the possible stepparents drop-down checked if the possible stepparents
307 could have children, but didn't check if the current article could
308 have stepparents.
309
310 =back
311
312 =head2 0.12_18
313
314 =over
315
316 =item *
317
318 article and global permissions should now be listed sorted by their
319 identifier
320
321 =item * 
322
323 the not and descendants flags were being ignored on global permissions
324
325 =item *
326
327 stepchildren and stepparents had no access control at all, now they
328 do.  Note that you may sometimes get a save button on the step
329 parent/children page with no fields to edit - this means you have save
330 rights on the current article but not on any of the listed step
331 children/parents.
332
333 =item *
334
335 fixed shopitem template from Adrian
336
337 =item *
338
339 more navigation links in the user/group management pages
340
341 =back
342
343 =head2 0.12_17
344
345 =over
346
347 =item *
348
349 the logon processing code was calling the logon processing code rather
350 than the logon form code on a failed logon.  This cause infinite
351 recursion.
352
353 =item *
354
355 removed the pointless Admin menu link from the logon form
356
357 =item *
358
359 add.pl was producing a warning when called without an id parameter
360
361 =item *
362
363 generate.pl didn't refresh properly if the user didn't have permission
364 to regenerate
365
366 =item *
367
368 the menu now only shows the regenerate options if the user has
369 permission to do so
370
371 =item *
372
373 move.pl (used to handle the reording arrows) didn't even compile
374
375 =item *
376
377 the hide/show links on the product detail page pointed at the wrong
378 place, and were still shown if the user didn't have the rights to do
379 the job.
380
381 =item *
382
383 the edit_product template displayed the hide/show link even if the
384 user wasn't permitted to do so
385
386 =item *
387
388 new templates from adrian to hardcode the text color in the file lists
389 on article pages
390
391 =back
392
393 =head2 0.12_16
394
395 =over
396
397 =item *
398
399 the ifUserCan tag wasn't converting article names into numbers
400 correctly
401
402 =item *
403
404 a few pages didn't supply the article parameter to ifUserCan correctly
405 (or at all in some cases)
406
407 =back
408
409 =head2 0.12_15
410
411 =over
412
413 =item *
414
415 global permissions simply didn't work, due to a dumb bug
416
417 =item *
418
419 the user/group admin pages now display buttons and checkboxes more
420 intelligently, depending on the user's rights
421
422 =item *
423
424 the user/group save processing was trying to call an undefined method
425 if the user didn't have access to a function.  As was the add form in
426 add.pl if there wasn't an article the user could add to at the given
427 level
428
429 =item *
430
431 the hide/unhide links on the edit_product page pointed at the wrong
432 place.
433
434 =item *
435
436 image, file, stepchild and stepparent changes now regenerate the
437 article (depending on the auto generate flag in Constants.pm).  You
438 will probably want to do a site regen when you're done still, since it
439 only regenerates the article you're working with, not it's
440 stepchildren and step parents.
441
442 =item *
443
444 link the edituser and editgroup help to the adduser and addgroup help
445 files respectively and add entries for the groups and members field
446 respectively.
447
448 =item *
449
450 added a help file for the access panel help icon to link to.
451
452 =back
453
454 =head2 0.12_14
455
456 =over
457
458 =item *
459
460 product_detail.tmpl hadn't been converted to use the global money tag
461
462 =item *
463
464 different versions of CGI::Cookie use different default paths, we now
465 force a path of "/".
466
467 =item *
468
469 really store the date and _time_ in the order date.
470
471 =item *
472
473 if the system needs you to logon for checkout, it now supplies the
474 correct parameter to the logon code to return you to the checkout
475 after you logon.
476
477 =item *
478
479 when setting configuration values from test.cfg with the:
480
481 I<section>.I<key> = I<value>
482
483 syntax, I<section> can now have spaces in it.
484
485 =item *
486
487 added some basic permission descriptions, and documentation on the
488 permissions system
489
490 =back
491
492 =head2 0.12_13
493
494 =over
495
496 =item *
497
498 the title field could be changed on products that had been ordered (an
499 edit field was presented for the summary field, but wasn't saved)
500
501 =item *
502
503 edit_0.tmpl had two manage access forms on it
504
505 =item *
506
507 use the new system logon rather than just checking for a browser
508 authentication userid, when marking an order filled.
509
510 =item *
511
512 attempt to account for differences between what browsers send us for
513 text areas (currently only for the body)
514
515 =item *
516
517 prevent <br> between each element of a <ol> or <ul> list, and try to
518 prevent one after the end.  Double spaced entries in a list are now
519 followed by <br>s to make it easier to do spaced out lists.
520
521 =item *
522
523 new hide and unhide targets for add.pl to make the links in the
524 product list work again
525
526 =item *
527
528 the save target for existing articles in add.pl now checks the user is
529 allowed to do it.
530
531 =item *
532
533 the product link on the final checkout page was broken (adrian)
534
535 =item *
536
537 the reordering links were displayed on the shop index page with the
538 multicat template
539
540 =item *
541
542 the query used to retrieve user, group and everyone permissions from
543 the database was broken.  Broke it into three separate queries.  I
544 wish mysql supported unions
545
546 =item *
547
548 you can now logout if you logged in using the form based logon
549
550 =item *
551
552 creating a user, saving an existing user or deleting a user will now
553 create an apache suitable user file, if the htusers field in [basic]
554 is set.
555
556 =back
557
558 =head2 0.12_12
559
560 =over
561
562 =item *
563
564 mysql_build.pl wasn't cleaning up old tables, and since we use it for
565 two different projects, the tables from another project were being
566 included.
567
568 =item *
569
570 annoying and numerous warning from Squirrel::Template eliminated
571
572 =item *
573
574 change admin.pl to check the admin user is logged on
575
576 =item *
577
578 change generate.pl to check the admin user is logged on and has the
579 access needed to regen
580
581 =item *
582
583 change move.pl to check the admin user is logged on and has the rights
584 to perform the move requested
585
586 =item *
587
588 change reorder.pl to check the admin user is logged on and has the
589 rights to perform the reorder requested
590
591 =item *
592
593 change shopadmin.pl to check the admin user is logged on and that they
594 have the rights needed to perform the requested operation
595
596 =item *
597
598 change subs.pl to check the admin user is logged on and that they have
599 the rights needed to perform the requested operation
600
601 =item *
602
603 BSE::Permissions::user_has_perms() now accepts an article id,
604 simplifying some code
605
606 =item *
607
608 added orderfiles iterator to the userpage.
609
610 =item *
611
612 updates to BSE::Edit::Article to only allow movements when the user
613 has appropriate rights
614
615 =item *
616
617 field change permissions
618
619
620
621 =back
622
623 =head2 0.12_11
624
625 =over
626
627 =item *
628
629 thumbnails are now saved when editing an existing article
630
631 =item *
632
633 the code to save keys to config sections which didn't already exist
634 was broken
635
636 =item *
637
638 the total_extras custom hook now takes two extra parameters, the
639 config object and a "stage" of processing, either "cart", "checkout",
640 "confirm" or "final".
641
642 =item *
643
644 new customization hook order_mail_actions($order, $items, $products,
645 $state, $cfg) for adding extra tags to the confirmation and order
646 emails.
647
648 =back
649
650 =head2 0.12_10
651
652 =over
653
654 =item *
655
656 pass the configuration object to each BSE::Custom method
657
658 =item *
659
660 new shop target, "checkupdate" intended for updating information on
661 the checkout page for customizations
662
663 =item *
664
665 you can now set extra configuration items in test.cfg using 
666
667 I<section>.I<key> = I<value>
668
669 (Adrian asked for this a while back.)
670
671 =item *
672
673 dynamic menu display
674
675 =item *
676
677 logon page (only seen if access control is enabled)
678
679 =item *
680
681 start of access control
682
683 =back
684
685 =head2 0.12_09
686
687 =over
688
689 =item *
690
691 ability to control permissions each admin user and group has access to
692
693 =item *
694
695 new help for image manager, other updated help files, many template
696 changes, thanks to Adrian.
697
698 =item *
699
700 deleting admin users and groups
701
702 =item *
703
704 selectable payment types
705
706 =item *
707
708 when sending a subscription with HTML content, the boundary between
709 MIME parts has been changed to hopefully prevent problems with some
710 mail clients
711
712 =item *
713
714 when sending a subscription with HTML content, any carriage-returns
715 are converted into linefeed to hopefully prevent problems when sending
716 subscriptions based on Macintosh format files to some mail clients.
717
718 =item *
719
720 htmlemail/basic.tmpl now includes a DOCTYPE, which will hopefully
721 prevent problems with some mail clients.
722
723 =item *
724
725 conditionals are now handled differently in the templating system to
726 avoid some of the undefined value warnings it was producing.
727
728 =item *
729
730 added fields intended for custom processing to the orders table
731
732 =back
733
734 =head2 0.12_08
735
736 This is a development release.  If you want stable try 0.12_01, since
737 many destabilizing changes have occurred since then.
738
739 If you install this release it's possible the upgrade_mysql.pl script
740 cannot be used to upgrade to a later release.
741
742 =over
743
744 =item *
745
746 oops, forgot to implement deleting articles, so I implemented it for
747 articles and unused products
748
749 =item *
750
751 you can now add admin groups and users.  This is in progress and the
752 templates and code still need work.
753
754 =item *
755
756 image files weren't being deleted when an image was deleted from an
757 article.
758
759 =item *
760
761 the page refreshed to the normal article edit page after deleting an
762 image, it should refresh to the image list
763
764 =item *
765
766 updated and new templates and new file icons from Adrian
767
768 =back
769
770 =head2 0.12_07
771
772 =over
773
774 =item *
775
776 added handling for a default template based on parent, level and type.
777 Returns to our original defaults from %LEVEL_DEFAULTS, but uses the
778 config file instead.
779
780 =item *
781
782 now lists level specific templates in the templates drop-down for
783 normal articles
784
785 =item *
786
787 updated templates from Adrian
788
789 =item *
790
791 since the default release date for new products is now the date the
792 product was added, and release is a datetime, add_item()'s check to
793 make sure the product had been released was broken, since it only
794 compared it with a date.
795
796 =item *
797
798 the purchase() and prePurchase() functions in shop.pl had a similar
799 problem
800
801 =item *
802
803 articles weren't being regenerated on save
804
805 =item *
806
807 report errors supplied to show_cart() in shop.pl
808
809 =item *
810
811 changed add_item() to report why it didn't add an item to the cart via
812 show_cart() (#167)
813
814 =item *
815
816 t/t00smoke.t now checks add.pl for normal articles, catalogs and
817 products
818
819 =item *
820
821 removed now unneeded onClick handler from delete in the image manager
822
823 =back
824
825 =head2 0.12_06
826
827 This release includes some inactive files for access control.
828
829 =over
830
831 =item *
832
833 replace edit_2.tmpl (which replaces edit_[345].tmpl) too
834
835 =item *
836
837 fix a dumb bug that prevented changes to the base article fields from
838 being saved
839
840 =back
841
842 =head2 0.12_05
843
844 =over
845
846 =item *
847
848 test script to check that all modules and scripts have use strict and
849 all scripts have -w in the #! line
850
851 =item *
852
853 the width and height values were swapped for display of an articles
854 images in the image manager template
855
856 =item *
857
858 children weren't sorted on article editing pages
859
860 =item *
861
862 updated templates from Adrian.
863
864 =item *
865
866 added a previousLogon field to accept the last value of lastLogon at
867 logon, so the previous value could be displayed.
868
869 =item *
870
871 editing an article would give a server error on save (due to some late
872 changes)
873
874 =back
875
876 =head2 0.12_04
877
878 =over
879
880 =item *
881
882 the wrong url was redirected to after adding a new image or saving images
883
884 =item *
885
886 manage catalogs now points back at shopadmin.pl
887
888 =item *
889
890 removed the "Image Wizard" buttons and replaced them with "Manage
891 Images" links in the image displays. (and fixed some missing </td> tags)
892
893 =back
894
895 =head2 0.12_03
896
897 =over
898
899 =item *
900
901 added child_types() method to BSE::Edit::Product so it knows what
902 child types a product can have.  This meant that the Add Product
903 button on the view in edit page was trying to add a normal article
904 rather than a product.  Typically a type parameter should be supplied
905 when creating new articles which aren't base articles.
906
907 =item *
908
909 shopadmin.pl was still using $imageEditor even though it wasn't
910 defined
911
912 =item *
913
914 t00smoke.t wasn't checking shopadmin.pl
915
916 =item *
917
918 edit_[1-5].tmpl and edit_catalog.tmpl included the starting <form> tag
919 in a conditional, breaking the form when creating a new article
920
921 =back
922
923 =head2 0.12_02
924
925 When installing this release over earlier releases:
926
927 =over
928
929 =item 1.
930
931 run mysql_upgrade.pl to upgrade the database schema
932
933 =item 2.
934
935 start the mysql shell and run the following query in your database:
936
937   update image set displayOrder = id;
938
939 to preserve image ordering.
940
941 =item *
942
943 the <:if art:> conditional tag is no longer available
944
945 =back
946
947 This is a development release, intended to test the new code in BSE,
948 in preparation for adding security mechanisms.  This is not intended
949 for production use yet.
950
951 Please see the known problems list.
952
953 =over
954
955 =item *
956
957 was parsing wrap parameters when there weren't any, which caused
958 warnings in the error log
959
960 =item *
961
962 you couldn't create a new subscription with the archiving switched off
963
964 =item *
965
966 if you edited a subscription, and unset the archive check, the save
967 left it as archived.
968
969 =item *
970
971 article editing is being almost completely rewritten to allow more
972 code re-use.
973
974 =item *
975
976 article image management has been completely rewritten so that the
977 changes you make are immediate, rather than relying on the user to
978 save the article after making changes.  This prevents the problem that
979 sometimes crops up where the images you're editing are for the wrong
980 article, or left over from an aberted attempt to create a new article.
981
982 This change also means you can't add images to an article until the
983 article has been created.
984
985 =item *
986
987 previously the order of images would change at the whim of the
988 database, which happened pretty rarely but still happened.  Added a
989 displayOrder field to images, and we base the ordering (and
990 re-ordering) on that instead of whatever the database chooses to give
991 us today.
992
993 =item *
994
995 products and catalogs use the new editing code
996
997 =item *
998
999 new tags on edit pages to give access to validation errors (most
1000 noticable on the add product page for now),
1001
1002 =item *
1003
1004 added an "old" tag to take a value from either the cgi parameters or a
1005 given other tag.  This makes error reporting more natural
1006
1007 =back
1008
1009 Known issues:
1010
1011 =over
1012
1013 =item *
1014
1015 the code allows the product title and summary to be changed.  The new
1016 security code will correct this (and allow them to be changed, or the
1017 product to be deleted, for unused products)
1018
1019 =item *
1020
1021 only add_product.tmpl has the new error reporting and old value access
1022 tags
1023
1024 =item *
1025
1026 the delete/undelete links for products don't work.  Currently the same
1027 functionality is available through the Listed drop-down, but it might
1028 be desirable to keep the links, comments welcome.
1029
1030 =back
1031
1032 =head2 0.12_01
1033
1034 Some derived tags may not work with the new fields, since I've
1035 switched to the version of Squirrel::Template used by Resource, which
1036 should reduce memory consumption a little, once all the tags are
1037 converted.
1038
1039 I think I have all the derived tags, but there might be one I
1040 missed...
1041
1042 =over
1043
1044 =item *
1045
1046 added ifAncestor conditional tag
1047
1048 =item *
1049
1050 added iterator children_of and tag ofchild, usage:
1051
1052 =over
1053
1054 <:iterator begin children_of I<parent_id1> ...:>
1055 <:ofchild I<field>:>
1056 <:iterator end children_of:>
1057
1058 =back
1059
1060 =item *
1061
1062 added iterator inlines and tag inline, usage:
1063
1064 =over
1065
1066 <:iterator begin inlines I<article_id1> ...:>
1067 <:inline I<field>:>
1068 <:iterator end inlines:>
1069
1070 =back
1071
1072 =item *
1073
1074 more test code to test the above (now I have the infrastructure to
1075 simplify adding these types of tests
1076
1077 =back
1078
1079 =head2 0.12
1080
1081 0.11_21 seems stable enough.
1082
1083 =head2 0.11_21
1084
1085 Assuming no other problems are found this will become 0.12
1086
1087 =over
1088
1089 =item *
1090
1091 oops, missed some updated templates from Adrian, applied bse_changes
1092 archive (#148)
1093
1094 =back
1095
1096 =head2 0.11_20
1097
1098 =over
1099
1100 =item *
1101
1102 another set of new templates from Adrian
1103
1104 =item *
1105
1106 extended title and email fields of site_user to 127 and 255 characters
1107 respectively
1108
1109 =back
1110
1111 =head2 0.11_19
1112
1113 =over
1114
1115 =item *
1116
1117 remove debugging code from Generate::excerpt() (#142)
1118
1119 =item *
1120
1121 added script interest.pl to send an email to the site owner when the
1122 user registers interest in a product (#133)
1123
1124 =back
1125
1126 =head2 0.11_18
1127
1128 =over
1129
1130 =item *
1131
1132 must_be_filled really fixed now (#128)
1133
1134 =item *
1135
1136 was calling function (now_sqldatetime()) that didn't exist
1137
1138 =item *
1139
1140 integrated new templates from Adrian, hopefully I got the right
1141 revisions.
1142
1143 =item *
1144
1145 <:moveallprod:> for the catalogs page (#122)
1146
1147 =item *
1148
1149 admin link for new catalogs now points at admin.pl (#120)
1150
1151 =back
1152
1153 =head2 0.11_17
1154
1155 =over
1156
1157 =item *
1158
1159 removed extraneous <:embed end:> from printable.tmpl
1160
1161 =item *
1162
1163 prevent access to parent fields from autovivifying $parent in
1164 Generate::Article::baseActs(), which caused ifParent to return true.
1165
1166 =item *
1167
1168 gen.pl now enables the query cache even for small batches, since it
1169 makes a big difference.
1170
1171 =item *
1172
1173 products pages now remove the <:embed start:> and <:embed end:>
1174 markers
1175
1176 =item *
1177
1178 need a space between "checked" and the closing "/>" in
1179 options_base.html for the checked to be recognized.
1180
1181 =item *
1182
1183 keepAddress stayed checked once checked
1184
1185 =item *
1186
1187 must_be_filled is now correctly looked up in [downloads] - it was
1188 looking in [download] (#128)
1189
1190 =item *
1191
1192 prevent a warning about using a regexp range of [\w-.] by making it
1193 [\w.-] (BSE::UserReg)
1194
1195 =item *
1196
1197 store the date _and_ time in the orderDate field so that orders are
1198 sorted correctly on the user page. (#132)
1199
1200 =item *
1201
1202 add sort order after date to sort by id descending for orders on the
1203 same date (#132)
1204
1205 =item *
1206
1207 highlight multi-word matches in search excerpts (#125)
1208
1209 =item *
1210
1211 help for body text from add product page (#118)
1212
1213 =item *
1214
1215 new templates from Adrian
1216
1217 =item *
1218
1219 when creating a new product, the release date was being set to
1220 2001-01-01, rather than the more useful C<today> (whatever day that
1221 happens to be).  This was mostly visible to the search engine. (#130)
1222
1223 =item *
1224
1225 images list now available on edit_product.html page
1226
1227 =back
1228
1229 =head2 0.11_16
1230
1231 =over
1232
1233 =item *
1234
1235 updated templates from Adrian (which I forgot to add in 0.11_15
1236 <sigh>)
1237
1238 =back
1239
1240 =head2 0.11_15
1241
1242 =over
1243
1244 =item *
1245
1246 moved step kids/step parents management to their own page (if you use
1247 the old edit templates you can keep them on the same page.)
1248
1249 =item *
1250
1251 added file_unlink option to [debug] in bse.cfg
1252
1253 =item *
1254
1255 added mail_encryption option to [debug] in bse.cfg
1256
1257 =item *
1258
1259 minor reorganization of mail encryption to avoid a "Odd number of
1260 elements in hash assignment" error in some circumstances.
1261
1262 =item *
1263
1264 added help to the article editor pages
1265
1266 =item *
1267
1268 added license
1269
1270 =item *
1271
1272 added <:movestepkid:> tag to the Generate::Article set of tags
1273
1274 =item *
1275
1276 added the BSE::Version class and the <:release:> tag
1277
1278 =item *
1279
1280 more admin templates (most of the edit_*.tmpl) can now be controlled
1281 from the config file.
1282
1283 =item *
1284
1285 fixed a broken in-page link from the refresh after adding a stepparent
1286
1287 =item *
1288
1289 fixed an uninitialized value warning introduced in 0.11_14
1290
1291 =item *
1292
1293 changed the misleading "Uploaded files" to "Uploaded images" on the
1294 edit pages.
1295
1296 =back
1297
1298 =head2 0.11_14
1299
1300 =over
1301
1302 =item *
1303
1304 imageclean.pl now keeps thumbnail images
1305
1306 =item *
1307
1308 new display templates from adrian
1309
1310 =item *
1311
1312 added the stepkids and allkids options to ifUnderThreshold.
1313
1314 =item *
1315
1316 documented the C<kb>, C<date>, C<ifEq>, C<ifMatch> and C<cfg> tags.
1317
1318 =back
1319
1320 =head2 0.11_13
1321
1322 This is a test release.
1323
1324 =over
1325
1326 =item *
1327
1328 added the kb tag which formats the result of it's arguments with a k
1329 suffix if the value is over 1000.  This can be used for making file
1330 size displays prettier.
1331
1332 =item *
1333
1334 the config variable wasn't being passed into the ImageEditor object in
1335 shopadmin.pl
1336
1337 =back
1338
1339 =head2 0.11_12
1340
1341 This is a test release.
1342
1343 =over
1344
1345 =item *
1346
1347 make the downloadable files feature available on other pages
1348
1349 =item *
1350
1351 add code to support downloads of non-paid for files
1352
1353 =back
1354
1355 =head2 0.11_11
1356
1357 =over
1358
1359 =item *
1360
1361 make the url tag generate the full url on "extra" pages.
1362
1363 =back
1364
1365 =head2 0.11_10
1366
1367 =over
1368
1369 =item *
1370
1371 test.cfg now has a C<securl> option to control the configured secure url
1372
1373 =item *
1374
1375 added site/doc/secure.pod, describing security considerations
1376
1377 =item *
1378
1379 article title field has been extended to 255 characters.  The title
1380 edit field maximum length can be controlled with the C<title_size>
1381 item in [field] in F<bse.cfg>.
1382
1383 =item *
1384
1385 you can get access to the currently logged in user on the checkout and
1386 cart pages using the C<ifUser> conditional tag and the C<user> value
1387 tag.
1388
1389 =item *
1390
1391 stripped some more common code out of shop.pl
1392
1393 =item *
1394
1395 extended the common cfg tag to take a third default value parameter
1396
1397 =item *
1398
1399 search result excerpts can now bold partial matches 
1400
1401 =item *
1402
1403 the page regenerator didn't handle the case where a port name was
1404 present in the secure url.
1405
1406 =item *
1407
1408 now generate gen.html from gen.pl
1409
1410 =item *
1411
1412 added POD to site/docs/makedocs and generate the HTML
1413
1414 =item *
1415
1416 added POD to site/util/upgrade_mysql.pod and generate a HTML version
1417
1418 =item *
1419
1420 when a user logs on and the secure url is different from the base url,
1421 BSE now refreshes to the other side of the site to set the same
1422 session cookie there.  This allows session information to be shared
1423 with the two sides of the site.
1424
1425 There is a known issue with this: any session information (like the
1426 shopping cart) stored on the other side of the site is not retained.
1427
1428 =back
1429
1430 =head2 0.11_09
1431
1432 =over
1433
1434 =item *
1435
1436 updated user/* templates from Adrian
1437
1438 =item *
1439
1440 checkout code for the shop didn't pass in the config object to the
1441 mail class
1442
1443 =item *
1444
1445 work around a bug in the search index builder
1446
1447 =item *
1448
1449 finally added some test code.  This isn't ready for general use yet and
1450 could damage your system.  So don't use it.
1451
1452 =item *
1453
1454 BSE::Cfg now checks the current directory as well as $FindBin::Bin,
1455 this lets initial.pl work
1456
1457 =back
1458
1459 =head2 0.11_08
1460
1461 This is a test release.
1462
1463 I still need to integrate some of the customization hooks from the
1464 realware branch.
1465
1466 =over
1467
1468 =item *
1469
1470 remove dependency on Time::HiRes (this was used for benchmarking while
1471 speeding up the site regen.)
1472
1473 =item *
1474
1475 the global date tag didn't handle a date where the time was missing
1476 (like article.lastModified).  And it ignored the time when it did
1477 manage to extract it.
1478
1479 =item *
1480
1481 remove query caching change reports (Table.pm)
1482
1483 =back
1484
1485 =head2 0.11_07
1486
1487 This is a test release.
1488
1489 =over
1490
1491 =item *
1492
1493 initial.pl now looks at the config file for the secure base url
1494
1495 =item *
1496
1497 BSE::Util::Secure wasn't importing md5_hex
1498
1499 =item *
1500
1501 added missing user/email_conferror_base.tmpl
1502
1503 =item *
1504
1505 the user/confirmed.tmpl entry was missing from [pregenerate] in the
1506 supplied bse.cfg.  Also user/email_conferror.tmpl
1507
1508 =item *
1509
1510 the randomdata key was missing from the [basic] section in the
1511 supplied bse.cfg
1512
1513 =item *
1514
1515 changed message in site/templates/user/toosoon_base.tmpl to prevent
1516 panic when the user goes back and selects another group
1517
1518 =item *
1519
1520 changed meaning of ifUser in user templates to accept a parameter if
1521 present
1522
1523 =item *
1524
1525 updated user/options_base.tmpl to display email confirmed information
1526 a bit more correctly
1527
1528 =item *
1529
1530 the admin can choose to hide some subscriptions
1531
1532 =back
1533
1534 =head2 0.11_06
1535
1536 This is a test release.
1537
1538 I wouldn't be suprised to find problems in this release, there have
1539 been a lot of changes.
1540
1541 Still needs some documenting.
1542
1543 =over
1544
1545 =item *
1546
1547 optimized generate_all() for large sites.  Despite the fact most of
1548 the improvement came from caching, generate seems to use less memory.
1549
1550 =item *
1551
1552 added gen.pl command-line regen script
1553
1554 =item *
1555
1556 added option to generate.pl to just regen extras and base pages
1557
1558 =item *
1559
1560 $URLBASE and $SECURLBASE from Constants.pm have been moved to C<url>
1561 and C<secureurl> in the C<[site]> section of bse.cfg
1562
1563 =item *
1564
1565 datadump.pl now uses the newer database configs (has it worked
1566 recently?) and the newer mail interfaces.
1567
1568 =item *
1569
1570 subscriptions management - interfaces to add new subscription
1571 (newsletter) types, and displays options in user options to allow a
1572 user to subscribe.  To prevent abuse by spammers (maybe) and by other
1573 attackers, we get the user to confirm subscription of their email
1574 address.  This is big.
1575
1576 =item *
1577
1578 %EXTRA_TAGS has been moved to C<[extra tags]> in bse.cfg
1579
1580 =back
1581
1582 =head2 0.11_05
1583
1584 This is a test release.
1585
1586 =over
1587
1588 =item *
1589
1590 added base_tags() to BSE::Custom (tags available during static
1591 generation of most pages.)
1592
1593 =item *
1594
1595 step(kids|parents) now available to all articles, though you may have
1596 some problems connecting the shop articles (catalogs,products) to
1597 others
1598
1599 =item *
1600
1601 standard date tag available in most places
1602
1603 =item *
1604
1605 the <:summary:> tag now takes an optional which parameter, defaulting
1606 to "child".
1607
1608 =item *
1609
1610 you can now specify the default template for children of a given
1611 article.
1612
1613 =item *
1614
1615 you can specify extra template directories to search while editing a
1616 given article.
1617
1618 =item *
1619
1620 moved the side bar logon form to it's own article (loaded by
1621 initial.pl) and added it to the side bar subsection.
1622
1623 =item *
1624
1625 shortened the long message used in the refresh back to user.pl when
1626 the user has file based products in their cart, but hasn't logged in.
1627 This was causing problems with IE6.  It now attempts to pull a longer
1628 message out of the config file.
1629
1630 =back
1631
1632 =head2 0.11_03
1633
1634 =over
1635
1636 =item *
1637
1638 handling of downloads from the user page is handled better: you don't
1639 get a download link unless the file is downloadable, and rejected
1640 download results in a refresh to the user page rather than just
1641 displaying the user page
1642
1643 =item *
1644
1645 the logon and register pages can now be passed a refresh url, which
1646 the shop uses when it refreshes to the logon page
1647
1648 =item *
1649
1650 add an orders button when logged in
1651
1652 =item *
1653
1654 the file list was messed up
1655
1656 =back
1657
1658 =head2 0.11_02
1659
1660 Another test release:
1661
1662 =over
1663
1664 =item *
1665
1666 actually tested the form filling with the user's defaults
1667
1668 =item *
1669
1670 modify localinst.perl to remove the default bse.cfg
1671
1672 =item *
1673
1674 have the checkout function return if the user needs to register (shop.pl)
1675
1676 =item *
1677
1678 check in a few more places if the user needs to register (shop.pl)
1679
1680 =item *
1681
1682 changed names of fields in SiteUsers to match the checkout form
1683
1684 =item *
1685
1686 added telephone and facsimile fields to the user options
1687
1688 =back
1689
1690 =head2 0.11_01
1691
1692 Test release:
1693
1694 =over
1695
1696 =item *
1697
1698 supports files attached to products for sale
1699
1700 =item *
1701
1702 user registration
1703
1704 =item *
1705
1706 we now have a config file
1707
1708 =back
1709
1710 =head2 0.11
1711
1712 Looks like all known problems are fixed.  Time to do a semi-major
1713 release.
1714
1715 =head2 0.10_16
1716
1717 =over
1718
1719 =item *
1720
1721 hopefully fixed an occasionaly problem where the images would reorder
1722 themselves
1723
1724 =back
1725
1726 =head2 0.10_15
1727
1728 =over
1729
1730 =item *
1731
1732 make the depth parameter in <:embed which template depth:> work
1733
1734 =item *
1735
1736 give the sitemap a lower depth since 7 levels (5 + the level1 and 2)
1737 is too much.
1738
1739 =back
1740
1741 =head2 0.10_14
1742
1743 =over
1744
1745 =item *
1746
1747 try to avoid dividing entered prices by 100 when there's an error on
1748 the product edit/add form.  There's still some potential problems
1749 here, but they're much less likely to cause a problem.
1750
1751 =item *
1752
1753 remove the border from image[] generated images
1754
1755 =item *
1756
1757 move the error message on the product add form so it isn't mixed up
1758 with the menu
1759
1760 =item *
1761
1762 the dummy product used to generate the product edit form after an
1763 error wasn't useful for getting step catalogs, get the real product
1764 object just for that.
1765
1766 =back
1767
1768 =head2 0.10_13
1769
1770 =over
1771
1772 =item *
1773
1774 remove the border from embedded images with a url
1775
1776 =item *
1777
1778 fixed an old bug that defaulted the threshold from the template (oops)
1779
1780 =item *
1781
1782 the ... in <:image which align ...:> or <:image which field ...:> is
1783 now appended to the attributes of the image field.  If it includes a
1784 border attribute the default border attribute is suppressed.
1785
1786 =back
1787
1788 =head2 0.10_12
1789
1790 =over
1791
1792 =item *
1793
1794 new order_list templates from adrian (moved the filter forms into the table)
1795
1796 =item *
1797
1798 fixed the image wizard for products.  I'm suprised this ever worked.
1799 Wasn't preserving parentid when creating a new product.
1800
1801 =item *
1802
1803 new edit_product template from adrian
1804
1805 =item *
1806
1807 stupid bug in BSE::Shop::Util
1808
1809 =item *
1810
1811 email is now in BSE::CustomBase->required_fields() and can be removed
1812 by BSE::Custom->required_fields().  If it is removed then no
1813 validation of the email address is performed.
1814
1815 =item *
1816
1817 state changes made in handling the confirm page are now saved
1818
1819 =item *
1820
1821 added strict to a few modules
1822
1823 =item *
1824
1825 added missing error handling methods to BSE::Mail.
1826
1827 =item *
1828
1829 old tag on the confirm tag now never gives the undef value message
1830
1831 =item *
1832
1833 if you specify a embedding depth less than the current maximum, you
1834 won't get an error message embedded when passing that depth.  This
1835 lets you do more interesting effects.
1836
1837 =item *
1838
1839 shop.pl now writes mail sending errors to STDERR (to the error log on
1840 apache) rather than aborting the order display (since the order
1841 actually exists at this point.)
1842
1843 =back
1844
1845 =head2 0.10_11
1846
1847 =over
1848
1849 =item *
1850
1851 support for filtering the order lists by dates entered by the user
1852
1853 =item *
1854
1855 make the add section link work, and make the link itself a little more 
1856 usable
1857
1858 =item *
1859
1860 removed some old debug code
1861
1862 =item *
1863
1864 make BSE::Custom->checkout_actions() work on the confirmation page
1865
1866 =back
1867
1868 =head2 0.10_10
1869
1870 =over
1871
1872 =item *
1873
1874 documented new tags for Product.pm and Article.pm
1875
1876 =item *
1877
1878 shopadmin.pl can list/move the stepkids (you can hide them too)
1879
1880 =item *
1881
1882 added some tests to test if various iterators show anything,
1883 ifProducts, ifAnyProds, ifStepProds.
1884
1885 =back
1886
1887 =head2 0.10_09
1888
1889 =over
1890
1891 =item *
1892
1893 put the reorder links into the edit templates
1894
1895 =item *
1896
1897 fix expire labels for edit_1.tmpl and edit_catalog.tmpl
1898
1899 =item *
1900
1901 reordering from the catalog works
1902
1903 =item *
1904
1905 reordering from the product editor works
1906
1907 =back
1908
1909 =head2 0.10_08
1910
1911 Making progress.
1912
1913 =over
1914
1915 =item *
1916
1917 fixed the ordering of items in the allprods tag
1918
1919 =item *
1920
1921 make allprods always work with products
1922
1923 =item *
1924
1925 realware wanted a confirmation page
1926
1927 =back
1928
1929 =head2 0.10_07
1930
1931 Another test release:
1932
1933 =over
1934
1935 =item *
1936
1937 initial step kids|parents for the shop
1938
1939 =item *
1940
1941 new popup menu templates from Adrian
1942
1943 =item *
1944
1945 added acknowledgements to AUTHOR section
1946
1947 =back
1948
1949 =head2 0.10_06
1950
1951 Test release for Adrian, with his new templates.
1952
1953 =head2 0.10_05
1954
1955 Test release for Adrian.
1956
1957 =head2 0.10_04
1958
1959 Don't use this version.
1960
1961 =over
1962
1963 =item *
1964
1965 URLs can be directly associated with an image
1966
1967 =item *
1968
1969 multiple levels of catalogs
1970
1971 =item *
1972
1973 shop item options
1974
1975 =item *
1976
1977 filtering/sorting of orders from the template
1978
1979 =item *
1980
1981 embedded templates can be based on the template of the article being
1982 embedded
1983
1984 =item *
1985
1986 order status information, marking an order has having been filled
1987
1988 =item *
1989
1990 better handling of generation errors
1991
1992 =item *
1993
1994 partial support for Microsoft SQL Server under IIS
1995
1996 =item *
1997
1998 extended price tag for the cart and checkout pages
1999
2000 =item *
2001
2002 prePurchase target for the shop, to allow custom credit card processing
2003
2004 =item *
2005
2006 template based filtering of the order list
2007
2008 =back
2009
2010 =head2 0.10_03
2011
2012 =over
2013
2014 =item *
2015
2016 added the admin/reorder.pl script
2017
2018 =item *
2019
2020 template names in <: embed :> tags have $ replaced with the template
2021 name of the article.
2022
2023 =back
2024
2025 =head2 0.10_02
2026
2027 =over
2028
2029 =item *
2030
2031 added the image[] tag  (image[index|align|url])
2032
2033 =item *
2034
2035 added printable.pl, site/templates/printable/printable.tmpl to allow
2036 printable versions of pages (among other things)
2037
2038 =item *
2039
2040 implemented the ifCurrentPage tag
2041
2042 =back
2043
2044 =head2 0.10_01
2045
2046 =over
2047
2048 =item *
2049
2050 added <:siteUrl:> tag in %EXTRA_TAGS (used by the RSS templates)
2051
2052 =item *
2053
2054 fixed broken template value for the formatting guide (initial.pl)
2055
2056 =item *
2057
2058 fixed broken admin links for the formatting guide (initial.pl)
2059
2060 =item *
2061
2062 the formatting guide now generates to
2063 http://your.site/a/format_guide.html (initial.pl)
2064
2065 =item *
2066
2067 RDF/RSS is now generated to /a/site.rdf.  This includes links and
2068 titles for the articles on the home page, and a search field (if the
2069 tool displaying the RSS supports that.)
2070
2071 =back
2072
2073 =head2 0.10
2074
2075 WARNING: the tag for articles found for a search has changed from:
2076
2077   article I<field>
2078
2079 to:
2080
2081   result I<field>
2082
2083 There is a new module required: HTML::Parser
2084
2085 =over 4
2086
2087 =item *
2088
2089 the <:embed child:> tags meaning has been expanded to allow embedding
2090 of any article with an optional template
2091
2092 =item *
2093
2094 there's now an embed[] tag for use in body text.  Both this and 
2095 <:embed ... :> are protected against infinite recursion.
2096
2097 =item *
2098
2099 changed display values for sections etc in Constants.pm, you can still
2100 put your own in when you customize.
2101
2102 =item *
2103
2104 the default templates for each level have been set to a single
2105 template, for a simpler default setup
2106
2107 =item *
2108
2109 new admin index pages, which may display a little better in some
2110 browsers
2111
2112 =item *
2113
2114 you can move articles between levels, if enabled in Constants.pm
2115
2116 =item *
2117
2118 unquoted search terms will do "start of word" searches if enabled in 
2119 Constants.pm
2120
2121 =item *
2122
2123 html[] tags and <html> body text now has tags stripped when displayed
2124 as a summary or as a search excerpt.  The search indexing can now
2125 handle both of these too.
2126
2127 =item *
2128
2129 the search template now uses 'result' rather than 'article' for the
2130 search result entries.  This is needed since the search base page is
2131 generated as an article, using a dummy article.  The title and
2132 titleImage for this dummy article can be specified in Constants.pm.
2133
2134 =item *
2135
2136 you can now control whether an unlisted level1 article is displayed in
2137 the crumbs for an article.  By default unlisted level1 articles are
2138 NOT listed anymore.
2139
2140 =item *
2141
2142 a bunch of new templates from adrian, including moving the common
2143 layout into base.tmpl where possible, support for "sidebars".
2144
2145 =item *
2146
2147 a formatting guide article in initial.pl (from adrian) (and then an
2148 updated version of it)
2149
2150 =item *
2151
2152 renamed INSTALL to INSTALL.txt to prevent wierdness if someone tries
2153 "make install" on a case-insensitive file system.
2154
2155 =item *
2156
2157 administration templates are now kept in the admin directory in the
2158 templates directory
2159
2160 =item *
2161
2162 added simple test installer.  WARNING: this destroys the existing content
2163 of your site.
2164
2165 =item *
2166
2167 distribution now includes site/htdocs/shop as a directory rather than
2168 as a file
2169
2170 =item *
2171
2172 schema/bse.sql now drops the tables if they already exist
2173
2174 =item *
2175
2176 the item description in the shopping cart is now a link to the item
2177
2178 =item *
2179
2180 changed some defaults in Constants.pm
2181
2182 =item *
2183
2184 catalog templates from $TMPLDIR/templates/catalogs weren't being handled
2185 correctly
2186
2187 =back
2188
2189 =head2 0.09
2190
2191 =over 4
2192
2193 =item *
2194
2195 added support for controlling access to the regenerate option
2196
2197 =item *
2198
2199 added the ability to disable auto-regeneration
2200
2201 this initially broke some buttons, fixed
2202
2203 =item *
2204
2205 properly escape child properties in add.pl
2206
2207 =item *
2208
2209 removing an article now removes any associated images
2210
2211 =item *
2212
2213 removing an image from an article now removes the image file when you
2214 save the article.
2215
2216 =item *
2217
2218 added datadump.pl (send an email containing a mysql datadump), with
2219 configuration in Constants.pm
2220
2221 =item *
2222
2223 added imageclean.pl - cleans up the image table and images directory
2224
2225 =item *
2226
2227 added an advanced admin page with links to datadump.pl and
2228 imageclean.pl (you can change these of course).
2229
2230 =item *
2231
2232 previously it was possible for a user with admin rights to choose a
2233 template that was outside the templates directory.  
2234
2235 =back
2236
2237 =head2 0.08
2238
2239 =over 4
2240
2241 =item *
2242
2243 modified administration templates
2244
2245 =item *
2246
2247 formatting is now stripped from body text before an excerpt is
2248 produced (for the search results).
2249
2250 =back
2251
2252 =head2 0.07
2253
2254 I'll add in the 0.07 change list as soon as I figure out what I changed...
2255
2256 Once I get my old 0.08 RC that may include the 0.07 change list.
2257
2258 =head2 0.06
2259
2260 Some changes are being made to allow the engine to be embedded into a
2261 site (specifically squirrelweb.com.au).
2262
2263 =over 4
2264
2265 =item *
2266
2267 Bug fix: shop.pl had a silly exporter mistake, and a sillier reference
2268 to an unknown variable name.
2269
2270 =item *
2271
2272 changed admin links to buttons for the catalog and product pages,
2273 added a Display button to the product page.
2274
2275 =item *
2276
2277 cleaned up the shopitem, cart_base, checkout_base, checkoutfinal_base,
2278 mailorder and mailconfirm templates, removing tags that don't work in
2279 them, removing references to bodyscoop, fixing broken images, removed
2280 thawte stamp.gif.
2281
2282 =item *
2283
2284 %EXTRA_TAGS now work in mailorder and mailconfirm templates
2285
2286 =item *
2287
2288 You can now use $SHOP_EMAIL_ORDER to disable sending the encrypted
2289 order.  (Useful only for testing or until you get encryption keys
2290 organized - there's no other way to get the credit card number and
2291 expiry date.)
2292
2293 =item *
2294
2295 Generate/Product.pm had a hard-coded link to the internal test
2296 site. (Doh!)
2297
2298 =item *
2299
2300 some base URIs can be configured, though this still needs some work.
2301
2302 =back
2303
2304 =head2 0.05
2305
2306 =over 4
2307
2308 =item *
2309
2310 Bug fix: only add the class attribute to thumbnails if one is supplied
2311 (doh!)
2312
2313 =item *
2314
2315 Moved shop configuration from shop.pl to Constants.pm
2316
2317 =item *
2318
2319 Extended template field to 127 characters so directories can be used
2320 without chopping off names.
2321
2322 =item *
2323
2324 Added installation documentation.
2325
2326 =item *
2327
2328 Templates in the drop-down lists in add.pl now includes templates from
2329 $TMPLDIR/$level and $TMPLDIR/common.
2330
2331 =item *
2332
2333 crumbs now include the section, whether or not they are listed.
2334
2335 =item *
2336
2337 added templates.pod, which contains most templating documentation,
2338 copied from new documentation in various places (shop.pl, search.pl,
2339 Generate::*.pm).
2340
2341 =item *
2342
2343 search.pl wasn't handling single-quoted search terms correctly
2344
2345 =item *
2346
2347 added ifInMenu tag
2348
2349 =item *
2350
2351 more changes to support multiple catalogs:
2352
2353 =over 4
2354
2355 =item *
2356
2357 the initial catalog can be removed.  The initial catalog isn't useful
2358 when you need more than one catalog.  If you want multiple catalogs
2359 you need to remove the initial catalog and then add new ones.  The
2360 templates need work too.
2361
2362 =item *
2363
2364 the link/admin fields for the new article are set correctly (oops)
2365
2366 =item *
2367
2368 added a sample section template for a multi-catalog shop
2369
2370 =back
2371
2372 =item *
2373
2374 the sample templates look better, along with better title images
2375
2376 =item *
2377
2378 the shop was being generated with a non-secure url
2379
2380 =item *
2381
2382 parent articles were not being regenerated when an article was deleted
2383
2384 =back
2385
2386 =head2 0.04
2387
2388 You will need to recreate the articles table, since a new column has
2389 been added to support article thumbnails.
2390
2391 =over 4
2392
2393 =item *
2394
2395 Added article thumbnails.
2396
2397 =item *
2398
2399 Multiple product catalogs.
2400
2401 =item *
2402
2403 leadTime is now modifiable in products.
2404
2405 =item *
2406
2407 Bug fix: only list .tmpl files from template directories in article
2408 editing forms.
2409
2410 =item *
2411
2412 Bug fix: prevent adding non-catalog subsections to the shop section.
2413
2414 =item *
2415
2416 Bug fix: the crumbs iterator no longer shows crumbs that have "don't
2417 list in menu" set.  Such subsections often shouldn't be linked to.
2418
2419 =item *
2420
2421 The documentation on article templates has been improved.
2422
2423 =item *
2424
2425 Some tags that operate on articles have been expanded to work on all
2426 article objects available in the template.
2427
2428 =back
2429
2430 =head1 AUTHOR
2431
2432 Tony Cook <tony@develop-help.com>
2433
2434 I originally wrote BSE while an employee at SquirrelWeb
2435 (http://www.squirrelgroup.com/) for one of VisualThought's clients,
2436 bodyScoop.com (http://www.bodyScoop.com.au/).
2437
2438 Most of the BSE templates were created by Adrian Oldham of Visual
2439 Thought Communications (http://www.visualthought.com.au) He also
2440 funded and suggested many improvements.
2441
2442 Realware Systems (http://www.realware.com.au/) funded the nested
2443 catalogs, IIS support, the image access tags, and many other shop
2444 improvements, including most of the BSE::Custom hooks.
2445
2446 =cut