The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
config {
    engine CGI;
    template_engine TT;
    Init Std { no_gen 0; }
    CGI Gantry { with_server 1; }
    Control Gantry { dbix 0; }
    SQL Postgres {  }
    Model GantryCDBI {  }
    SiteLook GantryDefault { gantry_wrapper `/home/pcrow/srcgantry/root/sample_wrapper.tt`; }
}
app Contact {
    config {
        dbconn `dbi:Pg:dbname=contact` => no_accessor;
        dbuser apache => no_accessor;
        template_wrapper `genwrapper.tt` => no_accessor;
        root `/home/pcrow/srcgantry/docs/book/studies/Contact/html:/home/pcrow/srcgantry/root` => no_accessor;
    }
    authors `Phil Crow` => `philcrow2000@yahoo.com`;
    sequence contact_seq {}
    table contact {
        field id {
            is int4, primary_key, auto;
        }
        sequence contact_seq;
        foreign_display `%name`;
        field name {
            is varchar;
            label Name;
            html_form_type text;
        }
        field phone {
            is varchar;
            label Phone;
            html_form_type text;
            html_form_optional 1;
        }
        field street {
            is varchar;
            label Street;
            html_form_type text;
            html_form_optional 1;
        }
        field city {
            is varchar;
            label City;
            html_form_type text;
            html_form_optional 1;
        }
        field state {
            is varchar;
            label State;
            html_form_type text;
            html_form_optional 1;
        }
        field zip {
            is varchar;
            label `Zip Code`;
            html_form_type text;
            html_form_optional 1;
        }
        field email {
            is varchar;
            label Email;
            html_form_optional 1;
            html_form_type text;
        }
    }
    controller Contact is AutoCRUD {
        rel_location contacts;
        controls_table contact;
        text_description contact;
        method do_main is main_listing {
            cols name, phone, email;
            header_options Add;
            row_options Edit, Delete;
            title Contacts;
        }
        method form is AutoCRUD_form {
            all_fields_but id;
        }
    }
    sequence bday_seq {}
    table bday {
        field id {
            is int4, primary_key, auto;
        }
        sequence bday_seq;
        foreign_display `%name`;
        field contact_id {
            is int4;
            refers_to contact;
            label Contact;
            html_form_type select;
        }
        field name {
            is varchar;
            label Name;
            html_form_type text;
        }
        field bdate {
            is date;
            label `Birth Date`;
            html_form_type text;
            date_select_text `Calendar Popup`;
        }
    }
    controller BDay is AutoCRUD {
        rel_location bday;
        controls_table bday;
        text_description `birth date`;
        method do_main is main_listing {
            cols contact_id, name, bdate;
            header_options Add;
            row_options Edit, Delete;
            title `Birth Days`;
        }
        method form is AutoCRUD_form {
            extra_keys javascript => `$self->calendar_month_js( 'bdate_form' )`;
            form_name bdate_form;
            all_fields_but id;
        }
        uses `Gantry::Plugins::Calendar`;
        page_link_label `Birth Days`;
    }
}