]> git.imager.perl.org - bse.git/blob - site/docs/config.pod
allow more control over how words are picked out of text we're indexing
[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 =head1 CONFIGURATION ENTRIES
17
18 =head2 [site]
19
20 Contains URL configuration for the site.
21
22 =over
23
24 =item url
25
26 The normal URL for the non-secure parts of the site.
27
28 =item secureurl
29
30 The secure URL for the shop, products and other portions of the site
31 that should use SSL.  This isn't checked to make sure it is https.
32
33 =item name
34
35 Used as the site "name" in a few places.
36
37 =item adminurl
38
39 If set, this is used as the base URL for accessing the administrative
40 functions of your site.
41
42 =item secureadmin
43
44 Ignored if C<adminurl> is set.
45
46 If this is true then C<secureurl> is used as the base URL for
47 accessing the administrative functions of your site, otherwise C<url>
48 is used as the base URL.  Default: false (C<url>'s value is used)
49
50 =item forward_from
51
52 Configure the IP address of one or more front-end proxies.  This can
53 be a regular expression except that C<.> is translated to C<\.> and
54 C<*> is tranlated to C<.*> to give more glob() like matching.
55
56 If the reqesting host matches then admin site URL matching is done
57 against HTTP_X_FORWARDED_SERVER instead of SERVER_NAME.
58
59 Default: no front-end server configured.
60
61 =back
62
63 =head2 [paths]
64
65 Contains various file system paths.
66
67 =over
68
69 =item downloads
70
71 This is where the files uploads with the file wizard are stored.  It
72 must be writable by the web server user.
73
74 =item admin_templates
75
76 Directory containing administrative templates.  Note: this is not
77 completely implemented for now, so assume the default.  Default: admin
78 directory under $TMPLDIR.
79
80 =item templates
81
82 Directory base for most templates.
83
84 =item local_templates
85
86 Local Directory base for templates.  This is searched before the
87 templates directory.
88
89 =item images
90
91 Where uploaded images are stored.  This is not yet completely
92 implemented.  Default: $IMAGEDIR.
93
94 =item libraries
95
96 Local search path for BSE::Custom, or the class configured by
97 C<custom_class> in [basic].
98
99 =item siteuser_images
100
101 Where uploaded siteuser images are stored.  This must be set in the
102 config file.  The default bse.cfg include an entry to use the current
103 values of [paths].downloads
104
105 =item dynamic_cache
106
107 Pregenerated dynamic article pages are stored here.  This must be
108 defined if you site contains any dynamicly generated pages.
109
110 =item scalecache
111
112 The directory where cached versions of scaled thumbnails are stored.
113 Defaults to image_dir/scaled.  This must be in the document tree.  If
114 you set this you should also set scalecacheurl.
115
116 =item scalecacheurl
117
118 The URL to the directory represented by scalecache.  Defaults to
119 /images/scaled.
120
121 =back
122
123 =head2 [extensions]
124
125 This section is used by the file wizard to map uploaded file
126 extensions to MIME content types.  This can be used to extend
127 BSE::FileEditor's internal extension map.  It cannot override that
128 map.
129
130 The key for each entry is the extension, without the leading '.'.
131
132 eg.
133
134   xls = application/msexcel
135
136 =head2 [templates]
137
138 Used for translating symbolic template names into full names under the
139 template directory.
140
141 In each case the default is the name with a C<.tmpl> extension.
142
143 =over
144
145 =item user/logon
146
147 user logon page
148
149 =item user/register
150
151 user registration page
152
153 =back
154
155 =head2 [admin templates]
156
157 Used for translating the names of administration templates into filenames.
158
159 In each case the default is the name with a C<.tmpl> extension.
160
161 =over
162
163 =item filelist
164
165 article file wizard
166
167 =item catalog
168
169 Catalog editor page.  Default admin/edit_catalog.tmpl
170
171 =item 1
172
173 =item 2
174
175 =item 3
176
177 =item 4
178
179 =item 5
180
181 Article edit pages.  Default admin/edit_<number>.tmpl
182
183 =item steps
184
185 Step child/parent management page.  Default admin/edit_steps.tmpl
186
187 =back
188
189 =head2 [html]
190
191 Minor html items.
192
193 =over
194
195 =item charset
196
197 The value of the charset keyword when outputting HTML from a script.
198 Set to the empty string to suppress the charset keyword.  Default:
199 iso-8859-1.
200
201 =item redirect_links
202
203 If this is a non-zero number, then all but mailto links are redirected
204 to C<nuser.pl/redirect> so you can display a diclaimer.  If this
205 contained alphabetics it's treated as a comma separated list of url
206 schemes that should be handled via C<nuser.pl/redirect>.  If 0 or not
207 present, no redirection is done.
208
209 The redirect URL includes a hash of the url, title and the redirect
210 salt to prevent using this mechanism by external sites for cookie
211 stealing attacks.
212
213 =item redirect_salt
214
215 The salt used in generating the has for redirect_links.  Default: an
216 empty string.
217
218 =back
219
220 =head2 [basic]
221
222 =over
223
224 =item cookie_lifetime
225
226 The expiry time for cookies.  This should be in the form supported by
227 CGI.pm for the -expires parameter.  Typically you want a plus ('+'), a
228 number, and a time character (s - seconds, m - minutes, h - hours, d -
229 days, M - months).  Default: +3h
230
231 =item cookie_domain
232
233 This overrides the domain value set for cookies.  This is useful if
234 you allow the site to run under both example.com and www.example.com,
235 if you set cookie_domain to example.com then a user visiting
236 www.example.com will still have their cookies when they visit
237 example.com.
238
239 =item cookie_name
240
241 This overrides the cookie name used to store the session id.  Default:
242 sessionid.  This is useful when you have 2 sites under the same
243 top-level domain, and helps disambiguate the cookie returned by the
244 browser.
245
246 =item minpassword
247
248 Minimum password length in characters.  Default: 4.
249
250 =item randomdata
251
252 Device to read random data from.  This device should not block when it
253 runs out of entropy.
254
255 =item sign
256
257 If this is true then the encrypted messages containing the customer's
258 credit card number are sent to the shop owner signed.  To avoid
259 keeping a passphrase and signing key on the server you can set this to
260 false (0).  This has the effect that anyone could send you an unsigned
261 message encrypted with your public key, though this may not be a
262 security threat.  Default: True.
263
264 =item link_titles
265
266 If this is true then the links to your articles within BSE will be
267 followed by a / and then by a simplified version of the article title.
268 The aim is to include at least some title information in the URL
269 without modifying the name of the HTML file.  Default: False.
270
271 =item access_control
272
273 If this is true then the user/group/permissions database is used to
274 control access to the system.  Default: False.
275
276 =item access_filter_steps
277
278 If this is true, then the drop-down lists of possible stepparents and
279 stepchildren on the article edit pages are filtered for access control.
280 Default: False.
281
282 =item access_filter_parents
283
284 If this is true, then the drop-down lists of possible parents on the
285 newsletter edit pages are filtered for access control.
286 Default: False.
287
288 =item server_auth
289
290 Set this to non-zero to enable authentication via server
291 authentication (usually Basic Authentication.)  You should normally
292 set this if you set htusers below.  Default: 0 (disabled)
293
294 =item htusers
295
296 This should be the path to a file to be updated with the list of users
297 and crypt() versions of their passwords.  If this is set then the
298 security system will check for a user set by the browser before
299 attempting a form based logon.  Default: None.
300
301 =item custom_class
302
303 The name of the custom class for your site.  This is currently only
304 used for article editing customizations.  This class should derive
305 from BSE::CustomBase.  Default: BSE::Custom.
306
307 =item jit_dynamic_pregen
308
309 If this is true, then pre-generation for dynamic pages will be delayed
310 until the page is displayed to a user.  Default: off.
311
312 =item staticajax
313
314 If true, the ifAjax and ajax tags will be active for static pages.
315
316 =item cache_thumbnails
317
318 If set to zero the results of the thumbimage/gthumbimage body/template
319 tags will not be cached.  Default: 1 (caching is enabled).
320
321 =item static_thumbnails
322
323 If true and cache_thumbnails is true then thumbnails for the thumbnail
324 cache will be generated when a static page is regenerated, and the
325 link from the page will link to the image in the cache rather than to
326 C<thumb.pl>.  Default: 1 (static thumbnails enabled).
327
328 =item alias_prefix
329
330 The prefix applied to articles that use a linkAlias url.  This should
331 start with a /.
332
333 =item use_alias
334
335 If this is non-zero then an article with linkAlias set will use an
336 alias url instead of the "real" url.  You will need to configure a
337 RewriteRule or ErrorDocument to page.pl to direct the user to the
338 correct URL.  Default: 1.
339
340 =item alias_suffix
341
342 If this is non-zero then the title is cleaned up (all but
343 alphanumerics removed) and appended to the alias URL generated.
344
345 =item default_popupimage
346
347 This is the default popup image class for the popimage[] and
348 gpopimage[] tags.  Default: popup.
349
350 =item warn_obsolete
351
352 Some obsolete tags will warn to stderr if this is non-zero.  Default:
353 don't warn.
354
355 =item no_cache_dynamic
356
357 If non-zero, the default, dynamic responses will include a
358 C<Cache-Control: no-cache> header.  This can be overridden for
359 articles via , article flags, C<[template >
360 I<templatename>C<].no_cache_dynamic> and [article].no_cache_dynamic.
361 Default: 1.
362
363 =back
364
365 =head2 [mail]
366
367 This section controls how BSE sends email.
368
369 =over
370
371 =item smtp_server
372
373 The host or IP address of your mail server.  If this is not set
374 C<sendmail> will be used instead.  If this is set you must also set
375 I<helo>.
376
377 =item helo
378
379 The name that BSE uses to identify itself when sending mail via SMTP.
380 Required if I<smtp_server> is set.
381
382 =item sendmail
383
384 The path to the C<sendmail> binary.  Default: /usr/lib/sendmail
385
386 =item sendmail_opts
387
388 The options supplied to sendmail.  Default: -t -oi
389
390 You may want to add the -odq option to this if you want mail queued
391 rather than sent immediately.
392
393 =item set_errors_to_from
394
395 If true, we add an Errors-To header set to the same as the From
396 header.  Default: true.
397
398 =item html_system_email
399
400 If non-zero then emails sent via the compose mail system that aren't
401 being sent to a member record, will be sent as HTML, if the HTML
402 template is available.
403
404 =back
405
406 =head2 [children of I<id>]
407
408 Where I<id> is the identifier for an article.
409
410 =over
411
412 =item template
413
414 the name of the default template for children of the given parent
415
416 =item template_dirs
417
418 a comma-separated list of extra directories under $TMPLDIR to search
419 for templates that can be used for children of the given parent article.
420
421 =back
422
423 =head2 [article I<id>]
424
425 Where I<id> is the identifier of an article.
426
427 =over
428
429 =item template_dirs
430
431 A comma-separated list of extra directories under $TMPLDIR to search
432 for templates that can be used for children of the given parent
433 article.
434
435 =item extra_templates
436
437 A comma-separated list of extra templates under $TMPLDIR that can be
438 used for the given article.
439
440 =back
441
442 =head2 [level I<level>]
443
444 =over
445
446 =item template
447
448 The default template for this level of article, assuming it hasn't
449 been set in the [children of I<article id>] section.
450
451 =item template_dirs
452
453 A comma-separated list of extra directories under $TMPLDIR to search
454 for templates that can be used for articles at the given I<level>.
455
456 =back
457
458 =head2 [catalogs]
459
460 =over
461
462 =item template
463
464 The default template for catalogs.
465
466 =back
467
468 =head2 [products]
469
470 =over
471
472 =item template
473
474 The default template for products.
475
476 =item extra_templates
477
478 A comma separated list of extra templates that can be used for
479 products.
480
481 =back
482
483 =head2 [messages]
484
485 This can be used to control translation of error messages.  Each key
486 has a prefix identifying the module that uses the error, followed by
487 '/' followed by a specific identifier for the message.
488
489 Message parameters, expressed as $I<digit>, are replaced with the
490 parameters passed to the message.  C<$$> is replaced with C<$>.
491
492 Each message identifier below is documented with the id, when it
493 occurs, the default message, and any parameters.
494
495 =over
496
497 =item user/needlogon
498
499 the user attempted to logon without entering a logon name.  Default:
500 "Please enter a logon name".  No parameters.
501
502 =item user/needpass
503
504 the user attempted to logon without entering a password.  Default:
505 "Please enter your password."  No parameters.
506
507 =item user/baduserpass
508
509 the user's logon name or password was not found or did not match.
510 Default: "Invalid user or password".  No parameters.
511
512 =item user/notloggedon
513
514 the user attempted to logoff while not logged on.  Default: "You
515 aren't logged on".  No parameters.
516
517 =item user/optsoldpass
518
519 the user entered a new password on the options page without entering
520 their old password.  Default: "You need to enter your old password to
521 change your password".  No parameters.
522
523 =item shop/logonrequired
524
525 Displayed if the user attempts to checkout when [shop].require_logon
526 is true.
527
528 =back
529
530 =head2 [downloads]
531
532 =over
533
534 =item must_be_paid
535
536 if non-zero, the order must be marked as paid for before the file can
537 be downloaded.
538
539 =item must_be_filled
540
541 if non-zero the order must be marked as filled before the files can be
542 downloaded.
543
544 =item require_logon
545
546 if non-zero the user must be registered/logged on to download I<any>
547 file.
548
549 =item log_downufile
550
551 if non-zero, downloads of userfiles will be logged.  Default: 0
552
553 =item log_downufile_maxage
554
555 the maximum age of entries in the user file download log, in days.
556 Default: 30.
557
558 =back
559
560 =head2 [confirmations]
561
562 Control over confirmation emails.
563
564 =over
565
566 =item subject
567
568 The subject of email confirmation emails.  Default: Subcription
569 Confirmation.
570
571 =item from
572
573 The from field for the email.  Default: $SHOP_FROM
574
575 =back
576
577 =head2 [subscriptions]
578
579 Control over subscription messages.
580
581 =over
582
583 =item from
584
585 The from field for the email.  Default: $SHOP_FROM.
586
587 =item testname
588
589 Default for the "Test Name" field for sending test subscription
590 messages.
591
592 =item testemail
593
594 Default for the "Test Email" field for sending test subscription
595 messages.
596
597 =item testtextonly
598
599 Set to 1 if you want the "Test Text Only" box checked by default for
600 sending test subscription messages.
601
602 =item testing
603
604 Set to 0 to disable display of the test subscription messages portions
605 of the subscriptions send form.
606
607 =item text_link_inline
608
609 Set to format links as they appear in the text version of emails.
610 C<$1> is replaced with the title, C<$2> with the URL and C<$3> with
611 the index. C<$$> is replaced with '$'. Default: C<$1 [$3]>
612
613 =item text_link_list
614
615 Set to format links as they appear at the footer of the body text.  If
616 this is set to the empty string then no list appears. C<$1>, C<$2>,
617 C<$3>, C<$$> are replaced as for I<text_link_inline> and $n is
618 replaced with newline.  Default: C<[$3] $2>
619
620 =item text_link_list_prefix
621
622 A line of text produced above the list of URLs if there is one.
623 Default: C<----->. $n in this is replaced with newlines.
624
625 =back
626
627 For example, if the configuration is:
628
629   text_link_inline="$1" ($3)
630   text_link_list_prefix=$n$n-------
631   text_link_list=($3) "$1"$n  => $2
632
633 and the body text is:
634
635   doclink[3]
636   link[http://www.example.com/|Example]
637
638 the result will be:
639
640   "The Shop" (1)
641   "Example" (2)
642   
643   
644   -------
645   (1) "The Shop"
646     => http://www.yoursite.com/shop/index.html
647   (2) "Example"
648     => http://www.example.com/
649
650 =head2 [search]
651
652 =over
653
654 =item highlight_partial
655
656 If this is true then partial matches will be highlight in search
657 result excerpts.  Default: True
658
659 =item keep_inaccessible
660
661 If this is true then resulting articles that can't be accessed by the
662 user are listed in the search results.  Default: false.
663
664 =item wordre
665
666 The default regular expression used to match words in text during
667 indexing.  Default: \w+
668
669 =item wordre_I<fieldname>
670
671 The field specific word match regular expression for the built-in
672 search indexer.  Default: the value of C<wordre>.
673
674 =back
675
676 =head2 [search highlight]
677
678 Sets the prefix and suffix used for highlighting matches for different
679 fields.
680
681 These are used by the highlight_result, excerpt, pageTitle, author,
682 keywords and matchFile tags.
683
684 Each field has a prefix and suffix entry.  The key is
685 I<fieldname>_prefix or I<fieldname>_suffix.  For file fields this is
686 file_I<fieldname}_prefix and file_I<fieldname}_suffix.
687
688 The default prefix is <b>.  The default suffix is </b>.
689
690 For example you can do:
691
692   [search highlight]
693   body_prefix=<span class="searchfound">
694   body_suffix=</span>
695
696 =head2 [shop]
697
698 =over
699
700 =item enabled
701
702 Used by some templates to check if the shop is enabled.  Set this to 1
703 to enable the shop, or 0 to disable it.
704
705 =item secureurl_articles
706
707 If this is false then shop articles will not use the secureurl as their 
708 baseurl.  Default: True
709
710 =item register_if_files
711
712 If true the customer is required to register before checkout if there
713 are any for sale files attached to products in the cart.  Default: True
714
715 =item require_logon
716
717 If true the customer is required to be logged on before checkout,
718 whether or not for sale files are attached to products in the cart.
719 Default: False.
720
721 =item payment_types
722
723 A comma-separated list of acceptable payment types.  Default: 0
724
725 The possible payment types are:
726
727 =over
728
729 =item *
730
731 0 - the user enters a credit card number, name and expiry date
732
733 =item *
734
735 1 - the customer will send a cheque
736
737 =item *
738
739 2 - contact customer for details
740
741 =back
742
743 Other types can be added by adding entries to the [payment type names]
744 and [payment type descs] sections.
745
746 =item address1
747
748 =item address2
749
750 =item address3
751
752 These are used by various shop templates to present an address that a
753 cheque payment should be sent to.
754
755 =item from
756
757 From email address for emails sent by the shop.  Overides $SHOP_FROM
758 in Constants.pm
759
760 =item to_name
761
762 To name for emailed orders sent by the shop.  Overrides $SHOP_TO_NAME
763 in Constants.pm
764
765 =item to_email
766
767 To email for emailed orders sent by the shop.  Overrides $SHOP_TO_EMAIL
768 in Constants.pm
769
770 =item noencrypt
771
772 If this is true then orders sent to you by the shop will not be
773 encrypted.  Enabling this disabled acceptance of credit card orders,
774 and the default for C<payment_types> will become C<1> instead or C<0>.
775
776 Please realize that other potentially commercially sensitive
777 information is being sent in the clear to a central location,
778 unencrypted.
779
780 =item email_order
781
782 If true, then the order is email to to_email, possibly with credit
783 card information included.  Default: $SHOP_EMAIL_ORDER.
784
785 =item display_I<field>
786
787 Used to translate the stored order field name into a presentation name
788 suitable for error messages.
789
790 =item cardprocessor
791
792 The name of a class to load to process credit card transactions online.
793
794 Currently this can be either DevHelp::Payments::Test or
795 DevHelp::Payments::Inpho.
796
797 =item crypt_module
798
799 Name of the encryption module to use.  Default: $SHOP_CRYPTO.
800
801 =item crypt_signing_id
802
803 Id of the key to sign the order email with.  If this is non-empty then
804 the email is signed even if [basic].sign is false.  Default:
805 $SHOP_SIGNING_ID.
806
807 =item crypt_gpg
808
809 Path to the GnuPG program.  Default: $SHOP_GPG
810
811 =item crypt_passphrase
812
813 Passphrase of the key used to sign the email.  Default:
814 $SHOP_PASSPHRASE.
815
816 =item show_card_type
817
818 If true, request the card type when requesting credit card
819 information.  Default: False.
820
821 =item cart_entry_limit
822
823 Maximum number of entries in the cart.  This limits the number of
824 distinct products (with options) in the cart, not the total
825 quantities.  Default: Unlimited.
826
827 =back
828
829 =head2 [shipping]
830
831 =over
832
833 =item couriers
834
835 A space-separated list of modules under Courier::, e.g. "Fastway::Road
836 AustraliaPost::Air". These will be made available as shipping methods
837 on the checkout page.
838
839 =item sourcepostcode
840
841 The post code from which products are shipped.
842
843 =item fastwayfranchisee
844
845 The name of the Fastway franchisee used to ship products from the
846 sourcepostcode.
847
848 =item fastwayfranchiseecode
849
850 The Fastway franchisee code for the customer, if any.
851
852 =back
853
854 =head2 [Shop Order Validation]
855
856 This section can contain extra order validation information, including
857 specifying required fields, display names and extra validation rules.
858
859 =head2 [fields]
860
861 =over
862
863 =item title_size
864
865 The maximum length of the article title field.  Default: 255.  Should
866 not be set higher than this unless you change the database schema.
867
868 =back
869
870 =head2 [interest]
871
872 Controls the interest.pl script.
873
874 =over
875
876 =item notify
877
878 Email address that is notified of the interest.  Defaults to $SHOP_FROM.
879
880 =back
881
882 =head2 [debug]
883
884 Used for debugging.
885
886 =over
887
888 =item logon_cookies
889
890 When a user logs on, and the site url is different to the secure url
891 BSE attempts to refresh to the other "side" of the site to set the
892 same cookie.
893
894 BSE does some simple comparisons to attempt to determine whether the
895 logon form was triggered on the secure side of the site (possibly from
896 the shop) or on the insecure side.  Since CGI doesn't necessarily give
897 us all the information required, it's possible it will guess wrong.
898
899 Setting this option to 1 will enable debugging information sent to
900 standard error, which will be sent to the error log on Apache.  This
901 probably isn't useful on IIS.
902
903 =item file_unlink
904
905 Reports errors to STDERR (hence to the error log on Apache) if there
906 is a problem deleting the actual file when an attached file is
907 removed.
908
909 =item mail_encryption
910
911 Reports debugging information to standard error while encrypting your
912 mail.
913
914 =item cookies
915
916 Reports cookies received from the browser and sent to the browser to
917 STDERR (hence to the error log on Apache.)
918
919 =item dump_session
920
921 If nonzero the session hash is dumped to STDERR after it is retrived
922 from the database.
923
924 =item subscription_expiry
925
926 If non-zero then subscription expiry date calculations are dumped to
927 STDERR.
928
929 =item jit_dynamic_regen
930
931 If non-zero then information about jit_dynamic_regen is sent to
932 STDERR.
933
934 =item ifUserCan
935
936 If non-zero then the ifUserCan tag will output some trace information
937 to STDERR.
938
939 =back
940
941 =head2 [uri]
942
943 Contains various URIs.
944
945 This is underused, so don't rely on it yet.
946
947 =over
948
949 =item cgi
950
951 The URI to the CGI directory.  Default: /cgi-bin
952
953 =item images
954
955 The URI where images are kept.  Default: /images
956
957 =item shop
958
959 =item articles
960
961 =back
962
963 =head2 [articles]
964
965 This will provide translations from symbolic names to article ids.
966
967 Currently this is used for converting article ids in the access
968 control code, and for looking up the id of the shop.
969
970 =head2 [printable type]
971
972 If the user supplies a template name to printable.pl then you can use
973 a different content type by adding an entry to this section.  The key
974 is the template name, and the value is the full content type.
975
976 =head2 [search index scores]
977
978 This section is used when generating the search index to override the
979 default scores for each field in the articles.
980
981 The default scores are:
982
983   Field           Score  Notes
984   -----           -----  -----
985   title             5
986   body              3
987   keyword           4
988   pageTitle         5
989   author            4
990   summary           0
991   description       0    Products only
992   product_code      0    Products only
993   file_displayName  2    displayName for files
994   file_description  2    description for files
995   file_notes        1    notes for files
996
997 =head2 [article flags]
998
999 =head2 [product flags]
1000
1001 =head2 [catalog flags]
1002
1003 Flags that can be set for articles, products and catalogs
1004 respectively.  Note that flags for articles are also visible in
1005 products and catalogs.
1006
1007 All flag Ids are single letters or digits.  Uppercase letters are
1008 reserved for use by BSE internally, leaving lower-case letters and
1009 digits for your own use.
1010
1011 Use the id of the flag as the key, and a description of the flag as
1012 it's value.
1013
1014 =head2 [article uris]
1015
1016 Each key is an article id, the values are base URIs to store the HTML
1017 form of those articles and their children under.
1018
1019 =head2 [protect link]
1020
1021 The keys are ids of articles that shouldn't have their link field
1022 overwritten.  The value should be a true value, but is otherwise
1023 ignored.
1024
1025 =head2 [datadump]
1026
1027 =over
1028
1029 =item to
1030
1031 The recipient for the data dump email sent by datadump.pl. Default:
1032 $DATA_EMAIL.
1033
1034 =item from
1035
1036 the From for the data dump email sent by datadump.pl.  Default:
1037 $SHOP_FROM.
1038
1039 =back
1040
1041 =head2 [site users]
1042
1043 Configuration for site users.
1044
1045 =over
1046
1047 =item nopassword
1048
1049 If this is set to true then no passwords are required during
1050 registration, a confirmation email is sent immediately upon
1051 registration and that confirmation email contains a link the user can
1052 use to manage their details.
1053
1054 This option has some security concerns since it can leave links to the
1055 user's information in the browser history.  This option is not
1056 recommended.
1057
1058 You cannot use this to control access to the shop.
1059
1060 =item require_name1
1061
1062 =item require_name2
1063
1064 =item require_address
1065
1066 =item require_city
1067
1068 =item require_state
1069
1070 =item require_postcode
1071
1072 =item require_telephone
1073
1074 =item require_facsimile
1075
1076 =item require_country
1077
1078 =item require_title
1079
1080 =item require_organization
1081
1082 Set these to true to require the corresponding field during
1083 registration, and to keep it required after modification.  Default:
1084 false.
1085
1086 If you enable any of these, you should enable C<info_on_register> as
1087 well, or modify the registration template to include the given fields.
1088
1089 =item display_I<field name>
1090
1091 Controls how the given field is displayed in error messages.  If you
1092 change the field names on the registration and/or options forms you
1093 should probably change them here too.  Default: internal field name
1094 with the first character converted to upper-case.
1095
1096 =item info_on_register
1097
1098 If this is set then the user info is prompted for during user
1099 registration.  The information still isn't required unless the
1100 appropriate require_I<field> option is set.  Default: false.
1101
1102 =item register_refresh
1103
1104 The default URL to refresh to on completing registration if no r
1105 parameter is supplied.
1106
1107 =item subscribe_all
1108
1109 If this is set then the subcription checkboxes are all checked on
1110 registration by default.  Default: false.
1111
1112 The user will only receive the subscriptions if they leave them checked
1113 and follow the link in the confirmation email.
1114
1115 =item subscribe_I<id>
1116
1117 Where I<id> is the number identifying a subscription.  If this is set
1118 then the subscription checkbox for that subscription will be checked
1119 by default on the registration form.  Default: false.
1120
1121 The user will only receive the subscriptions if they leave it checked
1122 and follow the link in the confirmation email.
1123
1124 You can get the I<id> of a subcription by looking at the Edit link on the
1125 subscriptions management page, the number after "id=" is the id.
1126
1127 =item billing_on_main_opts
1128
1129 If set to zero then user billing options will be managed on a separate
1130 page.  This is controlled by the user/options_base.tmpl template.
1131
1132 =item user_register
1133
1134 If set to zero then users cannot register themselves.  Default: true,
1135 allowing users to register themselves.
1136
1137 =item notify_register
1138
1139 If true then an email is sent when a new user registers on your site.
1140 The email address sent to is the first set of [site
1141 users].notify_register_email, [shop].from or $SHOP_FROM from
1142 Constants.pm
1143
1144 No email is sent if a new user is created from the administration user
1145 interface.
1146
1147 See also: notify_register_email, notify_register_subject.
1148
1149 =item notify_register_email
1150
1151 The email to sent the registration notification too.  See
1152 notify_register above.
1153
1154 =item notify_register_subject
1155
1156 The subject of the notification email sent when a new user registers.
1157 Any {I<field>} is replaced with the given field from the registered
1158 user.  See notify_register above.
1159
1160 Default: New user {userId} registered
1161
1162 =item notify_register_customer
1163
1164 If non-zero then email id C<notify_register_customer> will be sent to
1165 new user on registration.  By default this uses template
1166 user/email_register, subject "Thank you for registering" which can be
1167 overridden in [email notify_register_customer]
1168
1169 =back
1170
1171 =head2 [payment type names]
1172
1173 This section and [payment type descs] are used to configure new
1174 paymeny type ids.
1175
1176 The key is the integer representing the payment type.  The value is
1177 the name used in tags for checking the payment type.
1178
1179 You can also add a description (currently unused) to [payment type
1180 descs].
1181
1182 You should use numbers starting from 10 to avoid conflicts with future
1183 BSE payment types.
1184
1185 =head2 [payment type descs]
1186
1187 See [payment type names].
1188
1189 =head2 [payment type required]
1190
1191 Set the key given by the payment type id to a value of a
1192 comma-separated list of fields required for that payment type.
1193
1194 =head2 [help style I<style-name>]
1195
1196 This type of configuration section is used to set values for a style
1197 of help icon.  Only the C<template> and C<prefix> values are used
1198 directly by the code, the others are used by the default helpicon
1199 templates.
1200
1201 =over
1202
1203 =item prefix
1204
1205 The URI to the help files for this style.  Default: /help/ in style
1206 "user", /admin/help/ in style "admin".
1207
1208 =item template
1209
1210 The template used to produce the icon.  Default: helpicon in style
1211 user, admin/helpicon in style "admin".
1212
1213 =item icon
1214
1215 URI to the help icon image.   Default: /images/admin/help.gif
1216
1217 =item iconwidth
1218
1219 The width of the help icon image.  Default: 16
1220
1221 =item iconheight
1222
1223 The height of the help icon image.  Default: 16
1224
1225 =back
1226
1227 If you just want to change the help icon image for user help icons you
1228 might do:
1229
1230   [help style user]
1231   icon=/images/help.gif
1232
1233 =head2 [affiliate]
1234
1235 =over
1236
1237 =item allowed_referer
1238
1239 A semi-colon (;) separated list of referer domains that are allowed to
1240 link to the C<a_set> target of L<affiliate.pl>.
1241
1242 If the user's browser supplies a referer header then it will be
1243 checked against this list.
1244
1245 =item require_referer
1246
1247 If this is set then the C<a_set> target of L<affiliate.pl> will
1248 require that the user's browser supply a Referer header.
1249
1250 =item default_refresh
1251
1252 If no C<r> parameter is supplied to the C<a_set> target of
1253 L<affiliate.pl> then this is used as the default refresh.
1254
1255 Default: the site base url.
1256
1257 =item subscription_required
1258
1259 This is either the numeric or text of a subscription for which the
1260 affiliate must have an active subscription.
1261
1262 =item flag_required
1263
1264 A single letter flag which the site administrator must set for the
1265 affiliate page to be displayed for the given member.
1266
1267 =item set_cookie
1268
1269 If this is set then affiliate.pl will set the named cookie to the
1270 affiliate id.
1271
1272 =item other_cookies
1273
1274 This is a comma-separated list of other cookies that should be set by
1275 the a_set target.  The values for the cookies should be passed to the
1276 a_set target.  For example with:
1277
1278   [affiliate]
1279   other_cookies=alpha,beta
1280
1281 if the url:
1282
1283   http://your.site.com/cgi-bin/affiliate.pl?a_set=1&id=someid&alpha=1&beta=2&gamme=3
1284
1285 is accessed, then the cookie alpha is set to "1", beta is set to "2".
1286 The cookie gamma will not be set since it's not listed.
1287
1288 =item linkbaseurl
1289
1290 Used as the link base URL for the afflink.tmpl side bar template when
1291 an affiliate id is set.  Default: example.com
1292
1293 =item linkbasedesc
1294
1295 Used at the text of the link for the afflink.tmpl side bar template
1296 when an affiliate id is set.  Default: Your Site.
1297
1298 =item linkdefurl
1299
1300 Used as the link URL for the afflink.tmpl side bar template when an
1301 affiliate id is not set.  Default: example.com
1302
1303 =item linkdefdesc
1304
1305 Used as the text of the link for the afflink.tmpl side bar template
1306 when an affiliate id is not set.  Default: Our site
1307
1308 =back
1309
1310 =head2 [BSE Siteuser Images]
1311
1312 Each key is the id of a member image, with a corresponding [BSE
1313 Siteuser Image I<image_id>] section.  The values are ignored.
1314
1315 =head2 [BSE Siteuser Image I<image_id>]
1316
1317 Provides information about a single member image "template".
1318
1319 =over
1320
1321 =item description
1322
1323 Short description on the image, like "Logo".  Used in error messages.
1324
1325 =item help
1326
1327 Longer description of the image.  Accessible with the member_image tag.
1328
1329 =item minwidth
1330
1331 =item minheight
1332
1333 =item maxwidth
1334
1335 =item maxheight
1336
1337 The minimum and maximum dimensions of the image.
1338
1339 =item widthsmallerror
1340
1341 =item heightsmallerror
1342
1343 =item widthlargeerror
1344
1345 =item heightlargeerror
1346
1347 Error messages displayed in the when the image is outside the
1348 configured dimensions.
1349
1350 =item largeerror
1351
1352 =item smallerror
1353
1354 Default error messages for the above.
1355
1356 =item maxspace
1357
1358 Maximum storage the image can use in bytes.  Default: 1000000.
1359
1360 =item spaceerror
1361
1362 Error message displayed if the image uses too much storage.
1363
1364 =back
1365
1366 =head2 [editor]
1367
1368 Various editor settings.
1369
1370 =over
1371
1372 =item allow_thumb
1373
1374 If this is non-zero the system will attempt to load the configured
1375 thumbnail class, and put thumbnail images on the image manager page
1376 rather than full-size images.  Default: off
1377
1378 =item thumbs_class
1379
1380 The name of a perl class that implement's BSE's thumbnail API.  At
1381 this point the only class that implements that is BSE::Thumb::Imager,
1382 supplied with BSE.  Default: None
1383
1384 =item default_thumbnail
1385
1386 URI to the default thumbnail image.  This is presented when the
1387 runtime production of a thumbnail image fails.
1388
1389 =item default_thumbnail_width
1390
1391 =item default_thumbnail_height
1392
1393 Dimensions of the default thumbnail image.
1394
1395 =item default_thumbnail_alt
1396
1397 Alt text for the default thumbnail image.
1398
1399 =item check_modified
1400
1401 If this is true then BSE will check the value of the lastModified
1402 parameter passed against the value in the article.  If these don't
1403 match the article isn't saved and is redisplayed with an error
1404 message.  This provides simple protection against one user saving
1405 changes over those made by another.
1406
1407 =back
1408
1409 =head2 [thumbnails]
1410
1411 =over
1412
1413 =item max_width
1414
1415 =item max_height
1416
1417 =item max_pixels
1418
1419 Default values for the thumbimage tag.
1420
1421 =back
1422
1423 =head2 [includes]
1424
1425 Each value is used as the relative or absolute name of a file or
1426 directory to load more configuration data from.
1427
1428 The keywords must remain unique.
1429
1430 Only the [includes] section from bse.cfg itself is used to locate more
1431 configuration data.
1432
1433 If the value references a directory, all files with an extension of
1434 C<.cfg> are read for configuration data.
1435
1436 The order the files are read (which later files overriding older
1437 files) is:
1438
1439 =over
1440
1441 =item 1.
1442
1443 bse.cfg is read
1444
1445 =item 2.
1446
1447 the entries in [includes] are sorted alphabetically (or rather
1448 asciily), so an entry with key "A" is read before one with key "B",
1449 one with key "01" is read before "02", but key "10" would be read
1450 I<before> key "2".
1451
1452 =item *
1453
1454 if an entry is a file then that is read and the values merged.
1455
1456 =item *
1457
1458 if an entry is a directory, then that is scanned and the files found
1459 read alphabetically as above.
1460
1461 =back
1462
1463 =head2 [error_img]
1464
1465 This is used to configure the error icon displayed next to fields that
1466 fail validation.
1467
1468 =over
1469
1470 =item image
1471
1472 URI to the image file.
1473
1474 =item width
1475
1476 =item height
1477
1478 The width and height of the error icon image.
1479
1480 =back
1481
1482 =head2 [site user flags]
1483
1484 Flags that can be set for site users.
1485
1486 All flag Ids are single letters or digits.  Uppercase letters are
1487 reserved for use by BSE internally, leaving lower-case letters and
1488 digits for your own use.
1489
1490 Use the id of the flag as the key, and a description of the flag as
1491 it's value.
1492
1493 =head2 [article defaults]
1494
1495 =head2 [catalog defaults]
1496
1497 =head2 [product defaults]
1498
1499 These sections contain defaults values for the corresponding article
1500 types.
1501
1502 Each key is the name of a column for the article type.
1503
1504 If an entry is not found in [catalog defaults] then [article defaults]
1505 is also checked.
1506
1507 If an entry is not found in [product defaults] then [article defaults]
1508 is also checked.
1509
1510 These sections are checked B<after> the C<[children of >I<id>C<]> and
1511 C<[level >I<level>C<]> sections.
1512
1513 These defaults are used when creating an article where no value is
1514 supplied, they can also be accessed via the <:default I<name>:> tag.
1515
1516 =head2 [newsletter filters]
1517
1518 Contains C<criteria>I<index> entries starting from C<criteria1>, then
1519 C<criteria2>, etc.
1520
1521 Each entry consists of a filter class name, followed by a ; followed
1522 by data passed to that filter.
1523
1524   ; user the original SQL based filter, configured from 
1525   ; section [foo]
1526   criteria1=BSE::NLFilter::SQL;foo
1527
1528 See the documentation for each filter to configure the filters.
1529
1530 =head2 [Query Groups]
1531
1532 The key of each entry is the numeric identifier of a query group, the
1533 values are the name of the query group.  For example:
1534
1535   [query groups]
1536   1=some name
1537
1538   [query group some name]
1539   sql=select id from site_users where id = ? and name1 like '%some%'
1540
1541 Each entry also has a corresponding [Query Group I<name>] section.
1542
1543 =head2 [query group I<name>]
1544
1545 This section corresponds to an entry in [Query Groups].
1546
1547 =over
1548
1549 =item sql
1550
1551 This is an SQL statement.  One placeholder is required and is passed
1552 the siteuser id (primary key) of the user to be checked.  If this
1553 query returns I<any> rows then the user is considered part of the
1554 group.
1555
1556 =back
1557
1558 =head2 [template types]
1559
1560 Each key is a template name, the value is the content type to be used
1561 when displaying the template dynamically.
1562
1563 =head2 [body class]
1564
1565 This section defines CSS class names for BSE's body text link tags.
1566 The key is the tag name, the value is the CSS class to be used.
1567
1568 By default the class used is the same as the name of the tag, but you
1569 can switch this off by adding an entry setting the class to the empty
1570 string, for example:
1571
1572   ; no class attribute for any of the links
1573   [body class]
1574   link=
1575   poplink=
1576   doclink=
1577   popdoclink=
1578
1579 You can set p here too to set the class for paragraphs generated as
1580 body text.  By default no class is set.
1581
1582 =head2 [popimage]
1583
1584 Controls the behaviour of the window displayed by the popimage[] body
1585 text tag.  If the Javascript for this has been customized then this
1586 may not apply.
1587
1588 =over
1589
1590 =item extrawidth
1591
1592 =item extraheight
1593
1594 Extra width and height for the window beyond the size of the image.
1595 Default: no extra width or height.
1596
1597 =item popmiddle
1598
1599 If set to non-zero popimage[] will attempt to centre the popup within
1600 the current window.  Default: 0.
1601
1602 =back
1603
1604 =over
1605
1606 =back
1607
1608 =head2 [inpho]
1609
1610 This is used to configure the DevHelp::Payments::Inpho module.
1611
1612 =over
1613
1614 =item test
1615
1616 If this is set then the test parameters are used instead of the
1617 product values.
1618
1619 =item url
1620
1621 The URL to process requests through.  
1622
1623 Default: https://extranet.inpho.com.au/cc_ssl/process
1624
1625 =item user
1626
1627 Inpho supplied user name.
1628
1629 =item password
1630
1631 Inpho supplied password.
1632
1633 =item test_url
1634
1635 The URL to process test requests through.
1636
1637 =item test_user
1638
1639 The user to supply to test requests.
1640
1641 =item test_password
1642
1643 The password to supply to test requests.
1644
1645 =back
1646
1647 =head2 [custom]
1648
1649 This section controls whether some custom class methods are called:
1650
1651 =over
1652
1653 =item saveopts
1654
1655 If this is non-zero then siteuser_saveopts is called.
1656
1657 =back
1658
1659 =head2 [levelI<level> menus]
1660
1661 Where I<level> is the article level at which the defined menu options will be available.
1662 Configure each menu value and description as I<key> and I<value>.
1663
1664 =over
1665
1666 For example:
1667
1668   [level1 menus]
1669   0=Default
1670   1=Sidebar
1671   2=Footer
1672
1673 To create a menus using such values, use the "allkids_of" iterator "filter" option.
1674
1675 For example:
1676
1677   <:iterator begin allkids_of -1 filter: [menu] == 2 :>
1678
1679 =back
1680
1681 =head2 [title alias]
1682
1683 Enable the "titleAlias" article field and set which level it will be available.
1684
1685 =over
1686
1687 =item levelI<level>
1688
1689 Where I<level> is the article "level" for which the "titleAlias" field should be enabled.  To enable
1690 set the value to non-zero.
1691
1692 For example:
1693
1694   [title alias]
1695   level1=1
1696
1697 The "titleAlias" can be used as an alternate "short" title for the given article, especially useful
1698 for space critical iterated menus.  A template conditional can be used to display the "titleAlias" 
1699 in place of the article "title" when appropriate.
1700
1701 =back
1702
1703 =head2 [thumb geometries]
1704
1705 Each key represents a geometry identifier for use by the thumbimage[],
1706 gthumbimage[] body text tags and the <:thumbimage ...:>, <:gthumbimage
1707 ...:>, <:dthumbimage ...:> template tags.
1708
1709 The key is the geometry identifier, the value is the geometry string
1710 as follows.
1711
1712 The geometry string consists of:
1713
1714 =over
1715
1716 =item *
1717
1718 dimensions
1719
1720 =item *
1721
1722 crop flag - if present
1723
1724 =item *
1725
1726 optional fill
1727
1728 =back
1729
1730 The dimensions can be in any of the following forms:
1731
1732 =over
1733
1734 =item *
1735
1736 <width>x<height> - the desired maximum width and height. eg 200x150
1737
1738 =item *
1739
1740 <width>x - the desired width, with the height calculated
1741 proportionally based on the source image size
1742
1743 =item *
1744
1745 x<height> - the designed height, with the width calculated
1746 proportionally based on the source image size.
1747
1748 =item *
1749
1750 <size> - the desired maximum size in both directions. so "200" is
1751 equivalent to "200x200"
1752
1753 =back
1754
1755 The crop flag is a single letter "c", if present then the image should
1756 be scaled so the smaller dimension matches the requested size, and the
1757 longer dimension will be cropped to fit.
1758
1759 The fill if present is: fill(color) where color is a color recognized
1760 by the underlying graphics implementation.  This should be at least
1761 hex web colors without the #, eg fill(FF0000) will fill with red.
1762
1763 =head2 [thumb classes]
1764
1765 Each key represents a geometry identifier for use by the thumbimage[],
1766 gthumbimage[] body text tags and the <:thumbimage ...:>, <:gthumbimage
1767 ...:>, <:dthumbimage ...:> template tags.
1768
1769 The value is used as the class for the generated img tag.
1770
1771 =head2 [targets]
1772
1773 Each value represents a handler or script name for the <:dyntarget
1774 I<script> I<target> ...:> tag.
1775
1776 Each key has a TARGET version and a no-TARGET version, with the key
1777 suffixed with C<_n>.
1778
1779 The default C<nuser> target is C</cgi-bin/nuser.pl/user/TARGET>.  The
1780 default no-target C<nuser> is C</cgi-bin/nuser.pl/user>.
1781
1782 For other targets the default is
1783 C</cgi-bin/>I<script>C<.pl?a_TARGET=1> and
1784 C</cgi-bin/>I<script>C<.pl>.
1785
1786 The string C<TARGET> is replaced with the target specified in the
1787 dyntarget tag.
1788
1789 This, along with dyntarget is intended to allow a more "Web 2.0" type
1790 of access to BSE.  eg. you might set:
1791
1792   [targets]
1793   shop=/xshop/TARGET
1794   shop_x=/xshop/
1795
1796 and have a rewrite rule:
1797
1798   RewriteRule ^/xshop/(.*)$ /cgi-bin/nuser.pl/shop/$1 [PT]
1799
1800 =head2 [popimage class I<classname>]
1801
1802 This defines the settings for a class of images generated by the
1803 popimage[] and gpopimage[] body text markup tags.  For example, the
1804 settings for C<popimage[imageid|foo]> can be found in section
1805 C<[popimage class foo]>.
1806
1807 =over
1808
1809 =item html
1810
1811 The html generated for this class.  Tags of the form
1812 C<{>I<identifier>C<}> are replaced, where I<identifier> can be
1813 C<inline_> or C<outline_> followed by an image field name, for example
1814 C<inline_src> is the URL to the inline image.
1815
1816 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>
1817
1818 The default may be tuned as needed.
1819
1820 =item inline
1821
1822 The inline image geometry.  Default: editor (the value used for
1823 thumbnails on the admin side)
1824
1825 =item outline
1826
1827 The outline image geometry.  If no value is supplied then the original
1828 image values are used.
1829
1830 =back
1831
1832 =head2 [mail resources]
1833
1834 Each key is the identifier of a file that can be attached to
1835 BSE::ComposeMail emails.  The value is comma separated filename,
1836 content type, inline status.
1837
1838 The files are searched for through the template search mechanism, so
1839 the filename can be relative to either the master or local templates
1840 directories.
1841
1842 If the content type is not supplied, if the filename end in gif, png
1843 or jpg the appropriate content type is used, otherwise
1844 application/octet-stream.
1845
1846 If the inline status is not supplied then images are considered
1847 inline, and other files arent.
1848
1849 =head2 [shop registration]
1850
1851 Each key represents a message id from attempts to checkout.  Except
1852 the all key which covers all cases.
1853
1854 If the C<all> key or the message id key is non-zero then the checkout
1855 page will redirect to registration instead of login if the cart or
1856 configuration requires that the user be logged in.
1857
1858 =head2 [template I<template-name>]
1859
1860 Settings for articles based on a particular template.
1861
1862 =over
1863
1864 =item no_cache_dynamic
1865
1866 Controls whether a cache-control: no-cache header will be produced.
1867 Can be overridden with the A and B article flags.  If not set the
1868 value of [article].no_cache_dynamic is used.
1869
1870 =back
1871
1872 =head2 [article]
1873
1874 Global settings for articles.
1875
1876 =over
1877
1878 =item no_cache_dynamic
1879
1880 Controls whether a cache-control: no-cache header will be produced.
1881 Can be overridden with the A and B article flags or [template
1882 I<template-name>].no_cache_dynamic.  If not set the value of
1883 [basic].no_cache_dynamic is used.
1884
1885 =back
1886
1887 =head2 [recaptcha]
1888
1889 For the <:recaptcha:> tag currently only used for fmail.pl.
1890
1891 =over
1892
1893 =item api_public_key
1894
1895 =item api_private_key
1896
1897 The public and private key you receive when you register with reCAPTCHA.
1898
1899 =item error_I<error_code>
1900
1901 Replace the error message for the given I<error_code> where
1902 I<error_code> is the reCAPTCHA error code
1903 (eg. "incorrect-captcha-sol") with dash replaced by underscore.
1904
1905 eg.
1906
1907   error_incorrect_captch_sol=VERY BAD INPUT
1908
1909 =back
1910
1911 =head1 AUTHOR
1912
1913 Tony Cook <tony@develop-help.com>
1914
1915 =cut