replace image[] earlier than unmarked lists
[bse.git] / Changes.txt
1 BSE 0.25 - 01 Aug 2014
2 ========
3
4 Bug fixes:
5
6  - user.pl (BSE::UserReg) now consistently does new-style message
7    handling
8
9  - embedding no longer messes up the variable state for article
10    generation.
11
12  - actually tokenize the !~ template expression operator.
13
14  - audit log mailing now uses the most specific email address supplied
15
16  - page.pl now returns a 404 if the requested page id/alias can't be found
17
18  - the tag owner (eg. articles) tag_ids() method was returning a tag
19    count rather than the tag ids
20
21  - fix date article custom fields
22
23  - fix product custom fields
24
25  - don't strip '-' and '_' from linkAlias in the importer
26
27  - ensure images have unique ids when re-orders
28
29  - correctly validate and report on bad tag values (c46eae4)
30
31  - use quoted-printable where needed for text parts, and always for
32    html parts of mail sent via BSE::ComposeMail (08a49f2d)
33
34  - fix subscriptions (newsletters) (6c8fac02)
35
36  - always fallback to [shop].from for From: email address
37
38  - fix word-wrapping for audit log emails
39
40  - fix encoding of email content
41
42  - select search excerpts that match the search text like the search
43    engine, rather than simple text matching (d325876a)
44
45 Enhancements:
46
47  - the article mock objects used for pregen behave more like article
48    objects
49
50  - password strength validation and account lockouts for repeated
51    failed logons.
52
53  - plain text passwords are no longer supported
54
55  - articles/products can now be imported from CSV
56
57  - article/product imports can now be done as "update_only" so that
58    required fields aren't necessary
59
60  - installation now uses install.cfg, which is formatted like bse.cfg
61
62  - added a tool to hash unhashed site user and admin user passwords
63
64  - coupons for the shop
65
66  - global files and image no longer require an identifier
67
68  - when transforming an article title for use in a URL, replace
69    non-alphanumeric characters with '-' instead of '_'.
70
71  - reorder.pl now allows a sort spec of 'shuffle'
72
73  - article/global images can now have tags (a3e0dbc)
74
75  - emails for siteusers are now whitespace validated and trimmed
76    (b5fe5b6c)
77
78  - allow add.pl to run as FastCGI (f5ea58be)
79
80  - SVG support for article/global images
81
82 Templates:
83
84  - add top, dynamic, generator, url variables to generated article
85    templates
86
87  - replace variables on the makeIndex html output
88
89  - add a params variable that behaves like the tag
90
91  - expression tags like <:= foo :> now escape as html by default.
92
93  - added an escape() method to scalars.
94
95  - added a shuffle() method to arrays
96
97  - add current to the loop variable used in .for ... in
98
99  - added convience methods image_by_name, image_by_index, file_by_name
100    to article objects
101
102  - added a set_subject() function to BSE::ComposeMail templates
103
104  - added .while and .wrap template directives
105
106  - allow collection_with_tags() to work on all_visible_products()
107
108  - massive formatter re-work
109
110  - allow defaults to be specified for .define (53c28223)
111
112  - allow barewords for pair list keys (53c28223)
113
114  - various preload.tmpl changes
115
116 BSE 0.24 - 11 Feb 2013
117 ========
118
119 Bug fixes:
120
121  - clean up access control records for article when the article is
122    deleted
123    https://rt4.develop-help.com/Ticket/Display.html?id=1368
124
125  - lookup the scalecache path and uri consistently, and configure them
126    in the [paths] and [uri] sections.  This may break your site if you
127    didn't use the old defaults.
128    https://rt4.develop-help.com/Ticket/Display.html?id=1363
129    https://rt4.develop-help.com/Ticket/Display.html?id=1364
130
131  - remove the local date and money tag definitions from the
132    administrative embedded catalog tags.  This will require updates to
133    your embedded catalog template (admin/catalog.tmpl in base BSE).
134
135  - the check_versions.pl code now handles file renames correctly
136
137  - test.cfg is now handled case sensitively so the resulting
138    bse-install.cfg uses the same cases as test.cfg
139
140  - change BSE::UserReg to use dyn_response() instead of show_page() in
141    the few places still using it.
142
143  - define access rights for the pregen actions
144
145  - update price and tier information in the cart when the user logs in
146
147  - several template expression fixes:
148
149    - or is now only an operator when a distinct word in template
150      expressions
151
152    - parse () groups as primary expressions in template expressions
153
154    - fix the list() method for hashes
155
156  - moved [basic].public_files to [uri].public files.  RT #1359.
157
158  - fixed example in the SYNOPSIS for BSE::Cache::Memcached
159
160 Enhancements:
161
162  - add support for exporting report results as CSV
163
164  - add .iterateover directive to templates
165
166  - add a web UI to the importer
167
168  - added documentation to BSE::UserReg, BSE::Request::Base (the
169    request object)
170
171  - template expression enhancements:
172
173    - added several new scalar methods to template expressions
174
175    - added the set() method to hashes in template expressions
176
177    - added the expand() method to lists template expressions
178
179  - BSE now searches for shipping modules in the library_path.
180
181  - article custom fields can now be configured in [article custom
182    fields] etc
183
184  - the shopping cart is now visible to the new tag system
185
186  - flash notices when the user manipulates the cart
187
188  - unlisted, un-released, expired and unlinked pages are now treated
189    as unavailable:
190
191    - static content is remove if present
192
193    - dynamic access returns a 404 error
194
195  - added FixedIntl shipping module 
196
197  - updated the required modules in bse_modules.pl
198
199 Templates:
200
201  - admin/catalog.tmpl (maybe named differently) - removed the local
202    date and money tag definitions.
203
204 API:
205
206  - admin group creation now provides reasonable defaults
207
208 Testing:
209
210  - many internal test code changes
211
212  - update the regen_known_errors make target to match the new test
213    file name
214
215  - add actions test for BSE::UserReg
216
217  - disable debug output for the eway test
218
219 BSE 0.23 - 07 Sep 2012
220 ========
221
222 Bug fixes:
223
224  - <:.set ... :> would treat an unknown value (ENOIMPL) as an error
225    rather, instead of leaving the code in place
226
227  - removed the unused Squirrel::ImageEditor and AdminUtil modules.
228
229  - column names in generated queries are now quoted using the
230    identifier quote returned by the database driver.
231
232  - handle language ids of the form xx_XX.charset correctly when
233    performing message lookups.
234
235  - global images are now returned in the order specified in the
236    editor.
237
238 Enchancements:
239
240  - modify Generate::* classes to build templates by filename instead
241    of reading them into memory.  This will allow caching by
242    Squirrel::Template.
243    https://rt4.develop-help.com/Ticket/Display.html?id=1341
244
245  - add [basic].cache_templates_locally to configure Squirrel::Template
246    to cache templates in memory.  This removes the overhead of
247    (de-)serializing from/to an external cache, but may increase memory
248    use.
249
250  - tags can now depend on a tag from another category being selected
251    before being displayed.
252
253  - lookups in sql_statements are now cached.
254    https://rt4.develop-help.com/Ticket/Display.html?id=1352
255
256  - added collection_with_tags() to TagOwners (so it's usable for
257    Articles and Products, etc) to allow filtering the various
258    collection methods by tag.
259
260  - added bse.articles and bse.products for access to the Articles and
261    Products collection classes.
262
263  - order payment would fail if the CC fields weren't present.
264
265  - search index depth can now be configured in the config file
266
267  - some tests now clean up the articles they create more reliably
268
269  - $DATADIR is now configurable as [paths].data
270
271  - $IMAGEDIR and $IMAGES_URI are now reliably configurable as
272    [paths].images and [uri].images.
273
274  - better perl 5.16 compatibility (resolved some warnings)
275
276  - installation now updates installed scripts with the test.cfg
277    configured perl.
278
279  - tests now handle missing optional modules correctly
280
281  - added iterateBy() to Squirrel::Table for memory efficient iteration
282    over query results.
283
284  - revamped imageclean.pl:
285
286    - output is now controlled by templates
287
288    - added a command-line tool
289
290    - web UI is now access controlled
291
292    - the web UI now provides a preview of the work to be done, with
293      checkboxes to control which clean ups are done.
294
295    - now accounts for public files controlled by BSE::TB::Files.
296
297  - quoted shipping can now be disabled
298
299  - added the Courier::ByUnitAU shipping module.
300
301 Infrastructure:
302
303  - the test script directory (t) has been reorganized.
304
305  - configuration can now be loaded from a string to simplify building
306    config objects for testing.
307
308 Documentation:
309
310  - documented [basic].all_dynamic
311
312  - minor documentation updates to Squirrel::Table
313
314  - added a htmldocs target to the Makefile.  This requires a
315    HTMLDOCDIR parameter:
316
317      make htmldocs HTMLDOCDIR=/somewhere
318
319  - added tests for syntax check all pod
320
321  - improved documentation in Articles, BSE::AdminMenu and
322    Squirrel::Template::Processor.
323
324 Templates:
325
326  - admin.pl now properly passes the admin state to bse.* template
327    variables
328
329  - added templates admin/imageclean/intro.tmpl,
330    admin/imageclean/preview.tmpl and admin/imageclean/final.tmpl for
331    the updated imagclean.pl
332
333 BSE 0.22 - 08 Jun 2012
334 ========
335
336 Bug fixes:
337
338  - the search index builder was ignoring configured field scores.
339
340  - the customer is no longer asked to select a shipper and shipping is
341    set to zero for orders where all products have zero weight.
342    https://rt4.develop-help.com/Ticket/Display.html?id=1328
343
344  - template engine: template tags implemented as a literal were no
345    replaced when that literal was false. (4a446ac3)
346    https://rt4.develop-help.com/Ticket/Display.html?id=1342
347
348  - the body text markup doclink[] accepts link aliases, but didn't
349    allow for "-" in the alias.  All "-" and document aliases are
350    permitted.
351
352  - shopadmin order_paid and order_unpaid are now recorded in the audit
353    log instead of being added to special instructions.
354    https://rt4.develop-help.com/Ticket/Display.html?id=1326
355
356  - the scale() thumbnail operator, when used with a background would
357    paste rather than rubthrough() the source, leaving tranparent areas
358    black.  If a fill is supplied, it is now always used for
359    transparent images.
360
361  - generate the correct refresh URL when the user isn't logged on
362    attempting to request an admin page.
363
364 Enhancements:
365
366  - automatic image insertion can now be disabled globally or on a
367    per-article basis.
368    https://rt4.develop-help.com/Ticket/Display.html?id=1331
369
370  - templating re-re-work:
371    - still backward compatible
372    - new, faster, more regular processing internal to tags:
373      - variables supplied by code, similarly to TT, Mason
374      - macro definitions
375      - call macros or files with parameters and localized variables
376    - integration into BSE itself still limited, but one step at a
377      time.
378
379  - briefly documented bsexlsprod.pl (site/docs/bse_import.pod)
380
381  - bsexlsprod.pl can now update article tags
382
383  - bsexlsprod.pl can now update tiered pricing
384
385  - make the eimage variable available on the admin/image_edit template
386    and use it to display a thumbnail.
387    https://rt4.develop-help.com/Ticket/Display.html?id=1290
388
389  - add the Courier::FixedAU shipping driver.
390
391  - that an order was manually paid is now recorded separately from the
392    payment type.
393    https://rt4.develop-help.com/Ticket/Display.html?id=1325
394
395  - the shopadmin order_paid target now accepts a paymentType variable
396    to optionally set a new payment type on manual payment
397    https://rt4.develop-help.com/Ticket/Display.html?id=1325
398
399  - the shopadmin order_paid and order_unpaid now require csfrp tokens.
400
401  - siteuser admin view and edit targets now also accept userId to
402    identify the user.
403    https://rt4.develop-help.com/Ticket/Display.html?id=1351
404
405 Templates:
406
407  - admin/order_detail.tmpl - the product tag now uses tag_article as
408    it should.
409
410  - admin/order_detail.tmpl - added order, payment_types and
411    payment_type_desc as template variables.
412
413  - admin/subscr/list - isubscription is now an object tag, giving
414    access to the is_removable method
415    https://rt4.develop-help.com/Ticket/Display.html?id=1323
416
417  - admin/subscr/edit, admin/subscr/detail - subscription is now an
418    object tag
419
420 BSE 0.21 - 07 Mar 2012
421 ========
422
423  - Squirrel::Template has largely been rewritten performing a parsing
424    then a processing step rather than doing many, many s/// over the
425    template text.
426
427  - verbose output of generate.pl is now based on the template
428    admin/generate.tmpl
429
430  - add the referer tag to all dynamic pages
431
432  - added [undeletable articles] to bse.cfg as a supplement to
433    @NO_DELETE.  @NO_DELETE is now deprecated and may be removed in a
434    future release of BSE.
435    https://rt4.develop-help.com/Ticket/Display.html?id=1209
436
437  - iterator inlines can now be filtered (Adrian Oldham)
438
439  - added some more extension to content type mappings for video
440    formats (Adrian Oldham)
441
442  - the shopadmin order list targets are now much more efficient - they
443    no longer load the entire order table, are paginated, and let the
444    data do the selection of matching records.
445
446    NOTE: this removes some backward compatibility - iterator filters
447    no longer work and a new tag, all_order_count can be used to fetch
448    order counts.  Extra search parameters have been provided to filter
449    the results.
450
451  - added a new adminurl2 tag where the second parameter is a target.
452
453  - siteusers.pl now flashes all success messages, and success message
454    text is fetched from the messages table
455
456  - added is_released and is_expired methods to Article.  This should
457    be visible to article tags in templates.
458
459  - more consistently use tag_article on the admin side of the site.
460
461  - make tag_article smarter so it can call more methods
462
463  - consistently use admin_tags instead of the old collection of admin
464    tag methods.
465
466  - tag_object (used for object style tags) now checks
467    restricted_method() if implemented for the object.
468
469  - the editor file iterator is now an object iterator, and the efile
470    tag on the file edit page is now an object tag
471
472  - add file_exists to BSE::TB::Article::File
473    https://rt4.develop-help.com/Ticket/Display.html?id=1288
474
475  - refactored makeIndex.pl into makeIndex.pl (web) and
476    util/bse_makeindex.pl (console).
477    Output from these is now encoded using the default BSE encoding.
478    makeIndex.pl can now produce HTML output using admin/makeindex.tmpl
479    The bse_make_index background process now uses the console version.
480    https://rt4.develop-help.com/Ticket/Display.html?id=1301
481
482  - admin-mode article links now ignore the admin value stored in the
483    article record and always return a link to admin.pl for that
484    article.
485
486  - add a missing comma to BSE::UI, preventing a warning.
487
488 Bug fixes:
489
490  - thumb.pl would return content types with doubled image/ prefixes,
491    eg. image/image/jpeg
492
493  - update BSE::AdminUsers, BSE::ChangePW, BSE::UI::AdminReport to use
494    more modern admin tags
495    https://rt4.develop-help.com/Ticket/Display.html?id=1234 (partial)
496    (Adrian Oldham for BSE::ChangePW, BSE::UI::AdminReport)
497
498  - with [site].secureadmin enabled, refreshes to the secure admin url
499    could cause a 500 error.
500
501  - check nomatch fields even for blank fields.  Otherwise a field with
502    a LF or CR would not be caught by the dh_one_line validation rule.
503
504  - saving a tag from the tag manager without changing the name or
505    deleting a tag that doesn't exist would result in a 500 error.
506    https://rt4.develop-help.com/Ticket/Display.html?id=1287
507
508  - setting an unfilled order's stage to "shipped" now sets whoFilled
509    and whenFilled for the order.
510    https://rt4.develop-help.com/Ticket/Display.html?id=1286
511
512  - an empty title (but no missing) when saving a user or group file no
513    longer defaults that to the file display name.
514    https://rt4.develop-help.com/Ticket/Display.html?id=1303
515
516  - validation errors are now correctly displayed for adding a user or
517    group file
518    https://rt4.develop-help.com/Ticket/Display.html?id=1302
519
520  - supplying an empty content type when saving a user or group file
521    now resets the content type to that derived from the file's display
522    name.
523    https://rt4.develop-help.com/Ticket/Display.html?id=1304
524
525  - fix the message id for the "move up a level to section" message in
526    the possible parents drop down.
527
528  - error_img would produce an inline stack trace from an internal
529    error on a failed logon. (logon.pl)
530
531 Templates:
532
533  - admin/order_list*.tmpl - see the order list re-work above.
534
535  - you can now use <:- and -:> as tag delimiters to consume whitespace
536    on the left and right of the tag.
537
538  - Squirrel::Template now documents the template syntax more regularly.
539
540  - Squirrel::Template is now much faster in most cases.
541
542  - admin/subscr/detail - the subscription orders iterator now includes
543    the billFirstName, billLastName and filled fields from the
544    order. (Adrian Oldham)
545
546 Internals:
547
548  - added a getCount() method to retrieve a count of matching records.
549
550 BSE 0.20 - 22 Dec 2011
551 ========
552
553 Please read any NOTES below carefully.
554
555  - store a truncated card number for credit card payments (both online
556    and email).  Reinstate storage of the card holder name in ccName.
557    ccNumberHash is no longer populated.
558
559  - ifNeedDelivery (checkoutnew_base.tmpl) wasn't being reset on order
560    submission.
561
562  - the site_users table has been refactored into the bse_siteusers
563    table, removing the bill* fields and adding deliv* fields.  Other
564    obsolete fields have also been removed.
565
566    NOTE: To preserve your registered users on upgrade, run the
567    provided schema/site_users_to_members.sql SQL through the mysql
568    tool.  This will create entries in bse_siteusers corresponding to
569    those in your original site_users table.  You MUST start with an
570    empty bse_siteusers table or the script will throw an error.
571
572    NOTE: Any configuration such as report definitions, query group
573    definitions should now refer to bse_siteusers instead of
574    site_users.
575
576  - Data::UUID 1.148 is now required
577
578  - remove target entry for the shop confirm action, which was
579    otherwise removed years ago. RT #1280.
580
581  - logon now starts a new session, preserving the cart.  As a
582    side-effect this logs out the admin user, though this may
583    change.  RT #1279.
584
585  - passing a new session id between the SSL and non-SSL versions of
586    the site is now validated.  RT #1279.
587
588    NOTE: This requires that [site].secret be set to a value specific
589    to your site.  Running:
590
591      openssl rand -base64 32
592
593    generates a suitable value.
594
595  - delete the session data for a site users session when they logoff.
596    As a side effect this will log out the admin user.
597
598  - allow dynamic content pages to display flashed messages with the
599    message tag.  Note that not all actions flash a message.
600
601 Template updates:
602
603  - checkoutpay_base.tmpl - the name of the cardHolder payment field is
604    now ccName.
605
606  - admin/order_detail.tmpl - order ccPAN can be used to display the
607    truncated card number.
608
609  - user/options_billing_base.tmpl and its generated template have been
610    renamed with s/billing/delivery/ since it now contains delivery
611    details.  The link to it from user/options(_base).tmpl has also
612    been updated.
613
614  - user/options_base.tmpl, user/register_base.tmpl,
615    admin/users/(add,edit,view).tmpl have been updated to match the new
616    site users schema.
617
618  - user/logon_base.tmpl, user/register_base.tmpl - updated the
619    "nothing is more permanent that a temporary solution" link text for
620    logon, register and recover password.
621
622  - shopitem.tmpl - display the flashed message, if any.
623
624  - removed the unused checkoutcard and checkoutconfirm templates
625
626  - added admin/generate.tmpl for generate.pl progress output.
627
628  - added admin/makeindex.tmpl for search index verbose output
629
630 Internals:
631
632  - Squirrel::Table->make now looks for default_I<colname> when looking
633    for default values for a column.