# Sample server.perl Configuration

    $data = {

         # This is a system-wide debugging variable; increasing
         # values (from 1-5) give you increasing verbosity in the
         # error log

         'DEBUG'         => 0,

         # CHANGE THIS (SMTP host we use for sending email)

         'smtp_host'     => '127.0.0.1',

         # CHANGE THIS (email address for administrator; all emails
         # from the system will come from this address)

         'admin_email'   => 'admin@mycompany.com',

         # CHANGE THIS (if necessary -- if you're not using MySQL,
         # you can use something like 'Apache::Session::File' for the
         # class entry and then create entries for 'Directory' and
         # 'LockDirectory')

         'session_info' => {
           'class' => 'Apache::Session::MySQL',
         },

         # CHANGE THIS (enter your db parameters -- see
         # 'OpenInteract::DBI' for more information about them). Briefly:
         #   db_owner: optional: who owns the db?
         #   username: who do we login as?
         #   password: what password do we login with?
         #   dsn: last part of the DBI DSN
         #   db_name: name of database
         #   driver_name: name of driver -- second part of the DBI DSN

         'db_info' => {
           'db_owner'    => '',
           'username'    => '',
           'password'    => '',
           'dsn'         => '',
           'db_name'     => '',
           'driver_name' => '',
         },

         # These settings are good for when the system first gets
         # started, but you might want to change them (particularly
         # the 'theme' value) as your site grows

         'default_objects' => {
           'theme'            => 1,
           'group'            => 2,
           'site_admin_group' => 3,
         },

         # Define the box handler and the handler to take care of the
         # default system boxes. Also define some default information
         # in case a box or the theme does not do so (see
         # OpenInteract::Handler::SystemBoxes for more), and override
         # some of the default system box settings with 'weight' and
         # 'title' (see OpenInteract::Handler::SystemBoxes for more).

         'box' => {
           handler            => '%%WEBSITE_NAME%%::Handler::Box',
           default_template   => 'base_box::main_box_shell',
           default_separator  => undef,
           default_method     => undef,
           system_box_handler => '%%WEBSITE_NAME%%::Handler::SystemBoxes',
         },

         # Login information. Set whether you want to store encrypted
         # passwords in the database (set by default and recommended) and
         # define login fields. These are the fields used to read in the
         # username and password from the user. In the future you'll be
         # able to define the object(s) used for logging in and possibly
         # more.
         #
         # The fields defined here are used in the 'login_box'
         # template shipped with OpenInteract and found in the
         # 'base_box' package.

         'login' => {
           crypt_password   => 1,
           login_field      => 'login_login_name',
           password_field   => 'login_password',
         },

         # Various simple miscellaneous display items can go here

         'display_info' => {
            show_redirect_message => 0,
         },

         # Page directives come before the rest of the URL and
         # control some fundamental aspect of display. For instance,
         # 'NoTmpl' before a URL will not put the content in a
         # template, and 'Popup' before a URL will put the content
         # into the template used for popup windows (usually a really
         # simple one that you set in your theme). For all directives
         # except the 'No' ones the key  should be found as the value
         # in 'template_names' below which matches up to a key in the
         # theme. (Slightly confusing.)

         'page_directives' => {
           'Popup'      => 'simple_template',
           'NoTemplate' => 1,
           'NoTmpl'     => 1,
         },

         # Define the keys under which we store our important
         # template names in a theme. This way we can use simple
         # keywords to refer to the page definition templates. (NOTE:
         # This is not used quite yet but should be implemented
         # shortly.)

         'template_names' => {
           'main'   => 'main_template',
           'simple' => 'simple_template',
         },

         # Setup aliases so that you can retrieve a class name from $R;
         # for instance: $R->cookies will return
         # 'OpenInteract::Cookies'. Generally the only one you might
         # possibly want to change is the first one, to refer to a
         # different session serialization scheme.

         'system_alias' => {
           'OpenInteract::Session::MySQL'     => [ qw/ session / ],
           'OpenInteract::Template::Toolkit'  => [ qw/ template / ],
           'OpenInteract::Package'            => [ qw/ package / ],
           'OpenInteract::Error'              => [ qw/ error / ],
           'OpenInteract::Cookies'            => [ qw/ cookies / ],
           'OpenInteract::Auth'               => [ qw/ auth auth_user auth_group / ],
           '%%WEBSITE_NAME%%::Security'       => [ qw/ security_object object_security security / ],
           'SPOPS::Secure'                    => [ qw/ secure / ],
           'OpenInteract::Error::Main'        => [ qw/ error_handler / ],
           'OpenInteract::Handler::Component' => [ qw/ component / ],
         },

         # Directories used by OpenInteract. Only change these if you know
         # what you're doing. Note that 'base' and 'interact' are replaced
         # when the server starts up, so any values you set there will
         # just be overwritten.

         'dir' => {
           'base'     => undef, # replaced in OpenInteract::Startup
           'interact' => undef, # replaced in OpenInteract::Startup
           'error'    => '$BASE/error',
           'html'     => '$BASE/html',
           'log'      => '$BASE/logs',
           'cache'    => '$BASE/cache',
           'config'   => '$BASE/conf',
           'data'     => '$BASE/data',
           'mail'     => '$BASE/mail',
           'template' => '$BASE/templates',
           'help'     => '$HTML/help',
           'overflow' => '$HTML/overflow',
           'download' => '$HTML/downloads',
           'upload'   => '$BASE/uploads',
         },

         # Caching is currently not implemented, but when it is all
         # cache information will go here.

         'cache_info' => {
           'data' => {
             'expire'   => 600,
             'use'      => '0',
             'class'    => 'OpenInteract::Cache::File',
             'max_size' => 2000000,
             'SPOPS'    => 0,
             'use_ipc'  => 0,
           },
           'ipc' => {
             'class'    => 'OpenInteract::Cache::IPC',
             'key'      => 'CMWC',
           },
         },

         # Used by group_community package

         'group_context' => 0,

         # Class used to configure SPOPS object (shouldn't need to change)

         'SPOPS_config_class'    => 'SPOPS::Configure::DBI',

         # Class of error object (shouldn't need to change)

         'error_object_class'    => '%%WEBSITE_NAME%%::ErrorObject',

         # Class of default error handler -- one that can handle
         # every error thrown by OpenInteract (shouldn't need to
         # change)

         'default_error_handler' => 'OpenInteract::Error::System',

         # Extension for template files -- used to lookup files in
         # the OpenInteract::Template module (shouldn't need to
         # change).

         'template_ext'     => 'tmpl',

         # Don't change these three! Whatever you enter will be
         # overwritten at server startup.

         'stash_class'      => '',
         'website_name'     => '',
         'request_class'    => '',

         # Define the main conductor; if you create additional
         # interfaces for your website(s) (e.g., SOAP), then you
         # can add another conductor here.

         'conductor' => {
           'main' => {
               'class'     => 'OpenInteract::UI::Main',
               'method'    => 'handler',
           },
         },

         # Action information -- define how OpenInteract responds to
         # URLs; the only information we hold here is for default
         # information (information that does not need to be
         # specified in the individual package's 'conf/action.perl'
         # file); we also define how OpenInteract should respond to a
         # null action (under the '' key) and how it should respond
         # to an action that is not found (under '_notfound_')
         #

         # Note that we used to use 'default' instead of
         # '_default_action_info_' -- the former is now deprecated,
         # so you should move to the new one!

         'action' => {
           '_default_action_info_' => {
               'template_processor'  => 'OpenInteract::Template::Toolkit',
               'conductor' => 'main',
               'method'    => 'handler',
           },
           '' => {
               'redir'     => 'basicpage',
           },
           '_notfound_' => {
               'redir'     => 'basicpage',
           },
         },

         # Used for testing purposes only

         'ConfigurationRevision' => '$Revision: 1.1.1.1 $',

    };