catalog.cfg (interchange-5.8.2) | : | catalog.cfg (interchange-5.10.0) | ||
---|---|---|---|---|
#==========================================================================# | #==========================================================================# | |||
# catalog.cfg | # catalog.cfg | |||
#==========================================================================# | #==========================================================================# | |||
## We want to hide the .gdbm, .autonumber, .numeric, .sql, .db files | ||||
## Needs to go before VariableDatabase | ||||
DatabaseDefault HIDE_AUTO_FILES 1 | ||||
# Read in some initial default variables from a directory. These are | # Read in some initial default variables from a directory. These are | |||
# larger ones -- they could conceivably be maintained in the | # larger ones -- they could conceivably be maintained in the | |||
# VariableDatabase but might be easier to maintain in a file, especially | # VariableDatabase but might be easier to maintain in a file, especially | |||
# for development. | # for development. | |||
# | # | |||
# Notable settings: THEME_CSS, COMMON_MENU, COPYRIGHT | # Notable settings: COMMON_MENU, COPYRIGHT | |||
# | # | |||
DirConfig Variable variables | DirConfig Variable variables | |||
# Read in large variables or dynamic variables from a series | # Read in large variables or dynamic variables from a series | |||
# of files in a directory | # of files in a directory | |||
VariableDatabase variable | VariableDatabase variable | |||
# Read in site-specific variables from a database (if any). | # Read in site-specific variables from a database (if any). | |||
# Used to create a information for a temporarily transferred | # Used to create a information for a temporarily transferred | |||
# catalog, i.e. for development. | # catalog, i.e. for development. | |||
# | # | |||
# Ignored if file doesn't exist. | # Ignored if file doesn't exist. | |||
VariableDatabase site | VariableDatabase site | |||
# Warn if any important modules or usertags are missing. | # Warn if any important modules or usertags are missing. | |||
Require module Digest::MD5 "Need %s %s for better cache keys." | Require module Digest::MD5 "Need %s %s for better cache keys." | |||
Require module Safe::Hole "Need %s %s for embedded perl object access." | Require module Safe::Hole "Need %s %s for embedded perl object access." | |||
Require UserTag email var loc table_editor button component | ||||
# Encoding | # Encoding | |||
Variable MV_UTF8 1 | Variable MV_UTF8 1 | |||
Variable MV_HTTP_CHARSET utf-8 | Variable MV_HTTP_CHARSET utf-8 | |||
#==========================================================================# | #==========================================================================# | |||
# Can send various files outside the catalog directory, for disk partition | # Can send various files outside the catalog directory, for disk partition | |||
# reasons, for example. | # reasons, for example. | |||
ParseVariables Yes | ParseVariables Yes | |||
skipping to change at line 66 | skipping to change at line 68 | |||
ifdef CACHEDIR | ifdef CACHEDIR | |||
SessionDatabase __CACHEDIR__/session | SessionDatabase __CACHEDIR__/session | |||
ScratchDir __CACHEDIR__/tmp | ScratchDir __CACHEDIR__/tmp | |||
endif | endif | |||
ifndef CACHEDIR | ifndef CACHEDIR | |||
SessionDatabase session | SessionDatabase session | |||
ScratchDir tmp | ScratchDir tmp | |||
endif | endif | |||
ifdef RUNDIR | ||||
RunDir __RUNDIR__ | ||||
endif | ||||
#==========================================================================# | #==========================================================================# | |||
# Database setup | # Database setup | |||
ParseVariables Yes | ParseVariables Yes | |||
ifndef SQLDSN | ifndef INDEV | |||
Variable SQLDSN __MVC_SQLDSN__ | DatabaseDefault LOG_ERROR_SESSION 0 | |||
endif | endif | |||
## We want to hide the .gdbm, .autonumber, .numeric, .sql, .db files | ## Quote all identifiers to avoid name clash issues and SQL injection attacks | |||
DatabaseDefault HIDE_AUTO_FILES 1 | DatabaseDefault QUOTE_IDENTIFIERS 1 | |||
ifdef MYSQL | ifdef MYSQL | |||
DatabaseDefault NO_ASCII_INDEX 1 | DatabaseDefault NO_ASCII_INDEX 1 | |||
include dbconf/mysql/mysql.cfg | include dbconf/mysql/mysql.cfg | |||
endif | endif | |||
ifdef PGSQL | ifdef PGSQL | |||
DatabaseDefault NO_ASCII_INDEX 1 | DatabaseDefault NO_ASCII_INDEX 1 | |||
include dbconf/pgsql/pgsql.cfg | include dbconf/pgsql/pgsql.cfg | |||
endif | endif | |||
skipping to change at line 137 | skipping to change at line 143 | |||
#==========================================================================# | #==========================================================================# | |||
# Here we set up the catalog theme. | # Here we set up the catalog theme. | |||
<ParseVariables Yes> | <ParseVariables Yes> | |||
## | ## | |||
## Here we pick up the region variables like LEFTONLY_TOP and LEFTONLY_BOTTOM. | ## Here we pick up the region variables like LEFTONLY_TOP and LEFTONLY_BOTTOM. | |||
## | ## | |||
DirConfig Variable templates/regions | ## Commenting; new variables TOP and BOTTOM will be defined in variable director | |||
y. | ||||
## No longer going to need multiple leftright_top, leftonly_top, etc; will be | ||||
## defined in "display_class" in each page. | ||||
#DirConfig Variable templates/regions | ||||
# TRAFFIC is defined system-wide in interchange.cfg. When in low-traffic | # TRAFFIC is defined system-wide in interchange.cfg. When in low-traffic | |||
# mode, variables are dynamic -- i.e. when you change the region file | # mode, variables are dynamic -- i.e. when you change the region file | |||
# the page changes. Otherwise a reconfig must be done to change the | # the page changes. Otherwise a reconfig must be done to change the | |||
# variable. | # variable. | |||
# | # | |||
# Careful, this can change the way *other* variables are interpreted. | # Careful, this can change the way *other* variables are interpreted. | |||
ifdef @TRAFFIC =~ /low/i | ifdef @TRAFFIC =~ /low/i | |||
Pragma dynamic_variables | Pragma dynamic_variables | |||
Pragma dynamic_variables_file_only | Pragma dynamic_variables_file_only | |||
skipping to change at line 162 | skipping to change at line 172 | |||
Autoload admin_links | Autoload admin_links | |||
endif | endif | |||
#==========================================================================# | #==========================================================================# | |||
# Internationalization | # Internationalization | |||
LocaleDatabase locale | LocaleDatabase locale | |||
# Default locale | # Default locale | |||
ifdef DEFAULT_LOCALE | ifdef DEFAULT_LOCALE | |||
DefaultLocale __DEFAULT_LOCALE__ | DefaultLocale __DEFAULT_LOCALE__ | |||
endif | endif | |||
ifdef DEFAULT_LOCALE | ifdef DEFAULT_LOCALE | |||
# Database definitions for localized databases | # Database definitions for localized databases | |||
include dbconf/locales/{__LOCALES__}.cfg | include dbconf/locales/{__LOCALES__}.cfg | |||
endif | endif | |||
Locale en_US <<EOL | ||||
{ | ||||
"Username already exists (indirect).", | ||||
"Sorry, that email is already associated with an account.", | ||||
} | ||||
EOL | ||||
#==========================================================================# | #==========================================================================# | |||
# Various catalog settings. | # Various catalog settings. | |||
ScratchDefault mv_add_dot_html 1 | ScratchDefault mv_add_dot_html 0 | |||
ScratchDefault mv_no_session_id 1 | ScratchDefault mv_no_session_id 1 | |||
ScratchDefault mv_no_count 1 | ScratchDefault mv_no_count 1 | |||
ifdef DEFAULT_COUNTRY | ifdef DEFAULT_COUNTRY | |||
ValuesDefault country __DEFAULT_COUNTRY__ | ValuesDefault country __DEFAULT_COUNTRY__ | |||
ValuesDefault b_country __DEFAULT_COUNTRY__ | ValuesDefault b_country __DEFAULT_COUNTRY__ | |||
endif | endif | |||
DirectoryIndex index.html | DirectoryIndex index.html | |||
SpecialPage catalog index | SpecialPage catalog index | |||
skipping to change at line 241 | skipping to change at line 258 | |||
## insert. This can clobber an existing key. | ## insert. This can clobber an existing key. | |||
# Pragma dml=upsert | # Pragma dml=upsert | |||
## END DATA INSERTION PRAGMAS | ## END DATA INSERTION PRAGMAS | |||
#==========================================================================# | #==========================================================================# | |||
# User session related settings. | # User session related settings. | |||
# Whether to encrypt passwords in UserDB | # Whether to encrypt passwords in UserDB | |||
# We usually don't for users, so we can mail them their password | UserDB default crypt 1 | |||
# We DO in admin, that is set in catalog_after.cfg | UserDB default bcrypt 1 | |||
UserDB default crypt 0 | ||||
# These 2 lines are needed for query/pw_reset | ||||
UserDB default promote 1 | ||||
UserDB default from_plain 1 | ||||
# The pepper should be unique for your site, but note that if you change this, | ||||
# it will make previously-crypted passwords inaccessible -- | ||||
# so set this before you start adding users, or don't set at all. | ||||
UserDB default bcrypt_pepper __BCRYPT_PEPPER__ | ||||
# Set to 1 to make the username and password case-insensitive | # Set to 1 to make the username and password case-insensitive | |||
UserDB default ignore_case 0 | UserDB default ignore_case 1 | |||
# Change a field to something that doesn't conflict in MySQL | # Change a field to something that doesn't conflict in MySQL | |||
UserDB default time_field mod_time | UserDB default time_field mod_time | |||
# Don't want people setting their credit limit or dealer status directly | # Don't want people setting their credit limit or dealer status directly | |||
UserDB default scratch "dealer price_level credit_limit" | UserDB default scratch "dealer price_level credit_limit usernick" | |||
UserDB default expire_field expiration | ||||
# Update the database with the date when creating a user | # Update the database with the date when creating a user | |||
UserDB default created_date_iso created | UserDB default created_date_iso created | |||
# Update the database with the date when updating a user via set_values | # Update the database with the date when updating a user via set_values | |||
UserDB default updated_date_iso updated | UserDB default updated_date_iso updated | |||
# Set some other things you want to retain but which don't deserve their | # Set some other things you want to retain but which don't deserve their | |||
# own field -- stored in serial field preferences | # own field -- stored in serial field preferences | |||
UserDB default extra_fields <<EOU | UserDB default extra_fields <<EOU | |||
" | " | |||
mv_same_billing | mv_same_billing | |||
mv_credit_card_exp_type | mv_credit_card_exp_type | |||
mv_credit_card_exp_month | mv_credit_card_exp_month | |||
mv_credit_card_exp_year | mv_credit_card_exp_year | |||
fax_order | fax_order | |||
phone_cell | phone_cell | |||
account_id | account_id | |||
po_number | po_number | |||
" | " | |||
EOU | EOU | |||
# Log user login/logout etc in separate logfile | # Log user login/logout etc in separate logfile | |||
UserDB default logfile logs/userdb.log | UserDB default logfile logs/userdb.log | |||
# This makes the login username the user's email address | # This makes the login username the user's email address | |||
# Uncomment to use | # Uncomment to use | |||
# UserDB default indirect_login email | UserDB default indirect_login usernick | |||
# UserDB default assign_username 1 | UserDB default assign_username 1 | |||
# for indirect login to work with admin | ||||
UserDB autocreate crypt 0 | ||||
UserDB autocreate time_field mod_time | ||||
UserDB autocreate scratch "dealer price_level credit_limit" | ||||
# This makes the password be inserted in an insert-only table. | # This makes the password be inserted in an insert-only table. | |||
# | # | |||
# UserDB default enclair_db enclair | # UserDB default enclair_db enclair | |||
# | # | |||
# You can set the following, which have the defaults shown in the | # You can set the following, which have the defaults shown in the | |||
# setting. You can also insert %M, which is the MD5 of the password, or | # setting. You can also insert %M, which is the MD5 of the password, or | |||
# %D which is a datetime localtime value in the form YYYYmmddHHMMSS. | # %D which is a datetime localtime value in the form YYYYmmddHHMMSS. | |||
#UserDB default enclair_key_field username | #UserDB default enclair_key_field username | |||
#UserDB default enclair_field password | #UserDB default enclair_field password | |||
#UserDB default enclair_query_template "INSERT INTO %t (%U,%P) values (%u,%p) " | #UserDB default enclair_query_template "INSERT INTO %t (%U,%P) values (%u,%p) " | |||
# minimal login stuff for affiliate | # minimal login stuff for affiliate | |||
UserDB affiliate user_field affiliate | UserDB affiliate user_field affiliate | |||
UserDB affiliate database affiliate | UserDB affiliate database affiliate | |||
UserDB affiliate time_field none | UserDB affiliate time_field none | |||
UserDB affiliate crypt 0 | UserDB affiliate crypt 0 | |||
# Set this to Yes if you want auto-login capability for users. | # Set this to Yes if you want auto-login capability for users. | |||
# You must be careful about malicious JavaScripts in your embedded code. | # You must be careful about malicious JavaScripts in your embedded code. | |||
CookieLogin Yes | ## this is not secure at all, since it saves user's password. | |||
## can use alternate cookie to just save username. | ||||
CookieLogin No | ||||
# Limit the time your customers can retain a session | ||||
SessionExpire 4 hours | ||||
# Limit the time your customers can CookieLogin | # Limit the time your customers can CookieLogin | |||
SaveExpire 30 days | SaveExpire 30 days | |||
#==========================================================================# | #==========================================================================# | |||
# Cart, order, and route settings. | # Cart, order, and route settings. | |||
ParseVariables Yes | ParseVariables Yes | |||
MailOrderTo __ORDERS_TO__ | MailOrderTo __ORDERS_TO__ | |||
AlwaysSecure <<EOD | AlwaysSecure <<EOD | |||
change_password | ||||
login | login | |||
member/account | member/account | |||
member/change_email | ||||
member/change_password | ||||
new_account | ||||
ord/billing | ord/billing | |||
ord/checkout | ord/checkout | |||
ord/finalize | ord/finalize | |||
ord/multi | ||||
ord/shipping | ord/shipping | |||
query/order_detail | query/order_detail | |||
EOD | EOD | |||
## Set this if you have a different secure server | ## Set this if you have a different secure server | |||
#AlwaysSecure order ord/basket process | #AlwaysSecure order ord/basket process | |||
ifndef COMMON_ORDER_PROFILE | ifndef COMMON_ORDER_PROFILE | |||
Variable COMMON_ORDER_PROFILE <<EOV | Variable COMMON_ORDER_PROFILE <<EOV | |||
[calc] | ||||
if ($CGI->{state_cs_in} && !$CGI->{state}){ | ||||
$CGI->{state} = $CGI->{state_cs_in}; | ||||
} | ||||
return; | ||||
[/calc] | ||||
mv_same_billing=always_pass | mv_same_billing=always_pass | |||
fname=required | fname=required | |||
lname=required | lname=required | |||
address1=required | address1=required | |||
address2=always_pass | address2=always_pass | |||
city=required | city=required | |||
country=required | country=required | |||
state=multistate | state=multistate | |||
zip=multizip | zip=multizip | |||
&or phone_day=phone, phone_night=phone Must have day or evening phone num | phone_day=phone | |||
ber | [if !session logged_in]email=email_only[/if] | |||
email=email_only | ||||
EOV | EOV | |||
endif | endif | |||
## Payment-related stuff | ## Payment-related stuff | |||
EncryptKey __PGP_KEY__ | EncryptKey __PGP_KEY__ | |||
## These routes are not order routes, but payment routes | ## These routes are not order routes, but payment routes | |||
Route authorizenet id "__MV_PAYMENT_ID__" | Route authorizenet id "__MV_PAYMENT_ID__" | |||
Route authorizenet secret "__MV_PAYMENT_SECRET__" | Route authorizenet secret "__MV_PAYMENT_SECRET__" | |||
skipping to change at line 485 | skipping to change at line 528 | |||
#Route default dynamic_routes 1 | #Route default dynamic_routes 1 | |||
## Uncomment this if you want ITL allowed in routes | ## Uncomment this if you want ITL allowed in routes | |||
#Route default expandable 1 | #Route default expandable 1 | |||
## Sest | ## Sest | |||
SalesTax __TAXFIELD__ | SalesTax __TAXFIELD__ | |||
TaxShipping __TAXSHIPPING__ | TaxShipping __TAXSHIPPING__ | |||
OrderCounter etc/order.number | OrderCounter etc/order.number | |||
OrderLineLimit 200 | OrderLineLimit 200 | |||
OrderProfile etc/profiles.order etc/profiles.login etc/profiles.misc | Profiles include/profiles/*.* | |||
## Sets the default as to whether items are aggregated or ordered | ## Sets the default as to whether items are aggregated or ordered | |||
## on separate lines. Can be overridden with mv_separate_items=0 in | ## on separate lines. Can be overridden with mv_separate_items=0 in | |||
## URL or form. | ## URL or form. | |||
SeparateItems Yes | SeparateItems Yes | |||
#==========================================================================# | #==========================================================================# | |||
ifdef UI_TRAFFIC_STATS | ifdef UI_TRAFFIC_STATS | |||
TrackFile __UI_TRAFFIC_STATS__ | TrackFile __UI_TRAFFIC_STATS__ | |||
skipping to change at line 587 | skipping to change at line 630 | |||
UserTag b-link HasEndTag | UserTag b-link HasEndTag | |||
UserTag b-link addAttr | UserTag b-link addAttr | |||
UserTag b-link Routine <<EOR | UserTag b-link Routine <<EOR | |||
sub { | sub { | |||
my ($page, $form, $opt, $anchor) = @_; | my ($page, $form, $opt, $anchor) = @_; | |||
# use vars qw/$Tag $Scratch/; | # use vars qw/$Tag $Scratch/; | |||
if($Scratch->{no_javascript}) { | if($Scratch->{no_javascript}) { | |||
$opt->{extra} ||= 'style="font-size: smaller"'; | $opt->{extra} ||= 'style="font-size: smaller"'; | |||
return $Tag->page($opt) . $anchor . '</a>'; | return $Tag->page($opt) . $anchor . '</a>'; | |||
} | } | |||
$opt->{type} ||= 2; | my $class = $opt->{class} || 'btn'; | |||
my $class = "button$opt->{type}"; | ||||
my $url = $Tag->area($opt); | my $url = $Tag->area($opt); | |||
my $string = $Tag->filter('encode_entities', $anchor); | my $string = $Tag->filter('encode_entities', $anchor); | |||
my @properties; | my @properties; | |||
push @properties, "type=button"; | push @properties, "type=button"; | |||
push @properties, qq{value="$string"}; | push @properties, qq{value="$string"}; | |||
push @properties, qq{class="$class"}; | push @properties, qq{class="$class"}; | |||
for(qw/style id name/) { | for(qw/style id name/) { | |||
next unless $opt->{$_}; | next unless $opt->{$_}; | |||
push @properties, qq{$_="$opt->{$_}"}; | push @properties, qq{$_="$opt->{$_}"}; | |||
} | } | |||
skipping to change at line 615 | skipping to change at line 657 | |||
else { | else { | |||
$opt->{title} = $string; | $opt->{title} = $string; | |||
} | } | |||
push @properties, qq{title="$opt->{title}"}; | push @properties, qq{title="$opt->{title}"}; | |||
push @properties, $opt->{extra} if $opt->{extra}; | push @properties, $opt->{extra} if $opt->{extra}; | |||
return qq{<input } . join(" ", @properties) . '>'; | return qq{<input } . join(" ", @properties) . '>'; | |||
} | } | |||
EOR | EOR | |||
## Tags to help us determine whether the user has a DOM-compliant browser | ||||
## for flyout/flydown/tree things | ||||
UserTag dhtml HasEndTag | ||||
UserTag dhtml Interpolate | ||||
UserTag dhtml Routine <<EOR | ||||
sub { | ||||
$Variable->{MV_DHTML_BROWSER} ||= 'MSIE.*[5-9]\..*Windows|Mozilla.*Gecko| | ||||
Opera.*[7-9]\.'; | ||||
return '' unless $Session->{browser} =~ m{$Variable->{MV_DHTML_BROWSER}}; | ||||
return shift(@_); | ||||
} | ||||
EOR | ||||
UserTag no-dhtml HasEndTag | ||||
UserTag no-dhtml Interpolate | ||||
UserTag no-dhtml Routine <<EOR | ||||
sub { | ||||
$Variable->{MV_DHTML_BROWSER} ||= 'MSIE.*[5-9]\..*Windows|Mozilla.*Gecko| | ||||
Opera.*[7-9]\.'; | ||||
return '' if $Session->{browser} =~ m{$Variable->{MV_DHTML_BROWSER}}; | ||||
return shift(@_); | ||||
} | ||||
EOR | ||||
### Shipping setup. See Interchange docs -- you will want to change | ### Shipping setup. See Interchange docs -- you will want to change | |||
### the origin postal code and default destination postal codes, for sure. | ### the origin postal code and default destination postal codes, for sure. | |||
Shipping Postal default_geo 45056 | Shipping Postal default_geo 45056 | |||
Shipping QueryUPS default_geo 45056 | Shipping QueryUPS default_geo 45056 | |||
Shipping default dir products/ship | Shipping default dir products/ship | |||
Database 2ndDayAir ship/2ndDayAir.csv CSV | Database 2ndDayAir ship/2ndDayAir.csv CSV | |||
Database 2ndDayAirAM ship/2ndDayAirAM.csv CSV | Database 2ndDayAirAM ship/2ndDayAirAM.csv CSV | |||
Database 3DaySelect ship/3DaySelect.csv CSV | Database 3DaySelect ship/3DaySelect.csv CSV | |||
Database Expedited ship/Expedited.csv CSV | Database Expedited ship/Expedited.csv CSV | |||
skipping to change at line 678 | skipping to change at line 698 | |||
## | ## | |||
## [hiddens] | ## [hiddens] | |||
## mv_action=refresh | ## mv_action=refresh | |||
## mv_nextpage=foo | ## mv_nextpage=foo | |||
## [/hiddens] | ## [/hiddens] | |||
## | ## | |||
UserTag hiddens Interpolate 1 | UserTag hiddens Interpolate 1 | |||
UserTag hiddens HasEndTag | UserTag hiddens HasEndTag | |||
UserTag hiddens Routine <<EOR | UserTag hiddens Routine <<EOR | |||
sub { | sub { | |||
my $block = shift; | my $block = shift; | |||
my @lines = grep /\S/, split /\n/, $block; | my @lines = grep /\S/, split /\n/, $block; | |||
my @out; | my @out; | |||
for(@lines) { | for(@lines) { | |||
s/\s+$//; | s/\s+$//; | |||
s/^\s+//; | s/^\s+//; | |||
my ($k,$v) = split /=/, $_, 2; | my ($k,$v) = split /=/, $_, 2; | |||
$v = $Tag->filter('encode_entities', $v); | $v = $Tag->filter('encode_entities', $v); | |||
push @out, qq{<input type=hidden name="$k" value="$v">}; | push @out, qq{<input type=hidden name="$k" value="$v">}; | |||
} | } | |||
return join "\n", @out; | return join "\n", @out; | |||
} | } | |||
EOR | EOR | |||
## When uncommented, delivers a redirect if we get a request for an image | ## When uncommented, delivers a redirect if we get a request for an image | |||
## DeliverImage Yes | ## DeliverImage Yes | |||
## Map a subroutine to happen if the page is not there | ## Map a subroutine to happen if the page is not there | |||
SpecialSub missing ncheck_category | SpecialSub missing ncheck_category | |||
## Subroutine that looks for a prod_group and category in | UserTag edisplay Alias error auto=1 class="alert alert-danger list-unstyled" | |||
## a missing page and delivers them | UserTag wdisplay Alias warnings auto=1 list_class="alert alert-success list-unst | |||
Sub ncheck_category <<EOS | yled" | |||
UserTag ecgi Alias cgi keep=1 filter=encode_entities name= | ||||
CodeDef string2uri Filter | ||||
CodeDef string2uri Description Sanitize a string for use in a URL | ||||
CodeDef string2uri Routine <<EOR | ||||
sub { | sub { | |||
my ($name) = @_; | my $val = shift; | |||
return unless $name =~ m{^[A-Z]}; | $val =~ s|/|::|g; | |||
$name =~ s,_, ,g; | $val =~ s|-|_|g; | |||
my ($prod_group, $category) = split m{/}, $name; | $val =~ s|\s+|-|g; | |||
return $val; | ||||
my ($search, $o); | } | |||
$search->{co} = 1; | EOR | |||
$search->{fi} = 'products'; | ||||
$search->{st} = 'db'; | ||||
$search->{sf} = join "\0", 'prod_group', 'category'; | ||||
$search->{op} = join "\0", 'eq', 'eq'; | ||||
$search->{se} = join "\0", $prod_group, $category; | ||||
$search->{sp} = 'results'; | ||||
$search->{mv_todo} = 'search'; | ||||
$Tag->search({ search => $search }); | ||||
if (($o = $Search->{''}) && @{$o->{mv_results}}) { | ||||
return (1, $Config->{Special}->{results}); | ||||
} | ||||
return; | CodeDef uri2string Filter | |||
CodeDef uri2string Description Revert sanitized URL back to a string | ||||
CodeDef uri2string Routine <<EOR | ||||
sub { | ||||
my $val = shift; | ||||
$val =~ s|-| |g; | ||||
$val =~ s|_|-|g; | ||||
$val =~ s|::|/|g; | ||||
return $val; | ||||
} | } | |||
EOS | EOR | |||
SearchProfile include/profiles/searchprofiles | ||||
Jobs log __LOGDIR__/jobs.log | ||||
Jobs base_directory etc/jobs | ||||
End of changes. 31 change blocks. | ||||
78 lines changed or deleted | 98 lines changed or added |