3 BSE - an engine for simple magazine style WWW sites.
7 BSE is an engine for creating simple magazine type web sites.
9 Maybe I'll add some other bits here.
19 user.pl now has an C<a_orderdetail> target which accepts the order
20 number in C<id>. The order must belong to the currently logged on
25 affiliate.pl will no longer display pages for disabled users
29 the image manager will now display images as thumbnails if configured
32 Currently the only imaging tool that can be used for the thumbnailing
35 This adds the thumbimage, ifThumbs and ifCanThumbs tags to the article
38 See thumbnails.pod for more information.
42 localinst.perl (run with make testfiles) no longer deletes the content
43 of your htdocs/images directory.
53 logging out now clears the shopping cart
57 after logging in when you failed to add an item requiring logon now
58 refreshes back to adding the item again (#434)
62 setting [affiliate].subscription_required to an affiliate text id
67 trying to add a subscription product while not logged in now refreshes
68 more appropriately after you logon.
72 checks for renew/start only subscription products are now done when
73 you attempt to add the product to your cart.
77 SiteUser.pm was missing an import of sql_add_date_days(), which caused
82 the subscription expiry date functions were checking the wrong field
83 name for the expiry date. This caused problems when trying to add a
84 renewal product to the cart, amongst other things (#435)
88 the userpage now has access to a subscriptions iterator, includes
89 access to the subscription fields, and the ends_at, started_at and
90 max_lapsed status fields. This only shows subscriptions the user is
95 the options page now has a ifSubscribedTo tag. This accepts one
96 parameter which is the text id of the subscription.
100 the subscription order summary on the subscription detail page now
101 multiplies the period by the number of units bought
111 you can now configure a required subscription for affiliates, see the
112 documentation for C<subscription_required> in L<config>.
116 the product tag on the checkoutfinal page now accounts for database
121 the subscription detail template didn't display the usage field
126 the delete subscription link was incorrect
130 the delete subscription confirmation template wasn't supplied
134 the subscription edit/add templates were missing a closing </tr>
138 removed debug code from Squirrel::Row that was sending
139 C<add>I<classname> to the error log.
143 the test for whether a user was subscribed was incorrect.
147 the number of units of a product bought for a subscription product was
148 ignored, now 2 units of a 2 month sub product will act as 4 months.
152 it is now possible to include other config files from bse.cfg, see
153 [includes] in C<config.pod> for more information.
157 the doclink[] and popdoclink[] tags would not be removed from the
158 search page excerpts if the second parameter was present but empty.
162 more recent code using the m parameter could crash if the script was
163 passed two m parameters.
167 a method rename during development meant that some code was calling a
168 method that didn't exist, causing a 500 error.
172 if you supply an 'r' parameter that defines an 'm' parameter to
173 subadmin targets the code will no longer add it's own 'm' parameter.
177 DevHelp::Validate now includes some documentation of its built-in
184 The basic processing for subscriptions is now done.
190 added max_lapsed to the order_item table, to make sure subscription
191 expiries remain consistent.
195 the bse_subscriptions table was commented out for the last release (it
196 worked here because the table was created before I commented it out
201 ordering items with a subscription now results in the
202 bse_user_subscribed table being updated, and hence most of the code
203 which checks if a user has subscribed now has something to check
207 the users iterator on the subscription details page now works
211 subadmin.pl now has a target to update all users subscription expiry
212 dates from their orders.
216 messages usually weren't displayed from a refresh by subadmin.pl, when
217 they should have been
221 modern iterators could cause 500 errors (bad parameter list
226 modern iterators could generated undefined value warning in the logs
230 switched off debugging for Squirrel::Template, which should reduce log
231 pollution considerably.
241 I'm planning on making all base BSE permission checks use a "bse_"
242 prefix to avoid conflicts with add ons like nPort. The permission
243 checks should all now allow checks against bse_foo when only the foo
244 permission has been granted.
246 This should allow templates to be updated to use the C<bse_> prefix.
247 Note that the permission sets in bse.cfg must continue to use the
248 non-C<bse_> names for now.
252 most of the structure of subscriptions has been done, provided for
253 templating and testing.
255 Note in particular that the users iterator on the subscription details
256 page will return an empty list for now.
260 0.14_24 added ".html" to the end of "link title" links, this broke
261 regeneration. This release changes that to "_html" at the end of the
262 links, which shouldn't break regeneration and will hopefully still
263 allow google to index them.
265 I'll probably preserve the current behaviour if we add a mechanism for
266 setting the content filenames, since unlike filename changes this
267 preserves the link, so a title change won't break links from external
272 added site/docs/future_plans.pod to the distribution
278 Release in preparation for subscriptions implementation
284 deleting site user images didn't work - the SQL used to remove the
295 it's now possible to associate images with a site user (member), these
296 are editable both by the admin and the user themselves.
298 They work the same as the nport member images.
300 By default they are stored in the same location as uploaded files
301 (defaulted in the config file.)
303 Don't forget to change your custom admin edit site user template to
304 use the right enctype for the form.
308 you can now use siteuser images on the affiliate page.
312 SiteUser.pm was still using Orders rather than BSE::TB::Orders <sigh>
316 affiliate_name can now be set during registration or during addition
317 in the admin interface.
321 the require_affiliate_name flag in the config file is now supported
322 (it wasn't necessary for the original application)
326 [site users].display_affiliate_name is now used in validation errors
327 for the affiliate name field.
337 the referer checks for affiliate.pl extracted the Referer header
342 the order affiliate_code is now accepted as a CGI parameter during
343 purchase if it isn't set in the session.
347 the order siteuser_id field wasn't being set
351 added an affiliate_name column to the siteusers table. This value is
352 required to be unique if non-empty and may only contain alphanumeric
353 characters. You will need to add this to any custom templates.
357 affiliate.pl now accepts alternatives to the id parameter:
363 lo - the logon name of the user
367 co - the affiliate name of the user
373 some prep work for site user images
383 a few modules were still using Orders/OrderItems instead of
388 work around a discrepancy in the way mysql handles dates, step child
389 records marked to be released on a given date should now be released
390 on that date rather than the next day
394 added affiliate.pl, which can display an affiliate page or set the
395 saved affiliate code.
399 extra fields have been added to the site users table to allow for
400 custom data on the affiliate page.
404 a new debug flag dump_session has been added. if this is true then a
405 data dump of the session hash is performed after it is retrieved from
410 some of the order processing code checked incorrectly for
411 subscriptions (which don't exist yet anyway).
417 This release includes some structural changes to article editing,
418 please test before deploying it.
424 doing a sort of all children wouldn't include the unreleased
425 (step)childen in the sort (#389)
429 with access control enabled, using the reorder.pl script while not
430 logged (including due to a cookie timeout) on would produce a server
435 the Orders / Order / OrderItems / OrderItem classes are now
436 BSE::TB::Orders / BSE::TB::Order / BSE::TB::OrderItems /
437 BSE::TB::OrderItem, to try to use a more consistent naming system and
438 clean up the top level namespace
442 the prePurchase target has been disabled in shop.pl, since it's
443 effectively unmaintained, and probably completely broken
447 updated the document list of session values in BSE::Session.
451 defaults (both internal and configured) are now used to set
452 article/product fields on creation, this should allow simplified
453 creation templates to omit fields that don't need to be explicitly set
457 the warning about $Text::Wrap::columns only appearing once should
462 a shipping_cost column has been added to the order table. This is not
463 set by BSE at all yet, but is available for use by custom order save
468 some fields and code have been added to support subscriptions (no, not
469 the newsletter stuff)
473 removed some debug dump code from the shop
477 "link title" links now include ".html" at the end to allow Google to
482 some preperatory work has been done to handle affiliates and
493 differences in whether CR chars are passed in line separators could
494 cause formatting problems with ##/**/%% lists in body formatted text
498 a ##, %% or ** which wasn't at the beginning of a line could be
499 treated as part of a formatted list
509 the logon page used the user side help icons (#371)
513 the admin user and admin site user pages used the user side help icons
518 the change password page used user side help icons (#378)
522 the admin logon page now accepts an m parameter
526 in general, moved the common admin tags call after the common basic
527 tags call so that admin tags (like the admin help icon) replaces the
532 remove blank lines from the error messages produced on the admin user
533 administration pages (#382)
537 a very rough attempt at changes to support UTF-8 content has been made.
543 previously, if an error occured in producing a template that wasn't a
544 template not found error, while using an alternate template, a 500
545 error would be produced with no message in the error_log. Now an
546 error page is produced, with the message sent to STDERR (and hence to
551 BSE::DB::Mysql no longer reports that it found SQL in the database.
555 when link titles were enabled they were being produced twice.
559 added the <:today:> tag - returns the current date, by default
560 formatted as "dd-mm-yyyy", but can be reformatted as per the <:date
561 ...:> tag, for example <:today "%d/%b/%Y":>
565 added the <:arithmetic ...:> tag. Any text [I<word> ...] text in the
566 argument is replaced with the corresponding tag value and the final
567 result is then evalled. Do not ever use [cgi ...] values or any other
568 unvalidated data with this tag, to avoid security issues.
572 the <:sorthelp ...:> tag now seperates the returned URL arguments with
573 & instead of just & to produce correct HTML.
577 the url tag now generated absolute URLs in subscriptions
587 non-lower-case link[] commands in subscription body text was causing
588 500 errors, (doclink[] with unknown article names/ids could cause the
593 the <:help file entry:> tag can now be used in all templates, and
594 optionally takes a style argument, with the default style depending on
595 context. This tag is replaced as pregeneration time for pregenerated
598 In user pages (including the admin version of article pages) the style
601 In admin pages the style defaults to "admin".
603 The style chosen can select a template, and change icons and path
604 depending on the configuration file, see [help style ...] in
615 BSE::Mail::* now accept a bcc address parameter. This is intended for
626 image[...|url] was HTML encoding the url twice.
630 added an output_result() method to BSE::Request. This is currently a
631 shim around BSE::Request->output_result(), but it may change in the
636 added the <:oldi ...:> tag, for use on any dynamic page
638 <:oldi fieldname index func funcargs:>
640 This is used for extracting the correct previously entered value for a
645 the default <:old ...:> tag was ignoring the fourth and subsequent
646 parameters, for example, if the tag was:
648 <:old fieldx taga arg1 arg2:>
650 only arg1 was being passed to taga.
660 site/util/mysql.str hadn't been updated to the new format
664 added some support code for use in nPort.
674 makeIndex.pl was passing in incorrect parameters in a few places to do
675 with article formatting
679 added the poplink[] and popdoclink[] a body text tags
683 the link[] tag now uses the URL as the link title if no title is
688 the show_register target of user.pl now accepts a C<_t> argument as a
699 upgrade_mysql.pl now takes a -i filename for the extra table
700 structures to be installed. A -h for help option was added too.
704 the format of the database structure file for upgrade_mysql.pl has
705 changed, to allow for column types containing commas (like
710 tbe table[htmloption="value" ... ] form of the table body tag no
711 longer HTML escapes the options. (#348)
715 one of the changes to use the new formatter for summaries mixed up an
716 argument order, breaking the <:summary ... :> tag (#347)
720 fixed some problems with the new sorting features in reorder.pl.
724 BSE::DB::Mysql will now attempt to search the sql_statements table for
725 any SQL needed that isn't found in its internal table. This is
726 intended for use by external applications using BSE's database support
727 tools, specifically for the nport project.
733 This adds several destabilizing changes, test before using in any
740 you can now specify that BSE uses the configured secure URL, the
741 normal URL or a separate admin base URL for access to administrative
742 functions. The action parameter on any custom admin/logon.tmpl should
743 be changed to include the new <:adminbase:> tag.
747 reorder.pl now accepts a more sophisticated C<sort> parameter, it can
748 now be a comma separated list of fields to sort by, most significant
749 at the front. Any unknown fields are ignored. You can put C<-> in
750 front of any field name to sort that field in reverse.
754 the image[] and gimage[] tags now take a fourth parameter which can
755 either be a simple class name (all alphanumeric), a set of parameters
756 to the C<padding:> style command, or actual CSS style commands.
760 lastModified is now a datetime rather than a date, be sure to run
765 applied a change to the default table mapping from extension to MIME
766 content type, sent in by Adrian.
776 added the style[] body text tag
780 doclink[], class[] and style[] are now removed correctly from summary
785 the hr[] body tag now correctly uses C<size> instead of C<height>.
789 moved the custom_class() function to the new BSE::CfgInfo class.
793 first steps towards administration via the secure URL (or some other
798 the <:admin:> tag can now produce output based on a template.
799 <:admin:> in an article template uses C<admin/adminmenu/article.tmpl>,
800 <:admin:> in a product template uses C<admin/adminmenu/product.tmpl>,
801 <:admin:> in a catalog template uses C<admin/adminmenu/catalog.tmpl>,
802 <:admin foo:> uses C<admin/adminmenu/foo.tmpl>.
806 sorting the site user list by id should now sort numerically rather
811 You can now you %% instead of ## in body text for an alphabetical
812 rather than numerical ordered list
822 reworked the doclink[] changes so an article didn't need to be
823 supplied to the formatted. This fixed the <:bodytext ...:> tag.
827 word-wrapping in the text version of body text for subscriptions would
828 move the last word of a multi-line paragraph onto its own line,
829 whether it needed to be or not.
833 the way links appear in the text version of body text, and the link
834 list at the end can now be customized through the configuration file,
835 see the documentation on I<text_link_inline>, I<text_link_list> and
836 I<text_link_list_prefix> in config.pod for more information.
840 handle [] inside body text tags a little more intelligently. We
841 assume they are balanced, so b[foo [1]] will do the right thing, but
852 added doclink[] body tag
856 cookie generation is now centralized to prevent differences in cookie
857 generation from causing problems. This won't help with certain
858 configuration issues, which you'll need to fix yourself.
862 allow files not marked for sale, and listed in an ordered item to be
863 downloaded by a user from the userpage.
867 order files listed for an order on the userpage by item and display
868 order instead of alphabetically
872 filenames for uploaded files with non-alphanumeric characters are now
873 handled a bit differently - non-alphanumerics are now replaced with
874 '_' and then duplicate '_' are removed.
878 userpage base pages are now generated with an absolute link field to
879 force absolute article URLs to be generated
883 the text version of emails in subscriptions now includes the URL at
884 the bottom of the body text, with a bracketted number at the original
889 the edit member page now links to a list of orders for that user (if
894 the order detail page now links to the user's order list and their
905 logon.pl still required mod_perl.
909 subscription messages were being sent to subscribed but disabled
914 the search results page tags are now XHTML compatible.
918 you can now set pp=-1 on the member list page to list every user.
928 the stepkid tag would sometimes result in a warning in the web server
933 the templater would produce a warning from a <:switch:> tag under perl
938 the installer while now set the #! line of scripts based on the "perl"
939 configuration option in test.cfg.
943 some scripts would produce compilation errors when run under a perl
944 without mod_perl installed.
948 the implementation top/bottom left/right image placement has changed.
949 When you select a "bottom" option the images are simply placed as if
950 they were present in reverse order. This means that the image urls
951 are now used to form links.
955 gen.pl could produce a compilation error in some circumstances.
959 the telephone field is now actually required on checkout.
963 if the user options form included the email address but not the
964 subscriptions list and the user changed their email address, the
965 confirmation email wasn't being sent.
969 the <:ifItemAvail:> tag wasn't returning true for files that don't
974 spaces are now preserved in uploaded filenames, as underscores.
984 the <:switch:> template construct had required there be some text
985 between "<:switch:>" and the first case, this is no longer necessary.
986 You still might want to keep a newline there to make it easier to pick
991 the list of possible archive parents for subscriptions is now sorted
992 by title (#295) We now select the highest id article by default when
993 creating a new subscription, presuming it was created to store an
998 the <:recipient_count:> tag is now available on the subscription send
999 form, and the Send link is now always available on the subscriptions
1004 the subscription send action, if it somehow is submitted with no users
1005 subcribed, will no longer archive an article and update the most
1006 recent send date. This can happen if the last user unsubscribes while
1007 the administrator is composing their newsletter.
1011 the class[] body text tag now nests correctly when spanning over
1022 If the last value of a parsed tag parameter list was an unquoted 0,
1023 the 0 was not passed to the tag for processing.
1027 added the cfgsection iterator.
1031 iterators that allowed sorting/filtering now actually sort on the
1036 the stepkid tag on edit pages now checks the article is a stepkid
1037 before doing a hash lookup, preventing an undefined value warning
1041 the admin/edit_steps template was using invalid article names in
1046 the flags iterator and ifFlagSet tags weren't available on the add
1051 saving a site user in nopassword mode would result in a validation
1052 error if the email field was present but no confirmation email field
1053 was present. The confirmation email field is now only required if the
1054 supplied email address is different from that currently stored for the
1059 changing the user's email address in nopassword mode (and possibly in
1060 normal mode with subscriptions) resulted in a server error.
1064 printable.pl wasn't looking in the printable/ directory for it's
1069 printable.pl's error reporting wasn't supplying the config value to
1074 printable.pl's error page now uses the article templater rather than
1079 added smoke test for errors from printable.pl
1083 added smoke test for admin/siteusers.pl
1087 trying to call "site users" "site members" now.
1091 you can now select subscriptions for a site member with the admin
1092 tool. This still results in a confirmation email if the user hasn't
1093 been confirmed at their email address. (#293)
1099 You will need to run upgrade_mysql.pl for this release.
1105 checkoutfinal_base.tmpl now uses the new <:if Payment I<name>:> tags,
1106 and includes a payments customization shim.
1110 shop.pl now uses [shop].display_I<field-name> to convert stored field
1111 names into display names for error messages.
1115 cardType and cardHolder fields are now required fields for credit card
1120 admin access control now requires that a configuration option to be
1121 set before it will accept admin user authentication information from
1122 the server (typically basic authentication.)
1126 the class[I<classname>|I<text>] tag was lost when integrating the
1127 common tag handling code, added it back in (#284)
1131 you can now define custom flags for site users, the flag value is a
1132 single letter or digit, case-sensitive. Add an entry like:
1134 I<letter-or-digit>=I<description>
1136 to the [site user flags] section of the config file. For example:
1138 a=Access to private area of the site
1139 b=Accept orders on account
1141 You can check this on templates where the user is visible with the
1144 <:ifMatch [siteuser flags] "b":>Accept orders on account<:or:><:eif:>
1154 the article editor was using [catalogs].template as the default
1155 template rather than the documented [products].template
1159 added the [products].extra_templates configuation file entry. This is
1160 a comma-separated list of extra templates that can be used for
1161 products. You can also just put templates into the C<products>
1162 directory (and have been able to for a while.)
1166 the <:include ...:> meta-tag now takes a second optional argument, if
1167 this is the word "optional" then no error text is inserted if the file
1168 specified is not found.
1172 updated includes of custom shims to use the "optional" option
1176 removed custom includes from the distribution that didn't have any
1181 reorganized menu.tmpl a bit and added the member ("site user") manager
1186 added <:if Payments I<name-of-type> :> and <:checkedPayment
1187 I<name-of-type> :> tags to the checkout page, and <:if Payment
1188 I<name-of-type> :> to the checkoutfinal page. If I<name-of-type> is
1189 unknown these will return false (or the empty string) to allow their
1190 use in portable templates where a specific type might not be
1195 the checkout page now uses the ifUser tag to check if there's a logged
1196 in user rather than hacking on the user cookie.
1202 This is still a development release.
1204 There have been database changes in this release. You will need to
1205 run upgrade_mysql.pl.
1211 CRITICAL: nopassword wasn't checking the password at all. If you
1212 don't want to upgrade completely you can include just the three line
1213 change that checks the password.
1217 blank lines are no longer included in the error messages on add/edit
1218 site user validation errors
1222 the shop now uses the site user authentication hook
1226 the domain value sent to the browser in cookies now has the port
1231 you can now configure new payment types through the [payment type
1232 names], [payment type descs] and [payment type required] sections of
1233 the configuration file.
1237 various templates include custom sub-templates which can be used to
1238 add custom payment types.
1242 new <:checkedPaymentI<payment-type-name> :> tag on the checkout form
1243 to make retaining the selected payment type easier.
1247 new basic template facility, C<with> allows sections of text to be
1250 <:with begin I<tagname> :>
1252 <:with end I<tagname :>
1256 <:with ... wrap:> tag added to order email tag sets:
1258 <:with begin wrap:>Special Instructions: <:order instructions:><:with end wrap:>
1262 the site user editor would include empty lines for valid fields in
1267 cookies were being generated with the port numbers included in the
1272 billing address fields are now included in the default checkout form,
1279 This is a development release and is not suitable for production use.
1285 sort ordering, pagination information is now saved in the site user
1290 added a customization hook called when a change is made to the site
1295 added a site user authentication hook. You must set user_auth=1 in
1296 the [custom] section of the config file for this to be used.
1302 This is a development release and is not suitable for production use.
1308 in some cases registration or saving user options wasn't outputting a
1309 page, producing a 500 error
1313 user options templating changes:
1319 for the textOnlyEmail option to be saved, a saveTextOnlyMail hidden
1320 field should be present with a non-zero value
1324 for the keepAddress option to be saved, a saveKeepAddress hidden field
1325 should be present with a non-zero value
1329 for the subscriptions to be saves, a saveSubscriptions hidden field
1336 added site user manager, this still needs some template work
1340 user registration can be disabled with the C<user_register> option in
1341 the C<[site users]> section of the config file (you can still create
1342 users using the site user manager.)
1346 billing information fields have been added to the site_users table.
1350 adminNotes field has been added to the site users table (editable only
1355 instructions field has been added to the orders table, for shipping
1356 instructions (or any). This still needs some support on the admin
1357 templates, and the email templates.
1361 added config option C<billing_on_main_opts> to control whether billing
1362 options are on the main user options page. This is managed by the
1363 templates, not the code.
1373 printable.pl was producing a server error (it hadn't been updated
1374 after the top tag was added.) Also added a smoke test which would
1379 added a few more reports to the experiemental reports system
1383 report.pl now handles being called when the user isn't (or is no
1384 longer) logged on, correctly
1388 added some cookie debugging code
1392 confirmation emails weren't being sent when a user registered with
1393 subscriptions selected (with nopassword unset)
1403 you can no longer register or save in options a blacklisted email
1408 email address blacklisting now works
1412 user options can now be set during registration
1416 you can configure which user options are required (during both
1417 registration and in user options)
1421 the subscription boxes can individually or all be set to checked
1422 during registration by default.
1426 the error_img tag now works on the registration and user options pages
1432 No changes in this release, just a stable release. Enjoy.
1436 This is a release candidate for 0.14, please report any problems with
1437 it as soon as possible.
1439 Once I release 0.14 I'll start on a new round of changes
1445 the common <:old I<name> I<func> I<args>:> tag was HTML escaping the
1446 result from the <:I<func> I<args>:> call, which gave a double escaped
1451 the test count in t/t40images.t was incorrect
1455 even more tests have been added to t/t40images.t
1465 URI::Escape escaped a different set of characters by default in older
1466 versions, not including &, we now supply the set of characters that is
1467 the default in modern versions.
1471 you shouldn't be able to add an article to itself as a stepchild or
1476 some admin forms now include name attributes, as an aid to regression
1481 added some simple tests for Squirrel::Template
1485 added some simple tests for the image manager (needs more work)
1491 Making steps towards improved stability.
1497 the subscriptions formatting was broken when I made arrows refresh
1498 back to their original article. D'oh.
1502 the test text only email flag was ignored
1506 an old problem, only products were listed as stepchildren to catalogs
1507 in the article editor
1511 changes to the way named images interact with automatic image placement:
1517 named images are never automatically placed
1521 named images are not included in the list produced by the article
1522 display template images iterator
1526 referring to a named image either with image[name] in the article
1527 body, or <:imagen name:> in the template will not suppress automated
1532 image[1] or <:image 1:> will continue to suppress automatic image
1533 placement (or <:image:> within the images iterator)
1537 This should provide reasonable behaviour that's compatible with
1538 existing sites running 0.13 or earlier.
1544 If you get configuration errors from this release, it probably means
1545 you've been using some of the default email addresses, which were
1546 either nonsense, or my address. Either update Constants.pm or set the
1547 appropriate value in bse.cfg.
1549 There have been a lot of changes in this development release, so
1550 there's probably at least one bug.
1556 removed my email address from the config files
1560 datadump.pl now uses $DATA_EMAIL as a default for the configuration
1561 [datadump].to value, as documented. Also, aborts with a configuration
1562 error if this isn't set.
1566 swapped the order of the parts in the multi-format emails sent by the
1567 subscriptions manager, since the old order didn't work with some mail
1572 subscription confirmations were being sent with a from derived from
1573 the [confirmation].from key instead of the [confirmations].from key in
1578 the configured from address is now checked before attempting to send
1583 title and body are now validated on sending a subscription (#264,
1588 parameters supplied with the <:wrap ...:> construct now have tags of
1589 the form [tagname parameters] replaced in values.
1593 the subscriptions send form now allows sending a test subscription
1594 message. Defaults for the email and name are controlled by the
1595 [subscriptions] section of the config file.
1597 To use this you must be authenticated in some way, either by BSE's
1598 user logon system, or through browser authentication (.htpasswd), this
1599 is done to prevent abuse of the system by spammers.
1603 imageclean.pl should no longer remove global images
1607 changepw.pl now accepts the r paramater as a refresh URL on the save
1612 select tags generated by BSE in various places should now be XHTML
1617 most object reordering arrows are now generated using a common function
1619 Only the <:moveUp:> and <:moveDown:> tags are excluded from this, and
1620 are now considered obsolete, please use the new <:movekid:> tag
1625 URLs in object reordering arrows included unescaped & characters
1629 BSE generated select tags were using "checked" instead of "selected"
1630 in some places, oops.
1634 if a user subscribes, and a confirmations from address is configured
1635 we now display an error before the attempt to send a message, and no
1636 longer record that an attempt has been made.
1640 the subscriptions help file was missing </a> on the <a name="..."> tags
1644 some templates are now more XHTML compatible (if anyone know how to
1645 make http://validator.w3c.org accept wrap="virtual" without adding "]
1646 >" to the top of the displayed page, please let me know.)
1650 arrows on the display pages should return you to your original article
1655 added the <:top I<field>:> tag which allows access to the top level
1656 article being generated
1660 the shop now complains if either shop email address is not configured
1661 when a customer attempts a purchase.
1665 you can now disable encryption of the email order to your shop email
1666 address, this disables credit card orders. Check the documentation on
1667 the C<noencrypt> option in the C<[shop]> section of the config file in
1672 you can now control whether the shop sends an email of your order to
1673 the shop email address through bse.cfg, see C<email_order> in the
1674 C<[shop]> section, documented in L<config.pod>.
1680 I'm still looking for feedback on article image names and the
1681 interaction with automatic image placement. See the options described
1682 under the 0.13_02 release notes.
1684 This development release has some major changes.
1690 the delete item handler in the shop now uses the common refresh code,
1691 preventing problems with Safari.
1695 the <:old:> tag on the checkout page didn't work correctly in some
1700 moved the response dispatch code template to BSE::Template to avoid
1705 admin/menu.tmpl now uses admin/base.tmpl
1709 cookie handling was broken in various annoying ways:
1715 the userid cookie didn't have a timeout
1719 the change to the userid cookie wasn't
1720 propagated to the secure side when the user logged out (or to the
1721 non-secure side if they used a secure-side logout)
1725 The wrong path was used when propagating the sessionid to the secure
1726 side, making it almost completely pointless
1730 The cart is now copied from the old secure side cookie, if any.
1736 admin users can now change their own passwords
1740 the templater now supports a new type of conditional, a switch statement:
1743 text here is ignored
1744 <:case conditional-function1 conditional-args1:> result text 1
1745 <:case conditional-function1 conditional-args2:> result text 2
1749 Each condition is checked in order.
1755 always returns (and should always be last, since all conditions after
1758 If there is no tag for the given condition-function on the page then
1759 the text of the switch tag will be returned, hopefully to be replaced
1760 by a second pass during processing of a pre-processed page (like the
1763 Hopefully this will reduce the need for nested ifs, but will probably
1764 introduce it's own problems related to partially generated pages <sigh>.
1766 Since the code attempts to do the innermost switch first it shouldn't
1767 have nesting problems for complete pages, but may have some when a
1768 page is partially generated, like with the shop and search templates.
1769 If this becomes a problem I'll add a version with 'names' to act as a
1770 nesting aid, but it will be ugly.
1774 you can now manage site global images, accessible with the gimage[]
1775 tag from body text, and the <:gimage name ... :> from templates
1781 Make sure you update your config file.
1787 custom templates may choose not to set the keywords field, this could
1788 cause makeIndex.pl to complain about undefined values. makeIndex.pl
1789 now skips indexing NULLs.
1793 BSE::Request's url() method was HTML encoding when it should have been
1798 the distributed menu.tmpl now includes menu_custom.tmpl for local
1803 you can specify where under the site tree an article and it's children
1804 will be stored using the [article uris] section of bse.cfg
1810 Another development release.
1812 Please play with this and consider how named images and automatic image
1813 placement should interact. Should using a named image:
1819 completely suppress automatic image placement?
1823 suppress placement of just the used named images?
1827 Or should named images never be automatically placed, with no effect
1828 on automatic placement of other images?
1830 Changes from the last release:
1836 0.13_01 shipped an out of date mysql.str file
1840 the spacer <img> tag used to align arrows now has the alt value set
1841 (to the empty string, since it has no semantic meaning) (#262)
1845 the new formatting code was missing a library include
1849 the body image[] tag wasn't suppressing automatic image placement (due
1850 to the replacement of the body formatting code.)
1854 adding an image was requiring an image name (it shouldn't)
1858 the title for the image wizard help file was "Files Wizard".
1862 added test script for the [] tag parameter processor
1868 Time to get a little adventurous.
1874 images can now have an identifier associated with them. This can be
1875 used by the body text image[] tag to reference an image by name.
1879 the C<< <:imagen >> I<imagename> I<alignment> I<rest> C<< :> >> tag
1880 can be used to insert images by name.
1884 body text formatting is now based on the DevHelp::Formatter module.
1888 b[], i[], tt[], font[], fontcolor[] over paragraph breaks are now
1889 closed properly at the paragraph breaks.
1893 newlines within pre[] are no-longer converted to paragraph or line
1894 breaks. As a consequence of this you can't nest character formatting
1895 within each other within pre[text], ie pre[b[foo]] is ok, but
1896 pre[b[i[foo]]] won't work.
1900 the width and height parameters to the hr[] markup weren't handled
1905 the row options to the table[] tag were inserted HTML escaped, so:
1908 bgcolor="black"|col|...
1911 produced a tr tag like:
1913 <tr bgcolor="black">...
1917 list items in ** or ## lists are now closed with </li>
1921 we now put newlines between lines and paragraphs in the output of
1922 formatted text, hopefully this will make it easier to read the source.
1926 <:error_img:> now accepts a [...] format expression to get the field
1931 the <:recipient_count:> tag is now available on the subscription
1932 listing page. This is used for display, and to hide the Send option
1933 if the subscription has no recipients.
1937 it's now possible to format the output of the subscription send
1938 process by changing the C<admin/subs/sending.tmpl> template
1942 if an article has an image with an identifier of C<bse_title> then it
1943 will be used as the title image for the article.
1947 you should be able to use one level of nested [] inside [] expressions
1954 No changes since 0.12_31.
1958 Hopefully this will become 0.13.
1964 selection of archive parents for subscriptions is now even more
1965 strict, now you can't select the shop or catalogs as archive parents
1969 eliminated debug output from the <:include ...:> meta tag
1973 the move.pl C<r> parameter no longer pre-prepends the base url.
1977 eliminated some undefined value and non-numeric value warnings
1981 push "Flags" on the article edit page back into place
1985 the top-level <:movecat:> tag in the product list now accepts the
1986 custom arrow prefix and the url suffix parameters
1996 the refresh function for the subscriptions list wasn't including the ?
1997 when adding a message parameter
2001 the order_detail target now accepts an C<m> parameter to set the new
2002 <:message:> tag (which allows <:ifMessage:> too)
2006 each of the targets in shopadmin.pl that accepted a message for
2007 display through the C<message> parameter will now I<also> accept that
2008 message through the C<m> parameter
2012 the C<msg> tag is no longer available on the report system pages. Use
2013 the C<message> tag instead.
2017 C<move.pl> now accepts the refresh URL through the C<r> parameter as
2018 well as through the C<refreshto> parameter.
2022 the list of possible parents for archiving a subscription now only
2023 includes articles the user has permission to add children to. This is
2024 also validated on saving/adding the subscription.
2028 check that the user has rights to add children to the selected archive
2029 parent on sending the subscription
2033 a confirmation message is supplied when refreshing after saving
2034 changes to an existing subscription, or deleting a subscription
2038 disabled some debugging code in the subcription send code
2042 removed old code from shopadmin.pl
2046 you can supply a refresh to url using the C<r> parameter to actions in
2047 subs.pl to override the default refresh back to the subcriptions list
2051 all generated C<img> tags now use a XHTML closing " />". The space is
2052 prevent problems with older browsers. If you find a generated img tag
2053 I've missed, please open a ticket. C<img> tags in template might
2054 still not be XHTML compatible, this isn't a bug.
2064 makeIndex.pl now redirects directly to menu.pl rather than to /admin/
2065 after rebuilding the index
2069 added the "Don't index even if listed" and "Don't index this article
2070 or it's descendants" flags
2074 the custom session hash is now supplied to the order_save() custom
2079 the product tag on the cart pages now checks for undef values to
2084 field names in the validation messages produced by subs.pl now have
2085 the first letter upper-cased.
2089 creating a subscription now mentions that it's successful
2093 the experimental report.pl compiles
2097 added line-breaks between article flags on the edit pages
2101 the image and file lists are now accessed using the default target in
2102 add.pl. Use _t=img and _t=file to access the lists now.
2106 admin/edit_2.tmpl through admin/edit_5.tmpl are no longer distributed,
2107 all normal article editing now use admin/edit_1.tmpl. If you need
2108 different pages for different levels remove the mappings from the
2109 [templates] section in bse.cfg
2113 the C<order_detail> target in shopadmin.pl now accepts a message
2118 the edit_add_child security check will now fail if the article is a
2119 product or if the article is too many levels deep to have a child.
2129 the adduser and addgroup forms have been split off into their own
2134 the a_saveuser and a_savegroup targets for adminusers.pl now supply
2135 the _t parameter passed to them to their default refresh targets. The
2136 _t parameter must only contain letters and digits.
2140 the orders iterator for the order_list target in shopadmin.pl now uses
2141 a generated iterator, so tags like <:order_count:> are now available.
2145 the page specific date and money tags (<:date order_field:> and
2146 <:money order_field:>) are no longer available on the order_list
2147 pages, use the general date and money tags (<:date tag args:> and
2148 <:money tag args:>).
2158 added <:error_img:> support to the logon form (IRC request)
2162 the <:childtype:> tag is now available on user/group permissions pages
2163 which control access to articles (IRC request)
2167 new tags <:add I<number> I<number>...:>, <:concatenate I<string>
2168 I<string> ...:>, <:match I<string> I<regexp> I<output> I<default> :>,
2169 <:lc I<string>:>, <:uc I<string>:>, <:lcfirst I<string>:>, <:ucfirst
2170 I<string>:>, <:capitalize I<string>:> and <:replace I<string>
2171 I<regexp> I<with> I<global>:> now available everywhere.
2175 the code to parse [...] and "..." parameters for tags now passes
2176 through backslashes (\) not followed by " or another \ inside "...".
2177 This makes it easier to enter a regular expression in "...".
2187 Dynamically generated templates that don't explicitly define an
2188 <:old:> tag now have a new <:old:> tag by default. Usage:
2191 <: old I<field> I<func> I<args> :>
2193 If a cgi parameter called I<field> has been supplied it will be
2194 returned, otherwise an existing function I<func> is called with
2195 I<args> and that value is used as the value of the <:old:> tag.
2197 Returns an empty string if no CGI parameter I<field> or function
2198 I<func> is defined. (#235)
2202 userlist.tmpl and grouplist.tmpl now include appropriate
2204 value="<:old I<foo>:>"
2210 the "Your system has no groups" message in grouplist.tmpl did not span
2211 across enough columns
2215 the <:typename I<which>:> and <:articleType:> tags now work on the
2216 user/group permissions pages which control access to articles. (#235)
2220 the C<crumbs> iterator now works on user/group permissions pages which
2221 control access to articles (#235)
2225 <:error_img:> is now available on the userlist/grouplist templates for
2226 displaying errors in adding a new user/group. (#235)
2230 #235 mentions a problem with the <:cgi:> tag - could not reproduce
2234 most save/add functions in adminusers.pl should now accept an C<r>
2235 parameter to override the default refresh location (#253)
2239 a save of an empty administration user name was being ignored, the
2240 empty name is now saved (#250)
2244 the name of a administration group can now be changed (#251)
2248 quotes surrounding the URL in Refresh headers have been removed (#232)
2250 the Refresh header is only briefly documented at
2251 http://wp.netscape.com/assist/net_sites/pushpull.html, and is not part of
2252 the HTTP specification, so all I can do is guess.
2256 entry of a blank release date when editing an article now results in a
2257 validation error instead of a database error (seen as a 500 error)
2262 template admin/subs/list.tmpl checked the C<subs_edit> permission when
2263 it should have checked the C<subs_send> permission when choosing to
2264 display the B<Send> link.
2268 subscriptions can now be deleted (#173)
2272 experimental reports system added (work in progress)
2282 admin/edit_product.tmpl had two <:error_img title:> tags
2286 C<$SHOP_FROM>, C<$SHOP_TO_NAME> and C<$SHOP_TO_EMAIL> from
2287 Constants.pm can now be overridden in the config
2288 file. (C<[shop].from>, C<to_name> and C<to_email>)
2292 the name of the custom class can now be specified in the config file
2293 (defaulting to C<BSE::Custom>) (C<[basic].custom_class>)
2297 you can specify an alternate library path to search for your custom
2298 class (C<[paths].libraries>)
2302 the custom class can now handle validate and store extra fields for
2303 articles (and relates types, like products)
2307 two custom date fields (C<customDate1> and C<customDate2>) and two
2308 custom string fields (C<customStr1> and C<customStr2>) have been added
2309 to the article table to allow simplfied customization.
2313 the default article, product and catalog editing template now include
2314 C<admin/custom_article.tmpl>, C<admin/custom_product.tmpl> and
2315 C<admin/custom_catalog.tmpl> includes to allow adding custom form
2316 fields without having to modify the main distributed editing templates
2326 DevHelp::HTML, used to provide HTML and URI escaping wasn't including
2327 a required module. D'oh.
2331 the keywords tag in the search page was being overridden by a tag of
2332 the same name in the global article tags. The old global C<keywords>
2333 tag wasn't very useful and has been removed.
2337 the templates drop-down in the subscriptions system included
2342 the crumbs iterator is now available on the article edit pages, and we
2343 now present a path on the main edit page
2347 you can now use <:crumb I<fieldname>:> to get to crumb article
2348 information. The current <:crumbs I<fieldname>:> will be obsoleted at
2349 some point in the future.
2353 the content of the help files no longer render as links in Mozilla
2357 C<< <:typename I<which>:> >> tag added to the article editor pages
2361 the list of articles available to page generation was in the wrong
2366 when access control was switched off, links were displayed to permit
2367 deletion of articles with children, when they shouldn't have. (#221)
2371 Most article editor actions now accept an r parameter which can be
2372 used to decide what happens after the action. (#225, #226)
2374 The save_new action adds an id parameter onto the end of the supplied
2375 url if the r parameter is supplied.
2379 more messages are included when the article editor successfully
2380 performs an action (#225)
2384 article editor and generator tags that generate arrows now take an
2385 image prefix parameter which can be used to select alternate arrow
2386 images. A second parameter can also be used to add onto the refresh
2387 URL to supply extra information to the refreshed to page. (#224, #225,
2392 some code in BSE::Util::Tags was calling CGI::escapeHTML() at regen
2403 the list of templates in the drop down on the article edit page didn't
2404 reflect the local_templates config option correctlt.
2408 validation errors weren't always reported (or acted upon) correctly
2412 when an invalid product options string was stored a 500 error was
2413 produced when generating the page
2417 the image tag wasn't including a closing " at the end of the alt
2422 the article generation code no longer relies upon CGI.pm functions for
2423 escaping HTML, URIs or producing product option popups, this should
2424 make it possible to use gen.pl from cron jobs without getting prompts
2429 catalogs had two buttons labelled "Add product", but one added
2430 catalogs. Relabelled the one that adds catalogs to "Add Sub-catalog".
2434 the ifnew tag on edit templates is no longer available, use ifNew
2435 instead (this was true as of 0.12_22)
2439 added a flags field to articles, this is used for both BSE internal
2440 flags and for site specific flags.
2444 the search index builder will now only index articles that are listed,
2445 or have the "Index even if hidden" (I) flag set. Changed the simple
2446 search test to search for a non-hidden article.
2450 the title field of all articles are now validated to include at least
2451 one non-space character
2455 validation failures on images and files are now available via the
2460 the move image up/down action on the images manager were refreshing to
2461 the wrong page after reordering the images
2465 changed default level names in Constants.pm and bse.cfg
2469 changed tests to use the new level names
2473 templates admin/subs/add.tmpl and admin/add_product.tmpl have be
2474 consolidated into their edit versions
2484 added iterator allkids_of to iterate over the children and
2485 stepchildren of a given article.
2489 <:iterator begin allkids_of I<parent_id1> ...:>
2490 <:ofallkid I<field>:>
2491 <:iterator end allkids_of:>
2497 when you clicked send from the subscriptions list the archive parent
2498 field wasn't being set from the value set when adding/editing the
2503 generate_search() wasn't supplying a config object when creating the
2504 article generator. This caused problems when some article types were
2505 embedded within the search page.
2509 added mailing list info
2513 $TMPLDIR is no longer present or used in Constants.pm. Use templates
2514 in the [paths] section of the config file.
2518 The path specified by the local_templates entry in [paths] is now
2519 searched for templates before the path specified by the templates
2520 entry in [paths]. This can be used to keep locally modified versions
2521 of templates separate from the distributed templates.
2525 reordering arrows now display a filler image where there's a single
2526 missing arrow image (at the top and bottom of the list). No spacer is
2527 displayed if there's a single item.
2531 added tt[text], pre[text], h1[class|text] through h6[class|text],
2532 class[class|text] tags to the body text formatter. Paragraphs are now
2533 closed by the body text formatter.
2537 added a few more tests
2547 template change from adrian (edit_steps.tmpl):
2549 Finally fixed something that has bugged me for a while... I simply
2550 moved the "if Kids" conditional to include the note about "Delete
2551 only removes the stepkid relationship..." since not much point in
2552 showing that is no step kids available... the step parent panel
2557 printable.pl now attempts to look for a content type for a given
2558 template. This can be used for different types of presentation, for
2563 printable.pl now uses the configured charset if set.
2573 the change to using HTML::Entities cause CR characters to be encoded
2574 when written to the browser. This causes some browsers some
2575 confusion. The article and product tags in BSE::Edit::Article and
2576 BSE::Edit::Product now remove these before output.
2580 if a ## or ** list didn't have a final newline the final item wasn't
2581 included in the conversion to a HTML list
2585 some new templates from Adrian
2589 Adrian added some more default user level permissions
2599 article matching for global permissions was still broken. The change
2600 broke access to the descendants flag, but it all seems to be working
2605 forgot to include access.pod in the MANIFEST. Added it.
2609 added descriptions of the step child/parent permissions to access.pod
2613 the possible stepparents drop-down checked if the possible stepparents
2614 could have children, but didn't check if the current article could
2625 article and global permissions should now be listed sorted by their
2630 the not and descendants flags were being ignored on global permissions
2634 stepchildren and stepparents had no access control at all, now they
2635 do. Note that you may sometimes get a save button on the step
2636 parent/children page with no fields to edit - this means you have save
2637 rights on the current article but not on any of the listed step
2642 fixed shopitem template from Adrian
2646 more navigation links in the user/group management pages
2656 the logon processing code was calling the logon processing code rather
2657 than the logon form code on a failed logon. This cause infinite
2662 removed the pointless Admin menu link from the logon form
2666 add.pl was producing a warning when called without an id parameter
2670 generate.pl didn't refresh properly if the user didn't have permission
2675 the menu now only shows the regenerate options if the user has
2680 move.pl (used to handle the reording arrows) didn't even compile
2684 the hide/show links on the product detail page pointed at the wrong
2685 place, and were still shown if the user didn't have the rights to do
2690 the edit_product template displayed the hide/show link even if the
2691 user wasn't permitted to do so
2695 new templates from adrian to hardcode the text color in the file lists
2706 the ifUserCan tag wasn't converting article names into numbers
2711 a few pages didn't supply the article parameter to ifUserCan correctly
2712 (or at all in some cases)
2722 global permissions simply didn't work, due to a dumb bug
2726 the user/group admin pages now display buttons and checkboxes more
2727 intelligently, depending on the user's rights
2731 the user/group save processing was trying to call an undefined method
2732 if the user didn't have access to a function. As was the add form in
2733 add.pl if there wasn't an article the user could add to at the given
2738 the hide/unhide links on the edit_product page pointed at the wrong
2743 image, file, stepchild and stepparent changes now regenerate the
2744 article (depending on the auto generate flag in Constants.pm). You
2745 will probably want to do a site regen when you're done still, since it
2746 only regenerates the article you're working with, not it's
2747 stepchildren and step parents.
2751 link the edituser and editgroup help to the adduser and addgroup help
2752 files respectively and add entries for the groups and members field
2757 added a help file for the access panel help icon to link to.
2767 product_detail.tmpl hadn't been converted to use the global money tag
2771 different versions of CGI::Cookie use different default paths, we now
2772 force a path of "/".
2776 really store the date and _time_ in the order date.
2780 if the system needs you to logon for checkout, it now supplies the
2781 correct parameter to the logon code to return you to the checkout
2786 when setting configuration values from test.cfg with the:
2788 I<section>.I<key> = I<value>
2790 syntax, I<section> can now have spaces in it.
2794 added some basic permission descriptions, and documentation on the
2805 the title field could be changed on products that had been ordered (an
2806 edit field was presented for the summary field, but wasn't saved)
2810 edit_0.tmpl had two manage access forms on it
2814 use the new system logon rather than just checking for a browser
2815 authentication userid, when marking an order filled.
2819 attempt to account for differences between what browsers send us for
2820 text areas (currently only for the body)
2824 prevent <br> between each element of a <ol> or <ul> list, and try to
2825 prevent one after the end. Double spaced entries in a list are now
2826 followed by <br>s to make it easier to do spaced out lists.
2830 new hide and unhide targets for add.pl to make the links in the
2831 product list work again
2835 the save target for existing articles in add.pl now checks the user is
2840 the product link on the final checkout page was broken (adrian)
2844 the reordering links were displayed on the shop index page with the
2849 the query used to retrieve user, group and everyone permissions from
2850 the database was broken. Broke it into three separate queries. I
2851 wish mysql supported unions
2855 you can now logout if you logged in using the form based logon
2859 creating a user, saving an existing user or deleting a user will now
2860 create an apache suitable user file, if the htusers field in [basic]
2871 mysql_build.pl wasn't cleaning up old tables, and since we use it for
2872 two different projects, the tables from another project were being
2877 annoying and numerous warning from Squirrel::Template eliminated
2881 change admin.pl to check the admin user is logged on
2885 change generate.pl to check the admin user is logged on and has the
2886 access needed to regen
2890 change move.pl to check the admin user is logged on and has the rights
2891 to perform the move requested
2895 change reorder.pl to check the admin user is logged on and has the
2896 rights to perform the reorder requested
2900 change shopadmin.pl to check the admin user is logged on and that they
2901 have the rights needed to perform the requested operation
2905 change subs.pl to check the admin user is logged on and that they have
2906 the rights needed to perform the requested operation
2910 BSE::Permissions::user_has_perms() now accepts an article id,
2911 simplifying some code
2915 added orderfiles iterator to the userpage.
2919 updates to BSE::Edit::Article to only allow movements when the user
2920 has appropriate rights
2924 field change permissions
2936 thumbnails are now saved when editing an existing article
2940 the code to save keys to config sections which didn't already exist
2945 the total_extras custom hook now takes two extra parameters, the
2946 config object and a "stage" of processing, either "cart", "checkout",
2947 "confirm" or "final".
2951 new customization hook order_mail_actions($order, $items, $products,
2952 $state, $cfg) for adding extra tags to the confirmation and order
2963 pass the configuration object to each BSE::Custom method
2967 new shop target, "checkupdate" intended for updating information on
2968 the checkout page for customizations
2972 you can now set extra configuration items in test.cfg using
2974 I<section>.I<key> = I<value>
2976 (Adrian asked for this a while back.)
2980 dynamic menu display
2984 logon page (only seen if access control is enabled)
2988 start of access control
2998 ability to control permissions each admin user and group has access to
3002 new help for image manager, other updated help files, many template
3003 changes, thanks to Adrian.
3007 deleting admin users and groups
3011 selectable payment types
3015 when sending a subscription with HTML content, the boundary between
3016 MIME parts has been changed to hopefully prevent problems with some
3021 when sending a subscription with HTML content, any carriage-returns
3022 are converted into linefeed to hopefully prevent problems when sending
3023 subscriptions based on Macintosh format files to some mail clients.
3027 htmlemail/basic.tmpl now includes a DOCTYPE, which will hopefully
3028 prevent problems with some mail clients.
3032 conditionals are now handled differently in the templating system to
3033 avoid some of the undefined value warnings it was producing.
3037 added fields intended for custom processing to the orders table
3043 This is a development release. If you want stable try 0.12_01, since
3044 many destabilizing changes have occurred since then.
3046 If you install this release it's possible the upgrade_mysql.pl script
3047 cannot be used to upgrade to a later release.
3053 oops, forgot to implement deleting articles, so I implemented it for
3054 articles and unused products
3058 you can now add admin groups and users. This is in progress and the
3059 templates and code still need work.
3063 image files weren't being deleted when an image was deleted from an
3068 the page refreshed to the normal article edit page after deleting an
3069 image, it should refresh to the image list
3073 updated and new templates and new file icons from Adrian
3083 added handling for a default template based on parent, level and type.
3084 Returns to our original defaults from %LEVEL_DEFAULTS, but uses the
3085 config file instead.
3089 now lists level specific templates in the templates drop-down for
3094 updated templates from Adrian
3098 since the default release date for new products is now the date the
3099 product was added, and release is a datetime, add_item()'s check to
3100 make sure the product had been released was broken, since it only
3101 compared it with a date.
3105 the purchase() and prePurchase() functions in shop.pl had a similar
3110 articles weren't being regenerated on save
3114 report errors supplied to show_cart() in shop.pl
3118 changed add_item() to report why it didn't add an item to the cart via
3123 t/t00smoke.t now checks add.pl for normal articles, catalogs and
3128 removed now unneeded onClick handler from delete in the image manager
3134 This release includes some inactive files for access control.
3140 replace edit_2.tmpl (which replaces edit_[345].tmpl) too
3144 fix a dumb bug that prevented changes to the base article fields from
3155 test script to check that all modules and scripts have use strict and
3156 all scripts have -w in the #! line
3160 the width and height values were swapped for display of an articles
3161 images in the image manager template
3165 children weren't sorted on article editing pages
3169 updated templates from Adrian.
3173 added a previousLogon field to accept the last value of lastLogon at
3174 logon, so the previous value could be displayed.
3178 editing an article would give a server error on save (due to some late
3189 the wrong url was redirected to after adding a new image or saving images
3193 manage catalogs now points back at shopadmin.pl
3197 removed the "Image Wizard" buttons and replaced them with "Manage
3198 Images" links in the image displays. (and fixed some missing </td> tags)
3208 added child_types() method to BSE::Edit::Product so it knows what
3209 child types a product can have. This meant that the Add Product
3210 button on the view in edit page was trying to add a normal article
3211 rather than a product. Typically a type parameter should be supplied
3212 when creating new articles which aren't base articles.
3216 shopadmin.pl was still using $imageEditor even though it wasn't
3221 t00smoke.t wasn't checking shopadmin.pl
3225 edit_[1-5].tmpl and edit_catalog.tmpl included the starting <form> tag
3226 in a conditional, breaking the form when creating a new article
3232 When installing this release over earlier releases:
3238 run mysql_upgrade.pl to upgrade the database schema
3242 start the mysql shell and run the following query in your database:
3244 update image set displayOrder = id;
3246 to preserve image ordering.
3250 the <:if art:> conditional tag is no longer available
3254 This is a development release, intended to test the new code in BSE,
3255 in preparation for adding security mechanisms. This is not intended
3256 for production use yet.
3258 Please see the known problems list.
3264 was parsing wrap parameters when there weren't any, which caused
3265 warnings in the error log
3269 you couldn't create a new subscription with the archiving switched off
3273 if you edited a subscription, and unset the archive check, the save
3274 left it as archived.
3278 article editing is being almost completely rewritten to allow more
3283 article image management has been completely rewritten so that the
3284 changes you make are immediate, rather than relying on the user to
3285 save the article after making changes. This prevents the problem that
3286 sometimes crops up where the images you're editing are for the wrong
3287 article, or left over from an aberted attempt to create a new article.
3289 This change also means you can't add images to an article until the
3290 article has been created.
3294 previously the order of images would change at the whim of the
3295 database, which happened pretty rarely but still happened. Added a
3296 displayOrder field to images, and we base the ordering (and
3297 re-ordering) on that instead of whatever the database chooses to give
3302 products and catalogs use the new editing code
3306 new tags on edit pages to give access to validation errors (most
3307 noticable on the add product page for now),
3311 added an "old" tag to take a value from either the cgi parameters or a
3312 given other tag. This makes error reporting more natural
3322 the code allows the product title and summary to be changed. The new
3323 security code will correct this (and allow them to be changed, or the
3324 product to be deleted, for unused products)
3328 only add_product.tmpl has the new error reporting and old value access
3333 the delete/undelete links for products don't work. Currently the same
3334 functionality is available through the Listed drop-down, but it might
3335 be desirable to keep the links, comments welcome.
3341 Some derived tags may not work with the new fields, since I've
3342 switched to the version of Squirrel::Template used by Resource, which
3343 should reduce memory consumption a little, once all the tags are
3346 I think I have all the derived tags, but there might be one I
3353 added ifAncestor conditional tag
3357 added iterator children_of and tag ofchild, usage:
3361 <:iterator begin children_of I<parent_id1> ...:>
3362 <:ofchild I<field>:>
3363 <:iterator end children_of:>
3369 added iterator inlines and tag inline, usage:
3373 <:iterator begin inlines I<article_id1> ...:>
3375 <:iterator end inlines:>
3381 more test code to test the above (now I have the infrastructure to
3382 simplify adding these types of tests
3388 0.11_21 seems stable enough.
3392 Assuming no other problems are found this will become 0.12
3398 oops, missed some updated templates from Adrian, applied bse_changes
3409 another set of new templates from Adrian
3413 extended title and email fields of site_user to 127 and 255 characters
3424 remove debugging code from Generate::excerpt() (#142)
3428 added script interest.pl to send an email to the site owner when the
3429 user registers interest in a product (#133)
3439 must_be_filled really fixed now (#128)
3443 was calling function (now_sqldatetime()) that didn't exist
3447 integrated new templates from Adrian, hopefully I got the right
3452 <:moveallprod:> for the catalogs page (#122)
3456 admin link for new catalogs now points at admin.pl (#120)
3466 removed extraneous <:embed end:> from printable.tmpl
3470 prevent access to parent fields from autovivifying $parent in
3471 Generate::Article::baseActs(), which caused ifParent to return true.
3475 gen.pl now enables the query cache even for small batches, since it
3476 makes a big difference.
3480 products pages now remove the <:embed start:> and <:embed end:>
3485 need a space between "checked" and the closing "/>" in
3486 options_base.html for the checked to be recognized.
3490 keepAddress stayed checked once checked
3494 must_be_filled is now correctly looked up in [downloads] - it was
3495 looking in [download] (#128)
3499 prevent a warning about using a regexp range of [\w-.] by making it
3500 [\w.-] (BSE::UserReg)
3504 store the date _and_ time in the orderDate field so that orders are
3505 sorted correctly on the user page. (#132)
3509 add sort order after date to sort by id descending for orders on the
3514 highlight multi-word matches in search excerpts (#125)
3518 help for body text from add product page (#118)
3522 new templates from Adrian
3526 when creating a new product, the release date was being set to
3527 2001-01-01, rather than the more useful C<today> (whatever day that
3528 happens to be). This was mostly visible to the search engine. (#130)
3532 images list now available on edit_product.html page
3542 updated templates from Adrian (which I forgot to add in 0.11_15
3553 moved step kids/step parents management to their own page (if you use
3554 the old edit templates you can keep them on the same page.)
3558 added file_unlink option to [debug] in bse.cfg
3562 added mail_encryption option to [debug] in bse.cfg
3566 minor reorganization of mail encryption to avoid a "Odd number of
3567 elements in hash assignment" error in some circumstances.
3571 added help to the article editor pages
3579 added <:movestepkid:> tag to the Generate::Article set of tags
3583 added the BSE::Version class and the <:release:> tag
3587 more admin templates (most of the edit_*.tmpl) can now be controlled
3588 from the config file.
3592 fixed a broken in-page link from the refresh after adding a stepparent
3596 fixed an uninitialized value warning introduced in 0.11_14
3600 changed the misleading "Uploaded files" to "Uploaded images" on the
3611 imageclean.pl now keeps thumbnail images
3615 new display templates from adrian
3619 added the stepkids and allkids options to ifUnderThreshold.
3623 documented the C<kb>, C<date>, C<ifEq>, C<ifMatch> and C<cfg> tags.
3629 This is a test release.
3635 added the kb tag which formats the result of it's arguments with a k
3636 suffix if the value is over 1000. This can be used for making file
3637 size displays prettier.
3641 the config variable wasn't being passed into the ImageEditor object in
3648 This is a test release.
3654 make the downloadable files feature available on other pages
3658 add code to support downloads of non-paid for files
3668 make the url tag generate the full url on "extra" pages.
3678 test.cfg now has a C<securl> option to control the configured secure url
3682 added site/doc/secure.pod, describing security considerations
3686 article title field has been extended to 255 characters. The title
3687 edit field maximum length can be controlled with the C<title_size>
3688 item in [field] in F<bse.cfg>.
3692 you can get access to the currently logged in user on the checkout and
3693 cart pages using the C<ifUser> conditional tag and the C<user> value
3698 stripped some more common code out of shop.pl
3702 extended the common cfg tag to take a third default value parameter
3706 search result excerpts can now bold partial matches
3710 the page regenerator didn't handle the case where a port name was
3711 present in the secure url.
3715 now generate gen.html from gen.pl
3719 added POD to site/docs/makedocs and generate the HTML
3723 added POD to site/util/upgrade_mysql.pod and generate a HTML version
3727 when a user logs on and the secure url is different from the base url,
3728 BSE now refreshes to the other side of the site to set the same
3729 session cookie there. This allows session information to be shared
3730 with the two sides of the site.
3732 There is a known issue with this: any session information (like the
3733 shopping cart) stored on the other side of the site is not retained.
3743 updated user/* templates from Adrian
3747 checkout code for the shop didn't pass in the config object to the
3752 work around a bug in the search index builder
3756 finally added some test code. This isn't ready for general use yet and
3757 could damage your system. So don't use it.
3761 BSE::Cfg now checks the current directory as well as $FindBin::Bin,
3762 this lets initial.pl work
3768 This is a test release.
3770 I still need to integrate some of the customization hooks from the
3777 remove dependency on Time::HiRes (this was used for benchmarking while
3778 speeding up the site regen.)
3782 the global date tag didn't handle a date where the time was missing
3783 (like article.lastModified). And it ignored the time when it did
3784 manage to extract it.
3788 remove query caching change reports (Table.pm)
3794 This is a test release.
3800 initial.pl now looks at the config file for the secure base url
3804 BSE::Util::Secure wasn't importing md5_hex
3808 added missing user/email_conferror_base.tmpl
3812 the user/confirmed.tmpl entry was missing from [pregenerate] in the
3813 supplied bse.cfg. Also user/email_conferror.tmpl
3817 the randomdata key was missing from the [basic] section in the
3822 changed message in site/templates/user/toosoon_base.tmpl to prevent
3823 panic when the user goes back and selects another group
3827 changed meaning of ifUser in user templates to accept a parameter if
3832 updated user/options_base.tmpl to display email confirmed information
3833 a bit more correctly
3837 the admin can choose to hide some subscriptions
3843 This is a test release.
3845 I wouldn't be suprised to find problems in this release, there have
3846 been a lot of changes.
3848 Still needs some documenting.
3854 optimized generate_all() for large sites. Despite the fact most of
3855 the improvement came from caching, generate seems to use less memory.
3859 added gen.pl command-line regen script
3863 added option to generate.pl to just regen extras and base pages
3867 $URLBASE and $SECURLBASE from Constants.pm have been moved to C<url>
3868 and C<secureurl> in the C<[site]> section of bse.cfg
3872 datadump.pl now uses the newer database configs (has it worked
3873 recently?) and the newer mail interfaces.
3877 subscriptions management - interfaces to add new subscription
3878 (newsletter) types, and displays options in user options to allow a
3879 user to subscribe. To prevent abuse by spammers (maybe) and by other
3880 attackers, we get the user to confirm subscription of their email
3881 address. This is big.
3885 %EXTRA_TAGS has been moved to C<[extra tags]> in bse.cfg
3891 This is a test release.
3897 added base_tags() to BSE::Custom (tags available during static
3898 generation of most pages.)
3902 step(kids|parents) now available to all articles, though you may have
3903 some problems connecting the shop articles (catalogs,products) to
3908 standard date tag available in most places
3912 the <:summary:> tag now takes an optional which parameter, defaulting
3917 you can now specify the default template for children of a given
3922 you can specify extra template directories to search while editing a
3927 moved the side bar logon form to it's own article (loaded by
3928 initial.pl) and added it to the side bar subsection.
3932 shortened the long message used in the refresh back to user.pl when
3933 the user has file based products in their cart, but hasn't logged in.
3934 This was causing problems with IE6. It now attempts to pull a longer
3935 message out of the config file.
3945 handling of downloads from the user page is handled better: you don't
3946 get a download link unless the file is downloadable, and rejected
3947 download results in a refresh to the user page rather than just
3948 displaying the user page
3952 the logon and register pages can now be passed a refresh url, which
3953 the shop uses when it refreshes to the logon page
3957 add an orders button when logged in
3961 the file list was messed up
3967 Another test release:
3973 actually tested the form filling with the user's defaults
3977 modify localinst.perl to remove the default bse.cfg
3981 have the checkout function return if the user needs to register (shop.pl)
3985 check in a few more places if the user needs to register (shop.pl)
3989 changed names of fields in SiteUsers to match the checkout form
3993 added telephone and facsimile fields to the user options
4005 supports files attached to products for sale
4013 we now have a config file
4019 Looks like all known problems are fixed. Time to do a semi-major
4028 hopefully fixed an occasionaly problem where the images would reorder
4039 make the depth parameter in <:embed which template depth:> work
4043 give the sitemap a lower depth since 7 levels (5 + the level1 and 2)
4054 try to avoid dividing entered prices by 100 when there's an error on
4055 the product edit/add form. There's still some potential problems
4056 here, but they're much less likely to cause a problem.
4060 remove the border from image[] generated images
4064 move the error message on the product add form so it isn't mixed up
4069 the dummy product used to generate the product edit form after an
4070 error wasn't useful for getting step catalogs, get the real product
4071 object just for that.
4081 remove the border from embedded images with a url
4085 fixed an old bug that defaulted the threshold from the template (oops)
4089 the ... in <:image which align ...:> or <:image which field ...:> is
4090 now appended to the attributes of the image field. If it includes a
4091 border attribute the default border attribute is suppressed.
4101 new order_list templates from adrian (moved the filter forms into the table)
4105 fixed the image wizard for products. I'm suprised this ever worked.
4106 Wasn't preserving parentid when creating a new product.
4110 new edit_product template from adrian
4114 stupid bug in BSE::Shop::Util
4118 email is now in BSE::CustomBase->required_fields() and can be removed
4119 by BSE::Custom->required_fields(). If it is removed then no
4120 validation of the email address is performed.
4124 state changes made in handling the confirm page are now saved
4128 added strict to a few modules
4132 added missing error handling methods to BSE::Mail.
4136 old tag on the confirm tag now never gives the undef value message
4140 if you specify a embedding depth less than the current maximum, you
4141 won't get an error message embedded when passing that depth. This
4142 lets you do more interesting effects.
4146 shop.pl now writes mail sending errors to STDERR (to the error log on
4147 apache) rather than aborting the order display (since the order
4148 actually exists at this point.)
4158 support for filtering the order lists by dates entered by the user
4162 make the add section link work, and make the link itself a little more
4167 removed some old debug code
4171 make BSE::Custom->checkout_actions() work on the confirmation page
4181 documented new tags for Product.pm and Article.pm
4185 shopadmin.pl can list/move the stepkids (you can hide them too)
4189 added some tests to test if various iterators show anything,
4190 ifProducts, ifAnyProds, ifStepProds.
4200 put the reorder links into the edit templates
4204 fix expire labels for edit_1.tmpl and edit_catalog.tmpl
4208 reordering from the catalog works
4212 reordering from the product editor works
4224 fixed the ordering of items in the allprods tag
4228 make allprods always work with products
4232 realware wanted a confirmation page
4238 Another test release:
4244 initial step kids|parents for the shop
4248 new popup menu templates from Adrian
4252 added acknowledgements to AUTHOR section
4258 Test release for Adrian, with his new templates.
4262 Test release for Adrian.
4266 Don't use this version.
4272 URLs can be directly associated with an image
4276 multiple levels of catalogs
4284 filtering/sorting of orders from the template
4288 embedded templates can be based on the template of the article being
4293 order status information, marking an order has having been filled
4297 better handling of generation errors
4301 partial support for Microsoft SQL Server under IIS
4305 extended price tag for the cart and checkout pages
4309 prePurchase target for the shop, to allow custom credit card processing
4313 template based filtering of the order list
4323 added the admin/reorder.pl script
4327 template names in <: embed :> tags have $ replaced with the template
4328 name of the article.
4338 added the image[] tag (image[index|align|url])
4342 added printable.pl, site/templates/printable/printable.tmpl to allow
4343 printable versions of pages (among other things)
4347 implemented the ifCurrentPage tag
4357 added <:siteUrl:> tag in %EXTRA_TAGS (used by the RSS templates)
4361 fixed broken template value for the formatting guide (initial.pl)
4365 fixed broken admin links for the formatting guide (initial.pl)
4369 the formatting guide now generates to
4370 http://your.site/a/format_guide.html (initial.pl)
4374 RDF/RSS is now generated to /a/site.rdf. This includes links and
4375 titles for the articles on the home page, and a search field (if the
4376 tool displaying the RSS supports that.)
4382 WARNING: the tag for articles found for a search has changed from:
4390 There is a new module required: HTML::Parser
4396 the <:embed child:> tags meaning has been expanded to allow embedding
4397 of any article with an optional template
4401 there's now an embed[] tag for use in body text. Both this and
4402 <:embed ... :> are protected against infinite recursion.
4406 changed display values for sections etc in Constants.pm, you can still
4407 put your own in when you customize.
4411 the default templates for each level have been set to a single
4412 template, for a simpler default setup
4416 new admin index pages, which may display a little better in some
4421 you can move articles between levels, if enabled in Constants.pm
4425 unquoted search terms will do "start of word" searches if enabled in
4430 html[] tags and <html> body text now has tags stripped when displayed
4431 as a summary or as a search excerpt. The search indexing can now
4432 handle both of these too.
4436 the search template now uses 'result' rather than 'article' for the
4437 search result entries. This is needed since the search base page is
4438 generated as an article, using a dummy article. The title and
4439 titleImage for this dummy article can be specified in Constants.pm.
4443 you can now control whether an unlisted level1 article is displayed in
4444 the crumbs for an article. By default unlisted level1 articles are
4449 a bunch of new templates from adrian, including moving the common
4450 layout into base.tmpl where possible, support for "sidebars".
4454 a formatting guide article in initial.pl (from adrian) (and then an
4455 updated version of it)
4459 renamed INSTALL to INSTALL.txt to prevent wierdness if someone tries
4460 "make install" on a case-insensitive file system.
4464 administration templates are now kept in the admin directory in the
4469 added simple test installer. WARNING: this destroys the existing content
4474 distribution now includes site/htdocs/shop as a directory rather than
4479 schema/bse.sql now drops the tables if they already exist
4483 the item description in the shopping cart is now a link to the item
4487 changed some defaults in Constants.pm
4491 catalog templates from $TMPLDIR/templates/catalogs weren't being handled
4502 added support for controlling access to the regenerate option
4506 added the ability to disable auto-regeneration
4508 this initially broke some buttons, fixed
4512 properly escape child properties in add.pl
4516 removing an article now removes any associated images
4520 removing an image from an article now removes the image file when you
4525 added datadump.pl (send an email containing a mysql datadump), with
4526 configuration in Constants.pm
4530 added imageclean.pl - cleans up the image table and images directory
4534 added an advanced admin page with links to datadump.pl and
4535 imageclean.pl (you can change these of course).
4539 previously it was possible for a user with admin rights to choose a
4540 template that was outside the templates directory.
4550 modified administration templates
4554 formatting is now stripped from body text before an excerpt is
4555 produced (for the search results).
4561 I'll add in the 0.07 change list as soon as I figure out what I changed...
4563 Once I get my old 0.08 RC that may include the 0.07 change list.
4567 Some changes are being made to allow the engine to be embedded into a
4568 site (specifically squirrelweb.com.au).
4574 Bug fix: shop.pl had a silly exporter mistake, and a sillier reference
4575 to an unknown variable name.
4579 changed admin links to buttons for the catalog and product pages,
4580 added a Display button to the product page.
4584 cleaned up the shopitem, cart_base, checkout_base, checkoutfinal_base,
4585 mailorder and mailconfirm templates, removing tags that don't work in
4586 them, removing references to bodyscoop, fixing broken images, removed
4591 %EXTRA_TAGS now work in mailorder and mailconfirm templates
4595 You can now use $SHOP_EMAIL_ORDER to disable sending the encrypted
4596 order. (Useful only for testing or until you get encryption keys
4597 organized - there's no other way to get the credit card number and
4602 Generate/Product.pm had a hard-coded link to the internal test
4607 some base URIs can be configured, though this still needs some work.
4617 Bug fix: only add the class attribute to thumbnails if one is supplied
4622 Moved shop configuration from shop.pl to Constants.pm
4626 Extended template field to 127 characters so directories can be used
4627 without chopping off names.
4631 Added installation documentation.
4635 Templates in the drop-down lists in add.pl now includes templates from
4636 $TMPLDIR/$level and $TMPLDIR/common.
4640 crumbs now include the section, whether or not they are listed.
4644 added templates.pod, which contains most templating documentation,
4645 copied from new documentation in various places (shop.pl, search.pl,
4650 search.pl wasn't handling single-quoted search terms correctly
4658 more changes to support multiple catalogs:
4664 the initial catalog can be removed. The initial catalog isn't useful
4665 when you need more than one catalog. If you want multiple catalogs
4666 you need to remove the initial catalog and then add new ones. The
4667 templates need work too.
4671 the link/admin fields for the new article are set correctly (oops)
4675 added a sample section template for a multi-catalog shop
4681 the sample templates look better, along with better title images
4685 the shop was being generated with a non-secure url
4689 parent articles were not being regenerated when an article was deleted
4695 You will need to recreate the articles table, since a new column has
4696 been added to support article thumbnails.
4702 Added article thumbnails.
4706 Multiple product catalogs.
4710 leadTime is now modifiable in products.
4714 Bug fix: only list .tmpl files from template directories in article
4719 Bug fix: prevent adding non-catalog subsections to the shop section.
4723 Bug fix: the crumbs iterator no longer shows crumbs that have "don't
4724 list in menu" set. Such subsections often shouldn't be linked to.
4728 The documentation on article templates has been improved.
4732 Some tags that operate on articles have been expanded to work on all
4733 article objects available in the template.
4739 Tony Cook <tony@develop-help.com>
4741 I originally wrote BSE while an employee at SquirrelWeb
4742 (http://www.squirrelgroup.com/) for one of VisualThought's clients,
4743 bodyScoop.com (http://www.bodyScoop.com.au/).
4745 Most of the BSE templates were created by Adrian Oldham of Visual
4746 Thought Communications (http://www.visualthought.com.au) He also
4747 funded and suggested many improvements.
4749 Realware Systems (http://www.realware.com.au/) funded the nested
4750 catalogs, IIS support, the image access tags, and many other shop
4751 improvements, including most of the BSE::Custom hooks.