#!/usr/bin/perl-wT # Copyright (C) 1994 - 2001 eXtropia.com # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. use strict; BEGIN{ use vars qw(@dirs); @dirs = qw(Modules Modules/CPAN .); } use lib '/Extropia/Core/App'; use lib @dirs; # The following is only of interest to mod_perl, PerlEx, # and other Perl acceleration users unshift @INC, @dirs if $ENV{MOD_PERL}; my $APP_NAME = "faq"; my $GLOBAL_DATAFILES_DIRECTORY = "Datafiles"; my $TEMPLATES_CACHE_DIRECTORY = "$GLOBAL_DATAFILES_DIRECTORY/TemplatesCache"; my $APP_DATAFILES_DIRECTORY = "Datafiles/FAQ"; my $DOCUMENT_ROOT_URL = '/', my $IMAGE_ROOT_URL = '/Images/Extropia', my @VIEWS_SEARCH_PATH = qw(Modules/Extropia/View/FAQ Modules/Extropia/View/Default); my @TEMPLATES_SEARCH_PATH = qw(HTMLTemplates/FAQ HTMLTemplates/FAQ/SSI HTMLTemplates/Default); use CGI qw(-debug); #Carp commented out due to Perl 5.60 bug. Uncomment when using Perl 5.61. #use CGI::Carp qw(fatalsToBrowser); use Extropia::Core::App::DBApp; use Extropia::Core::View; use Extropia::Core::SessionManager; my $CGI = new CGI() or die("Unable to construct the CGI object" . ". Please contact the webmaster."); # turn the autoescaping off here $CGI->autoEscape(undef); my $VIEW_LOADER = new Extropia::Core::View (\@VIEWS_SEARCH_PATH, \@TEMPLATES_SEARCH_PATH) or die("Unable to construct the VIEW LOADER object in " . $CGI->script_name() . ". Please contact the webmaster."); foreach ($CGI->param()) { $CGI->param($1,$CGI->param($_)) if (/(.*)\.x/); } ###################################################################### # DATASOURCE SETUP # ###################################################################### my @DATASOURCE_FIELD_NAMES = qw( record_id category question answer username_of_poster date_time_posted ); my %BASIC_INPUT_WIDGET_DEFINITIONS = ( category => [ -DISPLAY_NAME => 'Category', -TYPE => 'popup_menu', -NAME => 'category', -VALUES => [qw( Installation_und_programmtechnische_Fragen Umbaukosten_ermitteln_in_RBK-BiB Objektkosten_ermitteln_in_RBK-BiB Druckausgaben_in_RBK-BiB Online-Hilfe_und_Handbuch Begriffe_und_Normen Sonstige_Fragen_zu_RBK-BiB Fehlermeldungen_in_RBK-BiB Anwenderwünsche_an_RBK-BiB Allgemeine_Fragen_an_die_ZBWB_Freiburg )], -LABELS => { 'Installation_und_programmtechnische_Fragen' => 'Installation_und_programmtechnische_Fragen', 'Umbaukosten_ermitteln_in_RBK-BiB' => 'Umbaukosten_ermitteln_in_RBK-BiB', 'Objektkosten_ermitteln_in_RBK-BiB' => 'Objektkosten_ermitteln_in_RBK-BiB', 'Druckausgaben_in_RBK-BiB' => 'Druckausgaben_in_RBK-BiB', 'Online-Hilfe_und_Handbuch' => 'Online-Hilfe_und_Handbuch', 'Begriffe_und_Normen' => 'Begriffe_und_Normen', 'Sonstige_Fragen_zu_RBK-BiB' => 'Sonstige_Fragen_zu_RBK-BiB', 'Fehlermeldungen_in_RBK-BiB' => 'Fehlermeldungen_in_RBK-BiB', 'Anwenderwünsche_an_RBK-BiB' => 'Anwenderwünsche_an_RBK-BiB', 'Allgemeine_Fragen_an_die_ZBWB_Freiburg' => 'Allgemeine_Fragen_an_die_ZBWB_Freiburg', }, -INPUT_CELL_COLSPAN => 2, ], question => [ -DISPLAY_NAME => 'Question', -TYPE => 'textarea', -NAME => 'question', -ROWS => 2, -COLS => 50, -WRAP => 'VIRTUAL', -INPUT_CELL_COLSPAN => 2, ], answer => [ -DISPLAY_NAME => 'Answer', -TYPE => 'textarea', -NAME => 'answer', -ROWS => 20, -COLS => 50, -WRAP => 'VIRTUAL', -INPUT_CELL_COLSPAN => 2, ] ); my @BASIC_INPUT_WIDGET_DISPLAY_ORDER = qw( category question answer ); my @INPUT_WIDGET_DEFINITIONS = ( -BASIC_INPUT_WIDGET_DEFINITIONS => \%BASIC_INPUT_WIDGET_DEFINITIONS, -BASIC_INPUT_WIDGET_DISPLAY_ORDER => \@BASIC_INPUT_WIDGET_DISPLAY_ORDER ); my @BASIC_DATASOURCE_CONFIG_PARAMS = ( -TYPE => 'File', -CREATE_FILE_IF_NONE_EXISTS => 1, -FILE => "$APP_DATAFILES_DIRECTORY/faq.dat", -FIELD_DELIMITER => '|', -COMMENT_PREFIX => '#', -FIELD_NAMES => \@DATASOURCE_FIELD_NAMES, -KEY_FIELDS => ['record_id'], -FIELD_TYPES => { record_id => 'Autoincrement' } ); my @DATASOURCE_CONFIG_PARAMS = ( -BASIC_DATASOURCE_CONFIG_PARAMS => \@BASIC_DATASOURCE_CONFIG_PARAMS, ); ###################################################################### # VIEW SETUP # ###################################################################### my @VALID_VIEWS = qw( CSSView BasicFAQView DetailsRecordView meta_tags style_sheet_basic navigation_template_top freesupportnav page_header_with_search_top page_header_with_search_bottom navigation_template_bottom SearchView ); my @VIEW_DISPLAY_PARAMS = ( -COLOR_FOR_EVEN_ROWS => 'E5E5E5', -COLOR_FOR_ODD_ROWS => 'FFFFFF', -APPLICATION_LOGO => 'logo.gif', -APPLICATION_LOGO_HEIGHT => '40', -APPLICATION_LOGO_WIDTH => '353', -APPLICATION_LOGO_ALT => 'eXtropia FAQ Manager', -HTTP_HEADER_PARAMS => [-EXPIRES => '-1d'], -DEFAULT_CHARSET => 'ISO-8859-1', -LINK_TARGET => '_self', -SCRIPT_DISPLAY_NAME => 'FAQManager', -SCRIPT_NAME => $CGI->script_name(), -FIELD_NAME_MAPPINGS => { category => "Category", question => "Question", answer => "Answer" }, -DISPLAY_FIELDS => [qw( category question answer )], -SELECTED_DISPLAY_FIELDS => [qw( category question )], -SORT_FIELDS => [qw( category question answer )], -FIELDS_TO_BE_DISPLAYED_AS_HTML_TAG => [qw( question answer )], -FIELDS_TO_BE_DISPLAYED_AS_MULTI_LINE_TEXT => [qw( question answer )], ); ###################################################################### # FILTER SETUP # ###################################################################### my @HTMLIZE_FILTER_CONFIG_PARAMS = ( -TYPE => 'HTMLize', -CONVERT_DOUBLE_LINEBREAK_TO_P => 1, -CONVERT_LINEBREAK_TO_BR => 1, ); my @CHARSET_FILTER_CONFIG_PARAMS = ( -TYPE => 'CharSet' ); my @EMBED_FILTER_CONFIG_PARAMS = ( -TYPE => 'Embed', -ENABLE => $CGI->param('embed') || 0 ); my @VIEW_FILTERS_CONFIG_PARAMS = ( \@HTMLIZE_FILTER_CONFIG_PARAMS, \@CHARSET_FILTER_CONFIG_PARAMS, \@EMBED_FILTER_CONFIG_PARAMS ); ###################################################################### # ACTION/WORKFLOW SETUP # ###################################################################### my @ACTION_HANDLER_LIST = qw( Default::DisplayCSSViewAction Default::DownloadFileAction FAQ::DisplaySearchBasicDataViewAction FAQ::DisplayFAQDetailsRecordViewAction FAQ::DisplayFAQBasicDataViewAction Default::DefaultAction ); my @ACTION_HANDLER_ACTION_PARAMS = ( -ACTION_HANDLER_LIST => \@ACTION_HANDLER_LIST, -BASIC_DATA_VIEW_NAME => 'BasicFAQView', -CGI_OBJECT => $CGI, -CSS_VIEW_URL => $CGI->script_name() . "?display_css_view=on", -CSS_VIEW_NAME => "CSSView", -DATASOURCE_CONFIG_PARAMS => \@DATASOURCE_CONFIG_PARAMS, -DETAILS_VIEW_NAME => 'DetailsRecordView', -DEFAULT_SORT_FIELD1 => 'date_time_posted', -DEFAULT_SORT_FIELD2 => 'question', -DEFAULT_VIEW_NAME => 'BasicFAQView', -ENABLE_SORTING_FLAG => 1, -HIDDEN_ADMIN_FIELDS_VIEW_NAME => 'HiddenAdminFieldsView', -URL_ENCODED_ADMIN_FIELDS_VIEW_NAME => 'URLEncodedAdminFieldsView', -SIMPLE_SEARCH_BOX_VIEW_NAME => 'SimpleSearchBoxView', -SORT_DIRECTION => 'DESC', -VIEW_FILTERS_CONFIG_PARAMS => \@VIEW_FILTERS_CONFIG_PARAMS, -VIEW_DISPLAY_PARAMS => \@VIEW_DISPLAY_PARAMS, -TEMPLATES_CACHE_DIRECTORY => $TEMPLATES_CACHE_DIRECTORY, -VALID_VIEWS => \@VALID_VIEWS, -VIEW_LOADER => $VIEW_LOADER, -RECORDS_PER_PAGE_OPTS => [5, 10, 25, 50, 100], -MAX_RECORDS_PER_PAGE => $CGI->param('records_per_page') || 3, -DOCUMENT_ROOT_URL => $DOCUMENT_ROOT_URL, -IMAGE_ROOT_URL => $IMAGE_ROOT_URL, -SORT_FIELD1 => $CGI->param('sort_field1') || 'category', -SORT_FIELD2 => $CGI->param('sort_field2') || 'fname', -SIMPLE_SEARCH_STRING => $CGI->param('simple_search_string') || "", -FIRST_RECORD_ON_PAGE => $CGI->param('first_record_to_display') || 0, -LAST_RECORD_ON_PAGE => $CGI->param('first_record_to_display') || "0", -KEY_FIELD => 'record_id', -PAGE_TOP_VIEW => 'PageTopView', -PAGE_BOTTOM_VIEW => 'PageBottomView', -INPUT_WIDGET_DEFINITIONS => \@INPUT_WIDGET_DEFINITIONS, ); ###################################################################### # LOAD APPLICATION # ###################################################################### my $APP = new Extropia::Core::App::DBApp( -ROOT_ACTION_HANDLER_DIRECTORY => "ActionHandler", -ACTION_HANDLER_ACTION_PARAMS => \@ACTION_HANDLER_ACTION_PARAMS, -ACTION_HANDLER_LIST => \@ACTION_HANDLER_LIST, -VIEW_DISPLAY_PARAMS => \@VIEW_DISPLAY_PARAMS ) or die("Unable to construct the application object in " . $CGI->script_name() . ". Please contact the webmaster."); print $APP->execute();