config { engine CGI; template_engine TT; Init Std {} CGI Gantry { with_server 1; flex_db 1; gen_root 1; } SQL SQLite {} Conf General {} Control Gantry { dbix 1; } Model GantryDBIxClass {} SiteLook GantryDefault {} } app Apps::AddressBook { authors `Phil Crow` => `crow.phil@gmail.com`; config { dbconn `dbi:SQLite:dbname=address` => no_accessor; dbuser apache => no_accessor; template_wrapper `genwrapper.tt` => no_accessor; } table address { foreign_display `%name`; field id { is int4, primary_key, auto; } field name { is varchar; label Name; html_form_type text; } 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; html_form_type text; html_form_optional 1; html_form_constraint `qr{^\d{5}$}`; } field phone { is varchar; label Number; html_form_type text; } field email { is varchar; label `Email Address`; html_form_type text; html_form_optional 1; } } table birth { field id { is int4, primary_key, auto; } field name { is varchar; label Name; html_form_type text; } field family { is int4; label Family; html_form_type select; refers_to address; } field birthday { is date; label Birthday; html_form_type date; date_select_text `Popup Calendar`; } } controller Address is AutoCRUD { controls_table address; rel_location address; text_description `address`; page_link_label Address; method do_main is main_listing { title `Address`; cols name, phone; header_options Add; row_options Edit, Delete; } method form is AutoCRUD_form { form_name address; all_fields_but id; extra_keys legend => `$self->path_info =~ /edit/i ? 'Edit' : 'Add'`; } } controller Birth is AutoCRUD { controls_table birth; rel_location birthday; uses Gantry::Plugins::Calendar; text_description `birthday`; page_link_label Birthdays; method do_main is main_listing { title `Birthday`; cols name, family, birthday; header_options Add; row_options Edit, Delete; } method form is AutoCRUD_form { form_name birthday_form; all_fields_but id; extra_keys javascript => `$self->calendar_month_js( 'birthday_form' )`, legend => `$self->path_info =~ /edit/i ? 'Edit' : 'Add'`; } } }