]> git.imager.perl.org - bse.git/blob - site/docs/config.pod
rework admin templates for validity
[bse.git] / site / docs / config.pod
1 =head1 NAME
2
3 config.pod - documents BSE configuration file options
4
5 =head1 DESCRIPTION
6
7 BSE historically used Constants.pm to keep most configuration
8 information.  The plan is to make sure any new configuration is kept
9 in bse.cfg, and to slowly move most configuration information into
10 bse.cfg.
11
12 Keeping configuration information in Constants.pm makes it difficult
13 to perform upgrades and makes it impossible to use tools such as
14 mod_perl, at least if you want more than one site on the machine.
15
16 F<bse.cfg> is read as a utf-8 encoded file.
17
18 =head1 CONFIGURATION ENTRIES
19
20 =head2 [site]
21
22 Contains URL configuration for the site.
23
24 =over
25
26 =item url
27
28 The normal URL for the non-secure parts of the site.
29
30 =item secureurl
31
32 The secure URL for the shop, products and other portions of the site
33 that should use SSL.  This isn't checked to make sure it is https.
34
35 =item name
36
37 Used as the site "name" in a few places.
38
39 =item adminurl
40
41 If set, this is used as the base URL for accessing the administrative
42 functions of your site.
43
44 =item secureadmin
45
46 Ignored if C<adminurl> is set.
47
48 If this is true then C<secureurl> is used as the base URL for
49 accessing the administrative functions of your site, otherwise C<url>
50 is used as the base URL.  Default: false (C<url>'s value is used)
51
52 =item forward_from
53
54 Configure the IP address of one or more front-end proxies.  This can
55 be a regular expression except that C<.> is translated to C<\.> and
56 C<*> is tranlated to C<.*> to give more glob() like matching.
57
58 If the reqesting host matches then admin site URL matching is done
59 against HTTP_X_FORWARDED_SERVER instead of SERVER_NAME.
60
61 Default: no front-end server configured.
62
63 =back
64
65 =head2 [paths]
66
67 Contains various file system paths.
68
69 =over
70
71 =item downloads
72
73 This is where the files uploads with the file wizard are stored.  It
74 must be writable by the web server user.
75
76 =item admin_templates
77
78 Directory containing administrative templates.  Note: this is not
79 completely implemented for now, so assume the default.  Default: admin
80 directory under $TMPLDIR.
81
82 =item templates
83
84 Directory base for most templates.  This can contain references like
85 $(section/key) to other configuration entries.  Split on the systems
86 PATH separators (run: perl -V:path_sep)
87
88 =item local_templates
89
90 Local Directory base for templates.  This is searched before the
91 templates directory.  This can contain references like $(section/key)
92 to other configuration entries.  Split on the system's PATH separator.
93
94 =item public_html
95
96 Web server document root.  Static pages are generated under this
97 directory.  Default: $CONTENTBASE.
98
99 =item images
100
101 Where uploaded images are stored.  This is not yet completely
102 implemented.  Default: $IMAGEDIR.
103
104 =item libraries
105
106 Local search path for BSE::Custom, or the class configured by
107 C<custom_class> in [basic].
108
109 =item siteuser_images
110
111 Where uploaded siteuser images are stored.  This must be set in the
112 config file.  The default bse.cfg include an entry to use the current
113 values of [paths].downloads
114
115 =item dynamic_cache
116
117 Pregenerated dynamic article pages are stored here.  This must be
118 defined if you site contains any dynamicly generated pages.
119
120 =item scalecache
121
122 The directory where cached versions of scaled thumbnails are stored.
123 Defaults to image_dir/scaled.  This must be in the document tree.  If
124 you set this you should also set scalecacheurl.
125
126 =item scalecacheurl
127
128 The URL to the directory represented by scalecache.  Defaults to
129 /images/scaled.
130
131 =back
132
133 =head2 [extensions]
134
135 This section is used by the file wizard to map uploaded file
136 extensions to MIME content types.  This can be used to extend
137 BSE::FileEditor's internal extension map.  It cannot override that
138 map.
139
140 The key for each entry is the extension, without the leading '.'.
141
142 eg.
143
144   xls = application/msexcel
145
146 =head2 [templates]
147
148 Used for translating symbolic template names into full names under the
149 template directory.
150
151 In each case the default is the name with a C<.tmpl> extension.
152
153 =over
154
155 =item user/logon
156
157 user logon page
158
159 =item user/register
160
161 user registration page
162
163 =back
164
165 =head2 [admin templates]
166
167 Used for translating the names of administration templates into filenames.
168
169 In each case the default is the name with a C<.tmpl> extension.
170
171 =over
172
173 =item filelist
174
175 article file wizard
176
177 =item catalog
178
179 Catalog editor page.  Default admin/edit_catalog.tmpl
180
181 =item 1
182
183 =item 2
184
185 =item 3
186
187 =item 4
188
189 =item 5
190
191 Article edit pages.  Default admin/edit_<number>.tmpl
192
193 =item steps
194
195 Step child/parent management page.  Default admin/edit_steps.tmpl
196
197 =back
198
199 =head2 [html]
200
201 Minor html items.
202
203 =over
204
205 =item charset
206
207 The value of the charset keyword when outputting HTML from a script.
208 Set to the empty string to suppress the charset keyword.  Default:
209 iso-8859-1.
210
211 =item redirect_links
212
213 If this is a non-zero number, then all but mailto links are redirected
214 to C<nuser.pl/redirect> so you can display a diclaimer.  If this
215 contained alphabetics it's treated as a comma separated list of url
216 schemes that should be handled via C<nuser.pl/redirect>.  If 0 or not
217 present, no redirection is done.
218
219 The redirect URL includes a hash of the url, title and the redirect
220 salt to prevent using this mechanism by external sites for cookie
221 stealing attacks.
222
223 =item redirect_salt
224
225 The salt used in generating the has for redirect_links.  Default: an
226 empty string.
227
228 =item validate
229
230 If non-zero then any HTML output is validated with HTML::Tidy.
231 Validation errors and warnings are sent to the audit log.  See [html
232 tidy].
233
234 =back
235
236 =head2 [basic]
237
238 =over
239
240 =item cookie_lifetime
241
242 The expiry time for cookies.  This should be in the form supported by
243 CGI.pm for the -expires parameter.  Typically you want a plus ('+'), a
244 number, and a time character (s - seconds, m - minutes, h - hours, d -
245 days, M - months).  Default: +3h
246
247 =item cookie_domain
248
249 This overrides the domain value set for cookies.  This is useful if
250 you allow the site to run under both example.com and www.example.com,
251 if you set cookie_domain to example.com then a user visiting
252 www.example.com will still have their cookies when they visit
253 example.com.
254
255 =item cookie_name
256
257 This overrides the cookie name used to store the session id.  Default:
258 sessionid.  This is useful when you have 2 sites under the same
259 top-level domain, and helps disambiguate the cookie returned by the
260 browser.
261
262 =item minpassword
263
264 Minimum password length in characters.  Default: 4.
265
266 =item randomdata
267
268 Device to read random data from.  This device should not block when it
269 runs out of entropy.
270
271 =item sign
272
273 If this is true then the encrypted messages containing the customer's
274 credit card number are sent to the shop owner signed.  To avoid
275 keeping a passphrase and signing key on the server you can set this to
276 false (0).  This has the effect that anyone could send you an unsigned
277 message encrypted with your public key, though this may not be a
278 security threat.  Default: True.
279
280 =item link_titles
281
282 If this is true then the links to your articles within BSE will be
283 followed by a / and then by a simplified version of the article title.
284 The aim is to include at least some title information in the URL
285 without modifying the name of the HTML file.  Default: False.
286
287 =item access_control
288
289 If this is true then the user/group/permissions database is used to
290 control access to the system.  Default: False.
291
292 =item access_filter_steps
293
294 If this is true, then the drop-down lists of possible stepparents and
295 stepchildren on the article edit pages are filtered for access control.
296 Default: False.
297
298 =item access_filter_parents
299
300 If this is true, then the drop-down lists of possible parents on the
301 newsletter edit pages are filtered for access control.
302 Default: False.
303
304 =item server_auth
305
306 Set this to non-zero to enable authentication via server
307 authentication (usually Basic Authentication.)  You should normally
308 set this if you set htusers below.  Default: 0 (disabled)
309
310 =item htusers
311
312 This should be the path to a file to be updated with the list of users
313 and crypt() versions of their passwords.  If this is set then the
314 security system will check for a user set by the browser before
315 attempting a form based logon.  Default: None.
316
317 =item custom_class
318
319 The name of the custom class for your site.  This is currently only
320 used for article editing customizations.  This class should derive
321 from BSE::CustomBase.  Default: BSE::Custom.
322
323 =item jit_dynamic_pregen
324
325 If this is true, then pre-generation for dynamic pages will be delayed
326 until the page is displayed to a user.  Default: off.
327
328 =item staticajax
329
330 If true, the ifAjax and ajax tags will be active for static pages.
331
332 =item cache_thumbnails
333
334 If set to zero the results of the thumbimage/gthumbimage body/template
335 tags will not be cached.  Default: 1 (caching is enabled).
336
337 =item static_thumbnails
338
339 If true and cache_thumbnails is true then thumbnails for the thumbnail
340 cache will be generated when a static page is regenerated, and the
341 link from the page will link to the image in the cache rather than to
342 C<thumb.pl>.  Default: 1 (static thumbnails enabled).
343
344 =item alias_prefix
345
346 The prefix applied to articles that use a linkAlias url.  This should
347 start with a /.
348
349 =item use_alias
350
351 If this is non-zero then an article with linkAlias set will use an
352 alias url instead of the "real" url.  You will need to configure a
353 RewriteRule or ErrorDocument to page.pl to direct the user to the
354 correct URL.  Default: 1.
355
356 =item alias_suffix
357
358 If this is non-zero then the title is cleaned up (all but
359 alphanumerics removed) and appended to the alias URL generated.
360
361 =item default_popupimage
362
363 This is the default popup image class for the popimage[] and
364 gpopimage[] tags.  Default: popup.
365
366 =item warn_obsolete
367
368 Some obsolete tags will warn to stderr if this is non-zero.  Default:
369 don't warn.
370
371 =item no_cache_dynamic
372
373 If non-zero, the default, dynamic responses will include a
374 C<Cache-Control: no-cache> header.  This can be overridden for
375 articles via , article flags, C<[template >
376 I<templatename>C<].no_cache_dynamic> and [article].no_cache_dynamic.
377 Default: 1.
378
379 =item redir_to_alias
380
381 If true then page.pl will 301 redirect (Moved Permanently) requests
382 for an article by its id to the generated link if the article has a
383 link alias.  Default: false.  Must only be used with use_alias true.
384
385 =item track_uploads
386
387 If this is non-zero, and a cache is configured (see [cache]), file
388 uploads are tracked in entries in the cache.
389
390 The fileprogress.pl script can be called by Ajax to display file
391 upload progress information to the user.  The upload state is updated
392 a maximum of once a second.
393
394 =item http_only_session
395
396 If this is non-zero, the default, the session cookie sent to the
397 browser has the C<HttpOnly> attribute set.  This can prevent session
398 cookie hijacking.  Default: 1.
399
400 =item secure_session
401
402 If this is non-zero then the session cookie sent to the browser has
403 the C<Secure> attribute set.  This means that the cookie will only be
404 visible over https.  This is only useful when the only URL the site is
405 visited over is a https URL.  Default: 0.
406
407 =item make_userid_cookie
408
409 If this is non-zero, the default, then when the site member logs in, a
410 javascript visible cookie, C<userid> will be set that contains the
411 login name of the user.  BSE's back-end doesn't use this cookie, its
412 only use is for Javascript to enable/disable user interface elements.
413 Default: 1.
414
415 =back
416
417 =head2 [mail]
418
419 This section controls how BSE sends email.
420
421 =over
422
423 =item smtp_server
424
425 The host or IP address of your mail server.  If this is not set
426 C<sendmail> will be used instead.  If this is set you must also set
427 I<helo>.
428
429 =item helo
430
431 The name that BSE uses to identify itself when sending mail via SMTP.
432 Required if I<smtp_server> is set.
433
434 =item sendmail
435
436 The path to the C<sendmail> binary.  Default: /usr/lib/sendmail
437
438 =item sendmail_opts
439
440 The options supplied to sendmail.  Default: -t -oi
441
442 You may want to add the -odq option to this if you want mail queued
443 rather than sent immediately.
444
445 =item set_errors_to_from
446
447 If true, we add an Errors-To header set to the same as the From
448 header.  Default: true.
449
450 =item html_system_email
451
452 If non-zero then emails sent via the compose mail system that aren't
453 being sent to a member record, will be sent as HTML, if the HTML
454 template is available.
455
456 =item inline_css
457
458 If this is C<style> (the default) then use CSS::Inliner to attempt to
459 inline CSS in mail if the text "<style" is found in the generated
460 HTML.
461
462 If this is C<force> then we always attempt to inline CSS.
463
464 If this is any other value then don't inline CSS.
465
466 =item inline_css_flags
467
468 A comma separated list of flags to supply to CSS::Inliner->new().
469 Reasonable flags are C<strip_attrs> to strip C<id> and C<class>
470 attributes, and C<leave_style> to leave the HTML style block in place.
471
472 Default: no flags.
473
474 =item inline_css_report
475
476 If this is true and CSS inlining fails, log an error to the audit
477 log. This is intended for use in debugging and should be disabled in
478 production.  Default: false (disabled)
479
480 =back
481
482 =head2 [children of I<id>]
483
484 Where I<id> is the identifier for an article.
485
486 =over
487
488 =item template
489
490 the name of the default template for children of the given parent
491
492 =item template_dirs
493
494 a comma-separated list of extra directories under $TMPLDIR to search
495 for templates that can be used for children of the given parent article.
496
497 =back
498
499 =head2 [article I<id>]
500
501 Where I<id> is the identifier of an article.
502
503 =over
504
505 =item template_dirs
506
507 A comma-separated list of extra directories under $TMPLDIR to search
508 for templates that can be used for children of the given parent
509 article.
510
511 =item extra_templates
512
513 A comma-separated list of extra templates under $TMPLDIR that can be
514 used for the given article.
515
516 =back
517
518 =head2 [level I<level>]
519
520 =over
521
522 =item template
523
524 The default template for this level of article, assuming it hasn't
525 been set in the [children of I<article id>] section.
526
527 =item template_dirs
528
529 A comma-separated list of extra directories under $TMPLDIR to search
530 for templates that can be used for articles at the given I<level>.
531
532 =back
533
534 =head2 [catalogs]
535
536 =over
537
538 =item template
539
540 The default template for catalogs.
541
542 =back
543
544 =head2 [products]
545
546 =over
547
548 =item template
549
550 The default template for products.
551
552 =item extra_templates
553
554 A comma separated list of extra templates that can be used for
555 products.
556
557 =back
558
559 =head2 [messages]
560
561 This can be used to control translation of error messages.  Each key
562 has a prefix identifying the module that uses the error, followed by
563 '/' followed by a specific identifier for the message.
564
565 Message parameters, expressed as $I<digit>, are replaced with the
566 parameters passed to the message.  C<$$> is replaced with C<$>.
567
568 Each message identifier below is documented with the id, when it
569 occurs, the default message, and any parameters.
570
571 =over
572
573 =item user/needlogon
574
575 the user attempted to logon without entering a logon name.  Default:
576 "Please enter a logon name".  No parameters.
577
578 =item user/needpass
579
580 the user attempted to logon without entering a password.  Default:
581 "Please enter your password."  No parameters.
582
583 =item user/baduserpass
584
585 the user's logon name or password was not found or did not match.
586 Default: "Invalid user or password".  No parameters.
587
588 =item user/notloggedon
589
590 the user attempted to logoff while not logged on.  Default: "You
591 aren't logged on".  No parameters.
592
593 =item user/optsoldpass
594
595 the user entered a new password on the options page without entering
596 their old password.  Default: "You need to enter your old password to
597 change your password".  No parameters.
598
599 =item shop/logonrequired
600
601 Displayed if the user attempts to checkout when [shop].require_logon
602 is true.
603
604 =back
605
606 =head2 [downloads]
607
608 =over
609
610 =item must_be_paid
611
612 if non-zero, the order must be marked as paid for before the file can
613 be downloaded.
614
615 =item must_be_filled
616
617 if non-zero the order must be marked as filled before the files can be
618 downloaded.
619
620 =item require_logon
621
622 if non-zero the user must be registered/logged on to download I<any>
623 file.
624
625 =item log_downufile
626
627 if non-zero, downloads of userfiles will be logged.  Default: 0
628
629 =item log_downufile_maxage
630
631 the maximum age of entries in the user file download log, in days.
632 Default: 30.
633
634 =back
635
636 =head2 [confirmations]
637
638 Control over confirmation emails.
639
640 =over
641
642 =item subject
643
644 The subject of email confirmation emails.  Default: Subcription
645 Confirmation.
646
647 =item from
648
649 The from field for the email.  Default: $SHOP_FROM
650
651 =back
652
653 =head2 [subscriptions]
654
655 Control over subscription messages.
656
657 =over
658
659 =item from
660
661 The from field for the email.  Default: $SHOP_FROM.
662
663 =item testname
664
665 Default for the "Test Name" field for sending test subscription
666 messages.
667
668 =item testemail
669
670 Default for the "Test Email" field for sending test subscription
671 messages.
672
673 =item testtextonly
674
675 Set to 1 if you want the "Test Text Only" box checked by default for
676 sending test subscription messages.
677
678 =item testing
679
680 Set to 0 to disable display of the test subscription messages portions
681 of the subscriptions send form.
682
683 =item text_link_inline
684
685 Set to format links as they appear in the text version of emails.
686 C<$1> is replaced with the title, C<$2> with the URL and C<$3> with
687 the index. C<$$> is replaced with '$'. Default: C<$1 [$3]>
688
689 =item text_link_list
690
691 Set to format links as they appear at the footer of the body text.  If
692 this is set to the empty string then no list appears. C<$1>, C<$2>,
693 C<$3>, C<$$> are replaced as for I<text_link_inline> and $n is
694 replaced with newline.  Default: C<[$3] $2>
695
696 =item text_link_list_prefix
697
698 A line of text produced above the list of URLs if there is one.
699 Default: C<----->. $n in this is replaced with newlines.
700
701 =back
702
703 For example, if the configuration is:
704
705   text_link_inline="$1" ($3)
706   text_link_list_prefix=$n$n-------
707   text_link_list=($3) "$1"$n  => $2
708
709 and the body text is:
710
711   doclink[3]
712   link[http://www.example.com/|Example]
713
714 the result will be:
715
716   "The Shop" (1)
717   "Example" (2)
718   
719   
720   -------
721   (1) "The Shop"
722     => http://www.yoursite.com/shop/index.html
723   (2) "Example"
724     => http://www.example.com/
725
726 =head2 [search]
727
728 =over
729
730 =item highlight_partial
731
732 If this is true then partial matches will be highlight in search
733 result excerpts.  Default: True
734
735 =item keep_inaccessible
736
737 If this is true then resulting articles that can't be accessed by the
738 user are listed in the search results.  Default: false.
739
740 =item wordre
741
742 The default regular expression used to match words in text during
743 indexing.  Default: \w+
744
745 =item wordre_I<fieldname>
746
747 The field specific word match regular expression for the built-in
748 search indexer.  Default: the value of C<wordre>.
749
750 =item indexer
751
752 Module used to build the search index.  Default: BSE::Index::BSE.
753
754 =item index_priority
755
756 For C<BSE::Index::BSE>, the optimization priority.  The default of
757 C<speed> builds the index in memory and is very fast, but can consume
758 a lot of memory.  Otherwise, set this to C<memory> to reduce memory
759 usage.
760
761 C<memory> priority index building requires that the DBM::Deep module
762 be installed.
763
764 =back
765
766 =head2 [search highlight]
767
768 Sets the prefix and suffix used for highlighting matches for different
769 fields.
770
771 These are used by the highlight_result, excerpt, pageTitle, author,
772 keywords and matchFile tags.
773
774 Each field has a prefix and suffix entry.  The key is
775 I<fieldname>_prefix or I<fieldname>_suffix.  For file fields this is
776 file_I<fieldname>_prefix and file_I<fieldname>_suffix.
777
778 The default prefix is <b>.  The default suffix is </b>.
779
780 For example you can do:
781
782   [search highlight]
783   body_prefix=<span class="searchfound">
784   body_suffix=</span>
785
786 =head2 [shop]
787
788 =over
789
790 =item enabled
791
792 Used by some templates to check if the shop is enabled.  Set this to 1
793 to enable the shop, or 0 to disable it.
794
795 =item secureurl_articles
796
797 If this is false then shop articles will not use the secureurl as their 
798 baseurl.  Default: True
799
800 =item register_if_files
801
802 If true the customer is required to register before checkout if there
803 are any for sale files attached to products in the cart.  Default: True
804
805 =item require_logon
806
807 If true the customer is required to be logged on before checkout,
808 whether or not for sale files are attached to products in the cart.
809 Default: False.
810
811 =item payment_types
812
813 A comma-separated list of acceptable payment types.  Default: 0
814
815 The possible payment types are:
816
817 =over
818
819 =item *
820
821 0 - the user enters a credit card number, name and expiry date
822
823 =item *
824
825 1 - the customer will send a cheque
826
827 =item *
828
829 2 - contact customer for details
830
831 =item *
832
833 4 - paypal - see L<paypal.pod>
834
835 =back
836
837 Other types can be added by adding entries to the [payment type names]
838 and [payment type descs] sections.
839
840 =item address1
841
842 =item address2
843
844 =item address3
845
846 These are used by various shop templates to present an address that a
847 cheque payment should be sent to.
848
849 =item from
850
851 From email address for emails sent by the shop.  Overides $SHOP_FROM
852 in Constants.pm
853
854 =item to_name
855
856 To name for emailed orders sent by the shop.  Overrides $SHOP_TO_NAME
857 in Constants.pm
858
859 =item to_email
860
861 To email for emailed orders sent by the shop.  Overrides $SHOP_TO_EMAIL
862 in Constants.pm
863
864 =item bcc_email
865
866 BCC email address for order confirmation emails sent to the customer.
867 Default: No bcc.
868
869 =item noencrypt
870
871 If this is true then orders sent to you by the shop will not be
872 encrypted.  Enabling this disabled acceptance of credit card orders,
873 and the default for C<payment_types> will become C<1> instead or C<0>.
874
875 Please realize that other potentially commercially sensitive
876 information is being sent in the clear to a central location,
877 unencrypted.
878
879 =item email_order
880
881 If true, then the order is email to to_email, possibly with credit
882 card information included.  Default: $SHOP_EMAIL_ORDER.
883
884 =item display_I<field>
885
886 Used to translate the stored order field name into a presentation name
887 suitable for error messages.
888
889 =item cardprocessor
890
891 The name of a class to load to process credit card transactions online.
892
893 Currently this can be either DevHelp::Payments::Test or
894 DevHelp::Payments::Inpho.
895
896 =item crypt_module
897
898 Name of the encryption module to use.  Default: $SHOP_CRYPTO.
899
900 =item crypt_signing_id
901
902 Id of the key to sign the order email with.  If this is non-empty then
903 the email is signed even if [basic].sign is false.  Default:
904 $SHOP_SIGNING_ID.
905
906 =item crypt_gpg
907
908 Path to the GnuPG program.  Default: $SHOP_GPG
909
910 =item crypt_passphrase
911
912 Passphrase of the key used to sign the email.  Default:
913 $SHOP_PASSPHRASE.
914
915 =item show_card_type
916
917 If true, request the card type when requesting credit card
918 information.  Default: False.
919
920 =item cart_entry_limit
921
922 Maximum number of entries in the cart.  This limits the number of
923 distinct products (with options) in the cart, not the total
924 quantities.  Default: Unlimited.
925
926 =item currency_code
927
928 The shop currency as a 3-letter currency code.  Default: AUD.
929 Currencies other than "AUD" aren't supported by most of the system.
930
931 =item country_code
932
933 Set to non-zero if you're using country codes in the order country
934 field.  If this is set then the delivCountry is supplied as is to
935 various parts of the system, otherwise it is translated from a country
936 name to a country code.  Default: 0.
937
938 =back
939
940 =head2 [shipping]
941
942 =over
943
944 =item couriers
945
946 A space-separated list of modules under Courier::, e.g. "Fastway::Road
947 AustraliaPost::Air". These will be made available as shipping methods
948 on the checkout page.
949
950 =item sourcepostcode
951
952 The post code from which products are shipped.
953
954 =item fastwayfranchisee
955
956 The name of the Fastway franchisee used to ship products from the
957 sourcepostcode.
958
959 =item fastwayfranchiseecode
960
961 The Fastway franchisee code for the customer, if any.
962
963 =back
964
965 =head2 [Shop Order Validation]
966
967 This section can contain extra order validation information, including
968 specifying required fields, display names and extra validation rules.
969
970 =head2 [fields]
971
972 =over
973
974 =item title_size
975
976 The maximum length of the article title field.  Default: 255.  Should
977 not be set higher than this unless you change the database schema.
978
979 =back
980
981 =head2 [interest]
982
983 Controls the interest.pl script.
984
985 =over
986
987 =item notify
988
989 Email address that is notified of the interest.  Defaults to $SHOP_FROM.
990
991 =back
992
993 =head2 [debug]
994
995 Used for debugging.
996
997 =over
998
999 =item logon_cookies
1000
1001 When a user logs on, and the site url is different to the secure url
1002 BSE attempts to refresh to the other "side" of the site to set the
1003 same cookie.
1004
1005 BSE does some simple comparisons to attempt to determine whether the
1006 logon form was triggered on the secure side of the site (possibly from
1007 the shop) or on the insecure side.  Since CGI doesn't necessarily give
1008 us all the information required, it's possible it will guess wrong.
1009
1010 Setting this option to 1 will enable debugging information sent to
1011 standard error, which will be sent to the error log on Apache.  This
1012 probably isn't useful on IIS.
1013
1014 =item file_unlink
1015
1016 Reports errors to STDERR (hence to the error log on Apache) if there
1017 is a problem deleting the actual file when an attached file is
1018 removed.
1019
1020 =item mail_encryption
1021
1022 Reports debugging information to standard error while encrypting your
1023 mail.
1024
1025 =item cookies
1026
1027 Reports cookies received from the browser and sent to the browser to
1028 STDERR (hence to the error log on Apache.)
1029
1030 =item dump_session
1031
1032 If nonzero the session hash is dumped to STDERR after it is retrived
1033 from the database.
1034
1035 =item subscription_expiry
1036
1037 If non-zero then subscription expiry date calculations are dumped to
1038 STDERR.
1039
1040 =item jit_dynamic_regen
1041
1042 If non-zero then information about jit_dynamic_regen is sent to
1043 STDERR.
1044
1045 =item ifUserCan
1046
1047 If non-zero then the ifUserCan tag will output some trace information
1048 to STDERR.
1049
1050 =back
1051
1052 =head2 [uri]
1053
1054 Contains various URIs.
1055
1056 This is underused, so don't rely on it yet.
1057
1058 =over
1059
1060 =item cgi
1061
1062 The URI to the CGI directory.  Default: /cgi-bin
1063
1064 =item images
1065
1066 The URI where images are kept.  Default: /images
1067
1068 =item shop
1069
1070 =item articles
1071
1072 =back
1073
1074 =head2 [articles]
1075
1076 This will provide translations from symbolic names to article ids.
1077
1078 Currently this is used for converting article ids in the access
1079 control code, and for looking up the id of the shop.
1080
1081 =head2 [printable type]
1082
1083 If the user supplies a template name to printable.pl then you can use
1084 a different content type by adding an entry to this section.  The key
1085 is the template name, and the value is the full content type.
1086
1087 =head2 [search index scores]
1088
1089 This section is used when generating the search index to override the
1090 default scores for each field in the articles.
1091
1092 The default scores are:
1093
1094   Field           Score  Notes
1095   -----           -----  -----
1096   title             5
1097   body              3
1098   keyword           4
1099   pageTitle         5
1100   author            4
1101   summary           0
1102   description       0    Products only
1103   product_code      0    Products only
1104   file_displayName  2    displayName for files
1105   file_description  2    description for files
1106   file_notes        1    notes for files
1107
1108 =head2 [article flags]
1109
1110 =head2 [product flags]
1111
1112 =head2 [catalog flags]
1113
1114 Flags that can be set for articles, products and catalogs
1115 respectively.  Note that flags for articles are also visible in
1116 products and catalogs.
1117
1118 All flag Ids are single letters or digits.  Uppercase letters are
1119 reserved for use by BSE internally, leaving lower-case letters and
1120 digits for your own use.
1121
1122 Use the id of the flag as the key, and a description of the flag as
1123 it's value.
1124
1125 =head2 [article uris]
1126
1127 Each key is an article id, the values are base URIs to store the HTML
1128 form of those articles and their children under.
1129
1130 =head2 [protect link]
1131
1132 The keys are ids of articles that shouldn't have their link field
1133 overwritten.  The value should be a true value, but is otherwise
1134 ignored.
1135
1136 =head2 [datadump]
1137
1138 =over
1139
1140 =item to
1141
1142 The recipient for the data dump email sent by datadump.pl. Default:
1143 $DATA_EMAIL.
1144
1145 =item from
1146
1147 the From for the data dump email sent by datadump.pl.  Default:
1148 $SHOP_FROM.
1149
1150 =back
1151
1152 =head2 [site users]
1153
1154 Configuration for site users.
1155
1156 =over
1157
1158 =item nopassword
1159
1160 If this is set to true then no passwords are required during
1161 registration, a confirmation email is sent immediately upon
1162 registration and that confirmation email contains a link the user can
1163 use to manage their details.
1164
1165 This option has some security concerns since it can leave links to the
1166 user's information in the browser history.  This option is not
1167 recommended.
1168
1169 You cannot use this to control access to the shop.
1170
1171 =item require_name1
1172
1173 =item require_name2
1174
1175 =item require_address
1176
1177 =item require_city
1178
1179 =item require_state
1180
1181 =item require_postcode
1182
1183 =item require_telephone
1184
1185 =item require_facsimile
1186
1187 =item require_country
1188
1189 =item require_title
1190
1191 =item require_organization
1192
1193 Set these to true to require the corresponding field during
1194 registration, and to keep it required after modification.  Default:
1195 false.
1196
1197 If you enable any of these, you should enable C<info_on_register> as
1198 well, or modify the registration template to include the given fields.
1199
1200 =item display_I<field name>
1201
1202 Controls how the given field is displayed in error messages.  If you
1203 change the field names on the registration and/or options forms you
1204 should probably change them here too.  Default: internal field name
1205 with the first character converted to upper-case.
1206
1207 =item info_on_register
1208
1209 If this is set then the user info is prompted for during user
1210 registration.  The information still isn't required unless the
1211 appropriate require_I<field> option is set.  Default: false.
1212
1213 =item register_refresh
1214
1215 The default URL to refresh to on completing registration if no r
1216 parameter is supplied.
1217
1218 =item subscribe_all
1219
1220 If this is set then the subcription checkboxes are all checked on
1221 registration by default.  Default: false.
1222
1223 The user will only receive the subscriptions if they leave them checked
1224 and follow the link in the confirmation email.
1225
1226 =item subscribe_I<id>
1227
1228 Where I<id> is the number identifying a subscription.  If this is set
1229 then the subscription checkbox for that subscription will be checked
1230 by default on the registration form.  Default: false.
1231
1232 The user will only receive the subscriptions if they leave it checked
1233 and follow the link in the confirmation email.
1234
1235 You can get the I<id> of a subcription by looking at the Edit link on the
1236 subscriptions management page, the number after "id=" is the id.
1237
1238 =item billing_on_main_opts
1239
1240 If set to zero then user billing options will be managed on a separate
1241 page.  This is controlled by the user/options_base.tmpl template.
1242
1243 =item user_register
1244
1245 If set to zero then users cannot register themselves.  Default: true,
1246 allowing users to register themselves.
1247
1248 =item notify_register
1249
1250 If true then an email is sent when a new user registers on your site.
1251 The email address sent to is the first set of [site
1252 users].notify_register_email, [shop].from or $SHOP_FROM from
1253 Constants.pm
1254
1255 No email is sent if a new user is created from the administration user
1256 interface.
1257
1258 See also: notify_register_email, notify_register_subject.
1259
1260 =item notify_register_email
1261
1262 The email to sent the registration notification too.  See
1263 notify_register above.
1264
1265 =item notify_register_subject
1266
1267 The subject of the notification email sent when a new user registers.
1268 Any {I<field>} is replaced with the given field from the registered
1269 user.  See notify_register above.
1270
1271 Default: New user {userId} registered
1272
1273 =item notify_register_customer
1274
1275 If non-zero then email id C<notify_register_customer> will be sent to
1276 new user on registration.  By default this uses template
1277 user/email_register, subject "Thank you for registering" which can be
1278 overridden in [email notify_register_customer] or via the
1279 C<set_subject> tag.
1280
1281 =item notify_register_customer_admin
1282
1283 If non-zero then the behaviour described for
1284 C<notify_register_customer> will take place when a new member is added
1285 by an administrator.  Defaults to the value of
1286 C<notify_register_customer>.
1287
1288 =back
1289
1290 =head2 [payment type names]
1291
1292 This section and [payment type descs] are used to configure new
1293 paymeny type ids.
1294
1295 The key is the integer representing the payment type.  The value is
1296 the name used in tags for checking the payment type.
1297
1298 You can also add a description (currently unused) to [payment type
1299 descs].
1300
1301 You should use numbers starting from 10 to avoid conflicts with future
1302 BSE payment types.
1303
1304 =head2 [payment type descs]
1305
1306 See [payment type names].
1307
1308 =head2 [payment type required]
1309
1310 Set the key given by the payment type id to a value of a
1311 comma-separated list of fields required for that payment type.
1312
1313 =head2 [help style I<style-name>]
1314
1315 This type of configuration section is used to set values for a style
1316 of help icon.  Only the C<template> and C<prefix> values are used
1317 directly by the code, the others are used by the default helpicon
1318 templates.
1319
1320 =over
1321
1322 =item prefix
1323
1324 The URI to the help files for this style.  Default: /help/ in style
1325 "user", /admin/help/ in style "admin".
1326
1327 =item template
1328
1329 The template used to produce the icon.  Default: helpicon in style
1330 user, admin/helpicon in style "admin".
1331
1332 =item icon
1333
1334 URI to the help icon image.   Default: /images/admin/help.gif
1335
1336 =item iconwidth
1337
1338 The width of the help icon image.  Default: 16
1339
1340 =item iconheight
1341
1342 The height of the help icon image.  Default: 16
1343
1344 =back
1345
1346 If you just want to change the help icon image for user help icons you
1347 might do:
1348
1349   [help style user]
1350   icon=/images/help.gif
1351
1352 =head2 [affiliate]
1353
1354 =over
1355
1356 =item allowed_referer
1357
1358 A semi-colon (;) separated list of referer domains that are allowed to
1359 link to the C<a_set> target of L<affiliate.pl>.
1360
1361 If the user's browser supplies a referer header then it will be
1362 checked against this list.
1363
1364 =item require_referer
1365
1366 If this is set then the C<a_set> target of L<affiliate.pl> will
1367 require that the user's browser supply a Referer header.
1368
1369 =item default_refresh
1370
1371 If no C<r> parameter is supplied to the C<a_set> target of
1372 L<affiliate.pl> then this is used as the default refresh.
1373
1374 Default: the site base url.
1375
1376 =item subscription_required
1377
1378 This is either the numeric or text of a subscription for which the
1379 affiliate must have an active subscription.
1380
1381 =item flag_required
1382
1383 A single letter flag which the site administrator must set for the
1384 affiliate page to be displayed for the given member.
1385
1386 =item set_cookie
1387
1388 If this is set then affiliate.pl will set the named cookie to the
1389 affiliate id.
1390
1391 =item other_cookies
1392
1393 This is a comma-separated list of other cookies that should be set by
1394 the a_set target.  The values for the cookies should be passed to the
1395 a_set target.  For example with:
1396
1397   [affiliate]
1398   other_cookies=alpha,beta
1399
1400 if the url:
1401
1402   http://your.site.com/cgi-bin/affiliate.pl?a_set=1&id=someid&alpha=1&beta=2&gamme=3
1403
1404 is accessed, then the cookie alpha is set to "1", beta is set to "2".
1405 The cookie gamma will not be set since it's not listed.
1406
1407 =item linkbaseurl
1408
1409 Used as the link base URL for the afflink.tmpl side bar template when
1410 an affiliate id is set.  Default: example.com
1411
1412 =item linkbasedesc
1413
1414 Used at the text of the link for the afflink.tmpl side bar template
1415 when an affiliate id is set.  Default: Your Site.
1416
1417 =item linkdefurl
1418
1419 Used as the link URL for the afflink.tmpl side bar template when an
1420 affiliate id is not set.  Default: example.com
1421
1422 =item linkdefdesc
1423
1424 Used as the text of the link for the afflink.tmpl side bar template
1425 when an affiliate id is not set.  Default: Our site
1426
1427 =back
1428
1429 =head2 [BSE Siteuser Images]
1430
1431 Each key is the id of a member image, with a corresponding [BSE
1432 Siteuser Image I<image_id>] section.  The values are ignored.
1433
1434 =head2 [BSE Siteuser Image I<image_id>]
1435
1436 Provides information about a single member image "template".
1437
1438 =over
1439
1440 =item description
1441
1442 Short description on the image, like "Logo".  Used in error messages.
1443
1444 =item help
1445
1446 Longer description of the image.  Accessible with the member_image tag.
1447
1448 =item minwidth
1449
1450 =item minheight
1451
1452 =item maxwidth
1453
1454 =item maxheight
1455
1456 The minimum and maximum dimensions of the image.
1457
1458 =item widthsmallerror
1459
1460 =item heightsmallerror
1461
1462 =item widthlargeerror
1463
1464 =item heightlargeerror
1465
1466 Error messages displayed in the when the image is outside the
1467 configured dimensions.
1468
1469 =item largeerror
1470
1471 =item smallerror
1472
1473 Default error messages for the above.
1474
1475 =item maxspace
1476
1477 Maximum storage the image can use in bytes.  Default: 1000000.
1478
1479 =item spaceerror
1480
1481 Error message displayed if the image uses too much storage.
1482
1483 =back
1484
1485 =head2 [editor]
1486
1487 Various editor settings.
1488
1489 =over
1490
1491 =item allow_thumb
1492
1493 If this is non-zero the system will attempt to load the configured
1494 thumbnail class, and put thumbnail images on the image manager page
1495 rather than full-size images.  Default: off
1496
1497 =item thumbs_class
1498
1499 The name of a perl class that implement's BSE's thumbnail API.  At
1500 this point the only class that implements that is BSE::Thumb::Imager,
1501 supplied with BSE.  Default: None
1502
1503 =item default_thumbnail
1504
1505 URI to the default thumbnail image.  This is presented when the
1506 runtime production of a thumbnail image fails.
1507
1508 =item default_thumbnail_width
1509
1510 =item default_thumbnail_height
1511
1512 Dimensions of the default thumbnail image.
1513
1514 =item default_thumbnail_alt
1515
1516 Alt text for the default thumbnail image.
1517
1518 =item check_modified
1519
1520 If this is true then BSE will check the value of the lastModified
1521 parameter passed against the value in the article.  If these don't
1522 match the article isn't saved and is redisplayed with an error
1523 message.  This provides simple protection against one user saving
1524 changes over those made by another.
1525
1526 =back
1527
1528 =head2 [thumbnails]
1529
1530 =over
1531
1532 =item max_width
1533
1534 =item max_height
1535
1536 =item max_pixels
1537
1538 Default values for the thumbimage tag.
1539
1540 =back
1541
1542 =head2 [includes]
1543
1544 Each value is used as the relative or absolute name of a file or
1545 directory to load more configuration data from.
1546
1547 The keywords must remain unique.
1548
1549 Only the [includes] section from bse.cfg itself is used to locate more
1550 configuration data.
1551
1552 If the value references a directory, all files with an extension of
1553 C<.cfg> are read for configuration data.
1554
1555 The order the files are read (which later files overriding older
1556 files) is:
1557
1558 =over
1559
1560 =item 1.
1561
1562 bse.cfg is read
1563
1564 =item 2.
1565
1566 the entries in [includes] are sorted alphabetically (or rather
1567 asciily), so an entry with key "A" is read before one with key "B",
1568 one with key "01" is read before "02", but key "10" would be read
1569 I<before> key "2".
1570
1571 =item 3.
1572
1573 if an entry is a file then that is read and the values merged.
1574
1575 =item 4.
1576
1577 if an entry is a directory, then that is scanned and the files found
1578 read alphabetically as above.
1579
1580 =back
1581
1582 =head2 [error_img]
1583
1584 This is used to configure the error icon displayed next to fields that
1585 fail validation.
1586
1587 =over
1588
1589 =item image
1590
1591 URI to the image file.
1592
1593 =item width
1594
1595 =item height
1596
1597 The width and height of the error icon image.
1598
1599 =back
1600
1601 =head2 [site user flags]
1602
1603 Flags that can be set for site users.
1604
1605 All flag Ids are single letters or digits.  Uppercase letters are
1606 reserved for use by BSE internally, leaving lower-case letters and
1607 digits for your own use.
1608
1609 Use the id of the flag as the key, and a description of the flag as
1610 it's value.
1611
1612 =head2 [article defaults]
1613
1614 =head2 [catalog defaults]
1615
1616 =head2 [product defaults]
1617
1618 These sections contain defaults values for the corresponding article
1619 types.
1620
1621 Each key is the name of a column for the article type.
1622
1623 If an entry is not found in [catalog defaults] then [article defaults]
1624 is also checked.
1625
1626 If an entry is not found in [product defaults] then [article defaults]
1627 is also checked.
1628
1629 These sections are checked B<after> the C<[children of >I<id>C<]> and
1630 C<[level >I<level>C<]> sections.
1631
1632 These defaults are used when creating an article where no value is
1633 supplied, they can also be accessed via the <:default I<name>:> tag.
1634
1635 =head2 [newsletter filters]
1636
1637 Contains C<criteria>I<index> entries starting from C<criteria1>, then
1638 C<criteria2>, etc.
1639
1640 Each entry consists of a filter class name, followed by a ; followed
1641 by data passed to that filter.
1642
1643   ; user the original SQL based filter, configured from 
1644   ; section [foo]
1645   criteria1=BSE::NLFilter::SQL;foo
1646
1647 See the documentation for each filter to configure the filters.
1648
1649 =head2 [Query Groups]
1650
1651 The key of each entry is the numeric identifier of a query group, the
1652 values are the name of the query group.  For example:
1653
1654   [query groups]
1655   1=some name
1656
1657   [query group some name]
1658   sql=select id from site_users where id = ? and name1 like '%some%'
1659
1660 Each entry also has a corresponding [Query Group I<name>] section.
1661
1662 =head2 [query group I<name>]
1663
1664 This section corresponds to an entry in [Query Groups].
1665
1666 =over
1667
1668 =item sql
1669
1670 This is an SQL statement.  One placeholder is required and is passed
1671 the siteuser id (primary key) of the user to be checked.  If this
1672 query returns I<any> rows then the user is considered part of the
1673 group.
1674
1675 =back
1676
1677 =head2 [template types]
1678
1679 Each key is a template name, the value is the content type to be used
1680 when displaying the template dynamically.
1681
1682 =head2 [template descriptions]
1683
1684 Each key is a template name, the value is a description used in the
1685 template dropdown for that template.
1686
1687 =head2 [body class]
1688
1689 This section defines CSS class names for BSE's body text link tags.
1690 The key is the tag name, the value is the CSS class to be used.
1691
1692 By default the class used is the same as the name of the tag, but you
1693 can switch this off by adding an entry setting the class to the empty
1694 string, for example:
1695
1696   ; no class attribute for any of the links
1697   [body class]
1698   link=
1699   poplink=
1700   doclink=
1701   popdoclink=
1702
1703 You can set p here too to set the class for paragraphs generated as
1704 body text.  By default no class is set.
1705
1706 =head2 [popimage]
1707
1708 Controls the behaviour of the window displayed by the popimage[] body
1709 text tag.  If the Javascript for this has been customized then this
1710 may not apply.
1711
1712 =over
1713
1714 =item extrawidth
1715
1716 =item extraheight
1717
1718 Extra width and height for the window beyond the size of the image.
1719 Default: no extra width or height.
1720
1721 =item popmiddle
1722
1723 If set to non-zero popimage[] will attempt to centre the popup within
1724 the current window.  Default: 0.
1725
1726 =back
1727
1728 =over
1729
1730 =back
1731
1732 =head2 [inpho]
1733
1734 This is used to configure the DevHelp::Payments::Inpho module.
1735
1736 =over
1737
1738 =item test
1739
1740 If this is set then the test parameters are used instead of the
1741 product values.
1742
1743 =item url
1744
1745 The URL to process requests through.  
1746
1747 Default: https://extranet.inpho.com.au/cc_ssl/process
1748
1749 =item user
1750
1751 Inpho supplied user name.
1752
1753 =item password
1754
1755 Inpho supplied password.
1756
1757 =item test_url
1758
1759 The URL to process test requests through.
1760
1761 =item test_user
1762
1763 The user to supply to test requests.
1764
1765 =item test_password
1766
1767 The password to supply to test requests.
1768
1769 =back
1770
1771 =head2 [custom]
1772
1773 This section controls whether some custom class methods are called:
1774
1775 =over
1776
1777 =item saveopts
1778
1779 If this is non-zero then siteuser_saveopts is called.
1780
1781 =back
1782
1783 =head2 [levelI<level> menus]
1784
1785 Where I<level> is the article level at which the defined menu options will be available.
1786 Configure each menu value and description as I<key> and I<value>.
1787
1788 =over
1789
1790 For example:
1791
1792   [level1 menus]
1793   0=Default
1794   1=Sidebar
1795   2=Footer
1796
1797 To create a menus using such values, use the "allkids_of" iterator "filter" option.
1798
1799 For example:
1800
1801   <:iterator begin allkids_of -1 filter: [menu] == 2 :>
1802
1803 =back
1804
1805 =head2 [title alias]
1806
1807 Enable the "titleAlias" article field and set which level it will be available.
1808
1809 =over
1810
1811 =item levelI<level>
1812
1813 Where I<level> is the article "level" for which the "titleAlias" field should be enabled.  To enable
1814 set the value to non-zero.
1815
1816 For example:
1817
1818   [title alias]
1819   level1=1
1820
1821 The "titleAlias" can be used as an alternate "short" title for the given article, especially useful
1822 for space critical iterated menus.  A template conditional can be used to display the "titleAlias" 
1823 in place of the article "title" when appropriate.
1824
1825 =back
1826
1827 =head2 [thumb geometries]
1828
1829 Each key represents a geometry identifier for use by the thumbimage[],
1830 gthumbimage[] body text tags and the <:thumbimage ...:>, <:gthumbimage
1831 ...:>, <:dthumbimage ...:> template tags.
1832
1833 The key is the geometry identifier, the value is the geometry string
1834 as follows.
1835
1836 The geometry string consists of:
1837
1838 =over
1839
1840 =item *
1841
1842 dimensions
1843
1844 =item *
1845
1846 crop flag - if present
1847
1848 =item *
1849
1850 optional fill
1851
1852 =back
1853
1854 The dimensions can be in any of the following forms:
1855
1856 =over
1857
1858 =item *
1859
1860 <width>x<height> - the desired maximum width and height. eg 200x150
1861
1862 =item *
1863
1864 <width>x - the desired width, with the height calculated
1865 proportionally based on the source image size
1866
1867 =item *
1868
1869 x<height> - the designed height, with the width calculated
1870 proportionally based on the source image size.
1871
1872 =item *
1873
1874 <size> - the desired maximum size in both directions. so "200" is
1875 equivalent to "200x200"
1876
1877 =back
1878
1879 The crop flag is a single letter "c", if present then the image should
1880 be scaled so the smaller dimension matches the requested size, and the
1881 longer dimension will be cropped to fit.
1882
1883 The fill if present is: fill(color) where color is a color recognized
1884 by the underlying graphics implementation.  This should be at least
1885 hex web colors without the #, eg fill(FF0000) will fill with red.
1886
1887 =head2 [thumb classes]
1888
1889 Each key represents a geometry identifier for use by the thumbimage[],
1890 gthumbimage[] body text tags and the <:thumbimage ...:>, <:gthumbimage
1891 ...:>, <:dthumbimage ...:> template tags.
1892
1893 The value is used as the class for the generated img tag.
1894
1895 =head2 [targets]
1896
1897 Each value represents a handler or script name for the <:dyntarget
1898 I<script> I<target> ...:> tag.
1899
1900 Each key has a TARGET version and a no-TARGET version, with the key
1901 suffixed with C<_n>.
1902
1903 The default C<nuser> target is C</cgi-bin/nuser.pl/user/TARGET>.  The
1904 default no-target C<nuser> is C</cgi-bin/nuser.pl/user>.
1905
1906 For other targets the default is
1907 C</cgi-bin/>I<script>C<.pl?a_TARGET=1> and
1908 C</cgi-bin/>I<script>C<.pl>.
1909
1910 The string C<TARGET> is replaced with the target specified in the
1911 dyntarget tag.
1912
1913 This, along with dyntarget is intended to allow a more "Web 2.0" type
1914 of access to BSE.  eg. you might set:
1915
1916   [targets]
1917   shop=/xshop/TARGET
1918   shop_x=/xshop/
1919
1920 and have a rewrite rule:
1921
1922   RewriteRule ^/xshop/(.*)$ /cgi-bin/nuser.pl/shop/$1 [PT]
1923
1924 =head2 [popimage class I<classname>]
1925
1926 This defines the settings for a class of images generated by the
1927 popimage[] and gpopimage[] body text markup tags.  For example, the
1928 settings for C<popimage[imageid|foo]> can be found in section
1929 C<[popimage class foo]>.
1930
1931 =over
1932
1933 =item html
1934
1935 The html generated for this class.  Tags of the form
1936 C<{>I<identifier>C<}> are replaced, where I<identifier> can be
1937 C<inline_> or C<outline_> followed by an image field name, for example
1938 C<inline_src> is the URL to the inline image.
1939
1940 Default: <a href="{outline_src}" rel="lightbox[id]" target="_blank"><img src="{inline_src}" alt="{inline_alt}" width="{inline_width}" height="{inline_height}" border="0" /></a>
1941
1942 The default may be tuned as needed.
1943
1944 =item inline
1945
1946 The inline image geometry.  Default: editor (the value used for
1947 thumbnails on the admin side)
1948
1949 =item outline
1950
1951 The outline image geometry.  If no value is supplied then the original
1952 image values are used.
1953
1954 =back
1955
1956 =head2 [mail resources]
1957
1958 Each key is the identifier of a file that can be attached to
1959 BSE::ComposeMail emails.  The value is comma separated filename,
1960 content type, inline status.
1961
1962 The files are searched for through the template search mechanism, so
1963 the filename can be relative to either the master or local templates
1964 directories.
1965
1966 If the content type is not supplied, if the filename end in gif, png
1967 or jpg the appropriate content type is used, otherwise
1968 application/octet-stream.
1969
1970 If the inline status is not supplied then images are considered
1971 inline, and other files arent.
1972
1973 =head2 [shop registration]
1974
1975 Each key represents a message id from attempts to checkout.  Except
1976 the all key which covers all cases.
1977
1978 If the C<all> key or the message id key is non-zero then the checkout
1979 page will redirect to registration instead of login if the cart or
1980 configuration requires that the user be logged in.
1981
1982 =head2 [template I<template-name>]
1983
1984 Settings for articles based on a particular template.
1985
1986 =over
1987
1988 =item no_cache_dynamic
1989
1990 Controls whether a cache-control: no-cache header will be produced.
1991 Can be overridden with the A and B article flags.  If not set the
1992 value of [article].no_cache_dynamic is used.
1993
1994 =back
1995
1996 =head2 [article]
1997
1998 Global settings for articles.
1999
2000 =over
2001
2002 =item no_cache_dynamic
2003
2004 Controls whether a cache-control: no-cache header will be produced.
2005 Can be overridden with the A and B article flags or [template
2006 I<template-name>].no_cache_dynamic.  If not set the value of
2007 [basic].no_cache_dynamic is used.
2008
2009 =back
2010
2011 =head2 [recaptcha]
2012
2013 For the <:recaptcha:> tag currently only used for fmail.pl.
2014
2015 =over
2016
2017 =item api_public_key
2018
2019 =item api_private_key
2020
2021 The public and private key you receive when you register with reCAPTCHA.
2022
2023 =item error_I<error_code>
2024
2025 Replace the error message for the given I<error_code> where
2026 I<error_code> is the reCAPTCHA error code
2027 (eg. "incorrect-captcha-sol") with dash replaced by underscore.
2028
2029 eg.
2030
2031   error_incorrect_captch_sol=VERY BAD INPUT
2032
2033 =back
2034
2035 =head2 [global file metadata]
2036
2037 Each key represents an item of metadata for files attached to
2038 articles.
2039
2040 The values are ignored.
2041
2042 For each key, extra information is defined in the [file metadata
2043 I<name>] section.
2044
2045 =head2 [file metadata I<name>]
2046
2047 Definition for the file metadata item I<name>.
2048
2049 =over
2050
2051 =item *
2052
2053 title - descriptive name of the metadata.  Defaults to I<name>.
2054
2055 =item *
2056
2057 rules - validation rules, separated by ;.  Custom rules can be defined
2058 in [file metadata validation].
2059
2060 =item *
2061
2062 ro - if non-zero the metadata cannot be modified directly by the admin
2063 (applications can still generate it). Default: writable.
2064
2065 =item *
2066
2067 type - the data type of the metadata, any of string, text, enum,
2068 integer, real, image.  If this is enum values must be defined and
2069 labels should be.  Default: string.
2070
2071 The types are:
2072
2073 =over
2074
2075 =item *
2076
2077 string - single line of text
2078
2079 =item *
2080
2081 text - one or more lines of text
2082
2083 =item *
2084
2085 integer - whole number
2086
2087 =item *
2088
2089 real - number with decimal points
2090
2091 =item *
2092
2093 enum - select from a list of possible values.
2094
2095 =item *
2096
2097 image - image file.
2098
2099 =back
2100
2101 =item *
2102
2103 values - semi-colon separated list of values for this metadata.
2104
2105 =item *
2106
2107 labels - semi-colon separated list of labels for the values
2108
2109 =item *
2110
2111 help - help html to display for the metadata
2112
2113 =item *
2114
2115 data_name - (images only) the key to use to store the image data.
2116 Default: I<name>_data.
2117
2118 =item *
2119
2120 width_name - (images only) the key to use to store the image width.
2121 Default: I<name>_width.
2122
2123 =item *
2124
2125 height_name - (images only) the key to use to store the image height.
2126 Default: I<name>_height.
2127
2128 =item *
2129
2130 cond - a perl expression indicating whether the metadata should be
2131 prompted for, for this file.  $file is the file object.  Default: 1.
2132
2133 =item *
2134
2135 unit - text displayed after the entry box for the metadata.  Default:
2136 empty.  Useful for including a unit ("pixels") or format help
2137 ("hh:mm").
2138
2139 =back
2140
2141 =head2 [session cleanup]
2142
2143 Controls the processing of the bse_session_clean.pl script.
2144
2145 =over
2146
2147 =item *
2148
2149 days - the minimum age in days of sessions to be removed.  Default: 30.
2150
2151 =item *
2152
2153 per - the number of records to remove per SQL delete request.
2154 Default: 1000.
2155
2156 =item *
2157
2158 count - the number of SQL delete requests to perform, maximum.
2159 Default: 1000.
2160
2161 =item *
2162
2163 optimize - whether to perform a table optimization after deleting
2164 records.  Default: 1 (set to 0 to skip optimization)
2165
2166 =back
2167
2168 =head2 [nightly work]
2169
2170 Controls the bse_nightly.pl script.
2171
2172 =over
2173
2174 =item *
2175
2176 jobs - a comma separated list of BSE background processes to run when
2177 bse_nightly.pl is run.  Default: bse_session_clean
2178
2179 =item *
2180
2181 I<other keys> - each key is a sort key, and the value is a single
2182 background task name.  This allows add-ons to setup extra tasks
2183 without overwriting each other.  The sugessted key format is:
2184
2185   99 - two digit priority - 00 is executed first, 99 last
2186   package-name - name of package the task is for
2187   unique - extra text to make the key unique, if necessary
2188
2189 =back
2190
2191 =head2 [cache]
2192
2193 Parameters controlling where cached information - eg. file upload
2194 progress is stored.
2195
2196 =over
2197
2198 =item *
2199
2200 class - the BSE::Cache compatible cache class.  See the documentation
2201 of BSE::Cache::Cache, BSE::Cache::CHI or BSE::Cache::Memcached.
2202
2203 =back
2204
2205 =head2 [db]
2206
2207 Database connection parameters.  These override the settings in
2208 Constants.pm which are deprecated.
2209
2210 =over
2211
2212 =item *
2213
2214 dsn - the DBI dsn used to connect to the database. Default:
2215 $Constants::DSN.
2216
2217 =item *
2218
2219 user - the logon to the database.  Default: $Constants::UN
2220
2221 =item *
2222
2223 password - the password for the user.  Default: $Constants::PW.
2224
2225 =item *
2226
2227 dbopts - a perl expression that should evaluate to a hash reference.
2228 Default: $Constants::DBOPTs, or an empty hashref.
2229
2230 =item *
2231
2232 class - the database wrapper class to use.  Default: BSE::DB::Mysql.
2233 No other values are currently supported.
2234
2235 =back
2236
2237 =head2 [extra a_config]
2238
2239 Defines extra configuration to be returned from the BSE system
2240 configuration.
2241
2242 Each key is the keyword in the returned JSON object.  If the key
2243 already exists it is not overwritten.
2244
2245 Each value is the name of a section in the BSE configuration.  The
2246 strings "{level}", "{generator}", "{parentid}", "{template}" are
2247 replaced with their values from the article that config is being
2248 requested for.
2249
2250 So:
2251
2252   [extra a_config]
2253   menu=level{level} menu
2254
2255   [level1 menu]
2256   alpha=One
2257   beta=Two
2258
2259 will include:
2260
2261   menu: { alpha: "One", beta: "Two" }
2262
2263 in the returned configuration
2264
2265 =head2 [cookie names]
2266
2267 This section maps BSE's default cookie names to alternate names.  This
2268 can be useful if you have two BSE sites under the same domain and need
2269 to ensure they use different cookies.
2270
2271 eg.
2272
2273   [cookie names]
2274   userid=altuserid
2275
2276 =head2 [siteuser updates]
2277
2278 Each key identifies an update specification for userupdate.pl, the
2279 value is a description of the specification.
2280
2281 See L<<[siteuser update I<specid>]>> for the rest of the import
2282 specification.
2283
2284
2285 =head2 [siteuser update I<specid>]
2286
2287 Currently contains only a single key:
2288
2289 =over
2290
2291 =item *
2292
2293 fields - a semi-colon separated list of fields to import.  Must
2294 contain one of C<id> or C<userId> which is used as a key to identify
2295 the user to update.  An C<x> entry is a field to ignore.  Some fields,
2296 such as C<confirmed> may not appear in this list.
2297
2298 =back
2299
2300 =head2 [paypal]
2301
2302 Configuration for BSE's PayPal integration.
2303
2304 It shouldn't be necessary to change any of the URLs.
2305
2306 =over
2307
2308 =item *
2309
2310 test - if true, then the PayPal sandbox is used, and the configuration
2311 entries starting in C<test_> are used.  If false, PayPal is live, and
2312 configuration entries starting in C<live_> are used.  Default: 1.
2313
2314 =item *
2315
2316 test_api_username, test_api_password, test_api_signature - API
2317 credentials for test mode.  Required in test mode.
2318
2319 =item *
2320
2321 live_api_username, live_api_password, live_api_signature - API
2322 credentials for live mode.  Required for live mode.
2323
2324 =item *
2325
2326 test_ws_url - URL to make NVP requests through in test mode.  Default:
2327 https://api-3t.sandbox.paypal.com/nvp
2328
2329 =item *
2330
2331 test_refresh_url - PayPal URL to refresh to in test mode.  Default:
2332 https://www.sandbox.paypal.com/webscr
2333
2334 =item *
2335
2336 live_ws_url - URL to make NVP requests through in live mode.  Default:
2337 https://api-3t.paypal.com/nvp
2338
2339 =item *
2340
2341 live_refresh_url - PayPal URL to refresh to in live mode.  Default:
2342 https://www.paypal.com/cgibin/webscr
2343
2344 =back
2345
2346 =head2 [paypal custom]
2347
2348 Extra parameters supplied to the SetExpressCheckout API.  See the
2349 Express Checkout Advanced Features Guide (from PayPal) for details.
2350
2351 Some settings that may be useful:
2352
2353 =over
2354
2355 =item *
2356
2357 PAGESTYLE - the style of payment page to use from those listed in your
2358 account profile.
2359
2360 =item *
2361
2362 HDRIMG - https URL to an image to use in the payment page header.
2363
2364 =item *
2365
2366 HDRBACKCOLOR - a 6 hex digit color to use as the background of the
2367 payment page header.
2368
2369 =item *
2370
2371 HDRBORDERCOLOR - a 6 hex digit color to use as the border of the
2372 payment page header.
2373
2374 =back
2375
2376 =head2 [audit log]
2377
2378 =over
2379
2380 =item *
2381
2382 mail - if non-zero any emails sent through BSE::ComposeMail are logged
2383 in the audit log.  Default: 0.
2384
2385 =item *
2386
2387 mail_max_dump - if non-zero this is the size limit of the dump stored
2388 in the audit log when [audit log].mail is enabled.
2389
2390 =back
2391
2392 =head2 [audit log I<facility>]
2393
2394 Most commonly C<[audit log bse]>.  Controls whether given events or
2395 families of events are logged.
2396
2397 The key is one of:
2398
2399 =over
2400
2401 =item I<component>
2402
2403 =item I<component>C<:>I<module>
2404
2405 =item I<component>C<:>I<module>C<:>I<function>
2406
2407 =back
2408
2409 with the longer keys overriding the shorter keys, and defaulting to
2410 all actions being logged.
2411
2412 =head2 [mail audit log]
2413
2414 This enables sent when an event is logged in the audit log.  Warning:
2415 for common events this will result in large amounts of email.
2416
2417 =over
2418
2419 =item *
2420
2421 to - the email address to send the email to
2422
2423 =item *
2424
2425 emerg, alert, crit, error, warning, notice, info, debug - if present
2426 and true then events at these levels result in an email.  If the value
2427 contains an C<@> then the value is used as the recipient address.
2428
2429 =item *
2430
2431 I<facility>-I<component>
2432
2433 =item *
2434
2435 I<facility>-I<component>-I<module>
2436
2437 =item *
2438
2439 I<facility>-I<component>-I<module>-I<function>
2440
2441 Controls sending an email for specific events or families of events.
2442 If the value is true, send an email for that event.  If the value
2443 contains an C<@> then the value is used as the recipient address.
2444
2445 =back
2446
2447 with the longer keys overriding the shorter keys, and defaulting to
2448 all actions being logged.
2449
2450 =head2 [html tidy]
2451
2452 Contains options to pass to HTML::Tidy.  Anything not listed below is
2453 passed directly to HTML::Tidy->new.
2454
2455 =over
2456
2457 =item *
2458
2459 ignore_types - types of message to ignore separated by commas, any,
2460 all or none of info, warning, error.
2461
2462 =item *
2463
2464 ignore_text_I<key> - messages to ignore, I<key> is not used, just the
2465 value.
2466
2467
2468 =back
2469
2470 =head2 [email I<token>]
2471
2472 Controls emails sent via F<cgi-bin/admin/sendemail.pl>.
2473
2474 =over
2475
2476 =item *
2477
2478 template - plain text template
2479
2480 =item *
2481
2482 html_template - HTML template (defaults to the value of I<template>
2483 followed by C<_html>
2484
2485 =item *
2486
2487 subject - subject of the email, can be overridden with the
2488 C<set_subject> tag.
2489
2490 =item *
2491
2492 from - from email address, defaults to the shop from address
2493
2494 =item *
2495
2496 from_name - from name
2497
2498 =item *
2499
2500 allow_html - controls whether HTML is allowed.  By default this is
2501 based on the user's settings.
2502
2503 =back
2504
2505 =head1 AUTHOR
2506
2507 Tony Cook <tony@develop-help.com>
2508
2509 =cut