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