rtml 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +396 -0
- data/PostInstall.txt +2 -0
- data/README.rdoc +42 -0
- data/Rakefile +33 -0
- data/app_generators/rtml/USAGE +5 -0
- data/app_generators/rtml/rtml_generator.rb +78 -0
- data/app_generators/rtml/templates/rails_template.rb +36 -0
- data/app_generators/rtml/templates/rtml/MIT-LICENSE +20 -0
- data/app_generators/rtml/templates/rtml/README +109 -0
- data/app_generators/rtml/templates/rtml/Rakefile +38 -0
- data/app_generators/rtml/templates/rtml/app/controllers/beryl_controller.rb +70 -0
- data/app_generators/rtml/templates/rtml/app/controllers/rtml/magcard_demo_controller.rb +9 -0
- data/app_generators/rtml/templates/rtml/app/controllers/rtml/oe/btmlpa_controller.rb +158 -0
- data/app_generators/rtml/templates/rtml/app/controllers/rtml/rtml_app_controller.rb +252 -0
- data/app_generators/rtml/templates/rtml/app/controllers/rtml/tml_app_controller.rb +418 -0
- data/app_generators/rtml/templates/rtml/app/helpers/beryl_helper.rb +72 -0
- data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/auth_result.rb +56 -0
- data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/common.rb +19 -0
- data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/index.rb +82 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_helper.rb +2 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/authorized.rb +10 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/common.rb +20 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/index.rb +33 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_helper.rb +2 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/auth_result.rb +23 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/common.rb +23 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/dynamic.rb +11 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/icc.rb +384 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/index.rb +191 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/receipt.rb +152 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/rtml_app_helper.rb +74 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/rtml_app_tml_helpers/common.rb +9 -0
- data/app_generators/rtml/templates/rtml/app/helpers/rtml/tml_app_helper.rb +43 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/card.rb +83 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/card_avs.rb +14 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/card_cvv.rb +14 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/card_parser.rb +21 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/card_pin.rb +18 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/emv_card_data.rb +25 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/mag_card_data.rb +21 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/reference_code.rb +26 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/state.rb +12 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/terminal.rb +8 -0
- data/app_generators/rtml/templates/rtml/app/models/rtml/transaction.rb +68 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/another_rcpt.rtml.erb +15 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/receipt.rtml.erb +108 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/receipt_single_column.rtml.erb +106 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/index/about.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/index/admin.rtml.erb +4 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/index/construction.rtml.erb +10 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/index/idle.rtml.erb +13 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/index/main_menu.rtml.erb +12 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/index/menu_credit.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/beryl/index/menu_debit.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/beryl_color.rtml.erb +24 -0
- data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/beryl_mono.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/magcard_demo_color.rtml.erb +24 -0
- data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/magcard_demo_mono.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/oe/btmlpa_i5100.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/oe/btmlpa_i8550.rtml.erb +17 -0
- data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/uml.html.erb +11 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/authorized.html.erb +15 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/authorized/main.rtml.erb +5 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index.html.erb +15 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/_error.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/enter_amount.rtml.erb +5 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/main.rtml.erb +4 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/dynamic/response.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/icc.rtml.erb +760 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_enter_amount.rtml.erb +4 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_about.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_duplicate.rtml.erb +9 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_examples.rtml.erb +9 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_logo.rtml.erb +11 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_other.rtml.erb +20 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_refund.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_reversal.rtml.erb +9 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_sale.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_sale_cashback.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/about.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/assert.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/card_nmb.rtml.erb +19 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/compl_txn.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/confirm_rev.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/duplicate_na.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/error_scr.rtml.erb +4 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/main_menu.rtml.bak +31 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/main_menu.rtml.erb +40 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/print_pf.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/rd_sale_disp.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/read_refund.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/read_scb.rtml.erb +10 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/reject_trans.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/remove_card.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/rev_bad.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/scb_check_f.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/sign_check.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/subm_err.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/to_man_entry.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/trans_abrt.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/void_trans.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/receipt/_receipt.rtml.erb +29 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/receipt/error_paper.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_development.html.erb +167 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_header.html.erb +12 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_production.html.erb +8 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/charts.html.erb +14 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/do_tml_redirect.rtml.erb +7 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/get_terminal_info.rtml.erb +26 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/rescue_action_in_public.rtml.erb +9 -0
- data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/rescue_action_locally.rtml.erb +42 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/common.rb +303 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/force.rb +46 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/return.rb +22 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/sale.rb +49 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/_confirmation.rtml.erb +10 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_agreement.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_footer.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_header.rtml.erb +4 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/ask_cashback.rtml.erb +11 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/card_imprint.rtml.erb +7 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/check_cb.rtml.erb +11 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/conf_debit.rtml.erb +5 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/confirm_sale.rtml.erb +4 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/confrm_force.rtml.erb +4 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/cvv_skipped.rtml.erb +10 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/disp_avs.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/do_avs_zip.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_amount.rtml.erb +12 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_card.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_cashbk.rtml.erb +10 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_cvv2.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_expiry.rtml.erb +9 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/fraud_check1.rtml.erb +6 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/fraud_check2.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_aprvl.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_avs_zip.rtml.erb +8 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_bad_aprv.rtml.erb +5 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/frd_chk_fail.rtml.erb +5 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/invalid_exp.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/no_entr_crd.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/remove_card.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/swipe_card.rtml.erb +7 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/trans_abort.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/trans_reject.rtml.erb +1 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/views/void_ref.rtml.erb +10 -0
- data/app_generators/rtml/templates/rtml/components/rtml/features/void.rb +30 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/card_parser_widget.rb +90 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/display_widget.rb +66 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/element_builder_widget.rb +123 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/emv_support_widget.rb +365 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/form_submit_widget.rb +65 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/get_transaction_variables_widget.rb +33 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/get_variable_widget.rb +39 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/receipt_widget.rb +66 -0
- data/app_generators/rtml/templates/rtml/components/rtml/widgets/screen_builder_widget.rb +49 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090825132217_create_rtml_states.rb +15 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090825132401_create_rtml_terminals.rb +16 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090825132530_create_rtml_transactions.rb +24 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090825134118_create_rtml_cards.rb +23 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090825134622_create_rtml_emv_card_data.rb +20 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090825134629_create_rtml_mag_card_data.rb +17 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090825135838_create_rtml_card_parsers.rb +19 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090826103509_create_reference_codes.rb +14 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090915030044_add_batch_to_rtml_transactions.rb +10 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090915031155_add_additional_data_to_rtml_transactions.rb +10 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20090915031156_add_hidden_data_to_rtml_transactions.rb +10 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20091016133313_create_rtml_card_avs.rb +16 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20091016135800_create_rtml_card_cvvs.rb +16 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20091016135810_create_rtml_card_pins.rb +16 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20091016135820_reverse_card_transaction_relationship.rb +11 -0
- data/app_generators/rtml/templates/rtml/db/migrate/20100127115105_convert_rtml_migrations_to_rails_migrations.rb +31 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/USAGE +25 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/rtml_controller_generator.rb +49 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/common_tml_helper.rb +20 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/controller.rb +3 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/css_color.css +37 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/css_mono.css +12 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/functional_test.rb +11 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/helper.rb +2 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/layout_color.rtml.erb +24 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/layout_mono.rtml.erb +3 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/tml_helper.rb +16 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/view.html.erb +15 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/view.rtml.erb +2 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_document/USAGE +8 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_document/rtml_document_generator.rb +45 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/controller.rb +7 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/functional_test.rb +10 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/helper.rb +2 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/view.rtml.erb +11 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_widget/USAGE +8 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_widget/rtml_widget_generator.rb +66 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_widget/templates/basic_widget.rb +57 -0
- data/app_generators/rtml/templates/rtml/generators/rtml_widget/templates/basic_widget_no_help.rb +27 -0
- data/app_generators/rtml/templates/rtml/init.rb +40 -0
- data/app_generators/rtml/templates/rtml/install.rb +18 -0
- data/app_generators/rtml/templates/rtml/lib/environment.rb +61 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/action_controller/request.rb +9 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/action_controller/routing/route_set.rb +34 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/action_view/base.rb +74 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/action_view/partial_template.rb +24 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/active_record.rb +13 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/active_support/dependencies.rb +25 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/array.rb +15 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/attr_boolean.rb +10 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/hash.rb +28 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/nil_class.rb +20 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/rake.rb +19 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/regexp.rb +16 -0
- data/app_generators/rtml/templates/rtml/lib/extensions/string.rb +37 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins.rb +23 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/MIT-LICENSE +20 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/README +36 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/Rakefile +44 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/init.rb +25 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/action_controller/filters/before_render_filter.rb +30 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/before_render.rb +43 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/before_render_instance.rb +45 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/filter_chain_has_many_types_of_filters.rb +87 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/filter_has_before_render.rb +26 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/tasks/before_render_tasks.rake +25 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/test/before_render_test.rb +29 -0
- data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/test/test_helper.rb +24 -0
- data/app_generators/rtml/templates/rtml/lib/rtml.rb +77 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/beryl/constants.rb +12 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/beryl/version.rb +11 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/common/renderable.rb +13 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/include.rb +30 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/layout.rb +59 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/next.rb +188 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/screen.rb +91 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/iterators.rb +63 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/next_screen_methods.rb +70 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/variable_methods.rb +73 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/support/importer.rb +55 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document.rb +318 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document/screen_methods.rb +79 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document/variable_methods.rb +83 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/core/variable.rb +123 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/debug/browser_emulator.rb +59 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/debug/rtml_controller_test_case.rb +7 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/debug/rtml_core_unit_test.rb +11 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/debug/unit_test.rb +3 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/delegation.rb +8 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/doc.rb +12 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/element.rb +75 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/errors/widget_accessor_failure.rb +9 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/events/event_handler.rb +79 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/events/event_processor.rb +106 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/events/processors.rb +10 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/events/processors/defaults_processor.rb +18 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/events/processors/key_processor.rb +21 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/feature.rb +32 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/feature_config.rb +195 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/features.rb +18 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/features/array_of_feature_instances.rb +17 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/features/controller_class_methods.rb +30 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/features/controller_instance_methods.rb +35 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers.rb +21 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/controller_helpers.rb +59 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/controller_helpers/menu_helpers.rb +193 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/action_view_wrapper.rb +23 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/event_helpers.rb +28 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/layout_helpers.rb +47 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/widget_support.rb +181 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/widget_support/class_methods.rb +28 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/yield_helpers.rb +33 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/proxy_helpers/feature_helpers.rb +17 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/render_helper.rb +71 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/terminal_helpers.rb +21 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers.rb +6 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers/tml_validation_assertions.rb +10 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers/variable_assertions.rb +27 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/view_helpers/form_helpers.rb +70 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/helpers/view_helpers/rtml_form_builder.rb +174 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/oe/btmlpa_constants.rb +48 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/proxying/method_missing_methods.rb +14 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/proxying/rtml_interface.rb +33 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/proxying/sandbox.rb +18 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/text_utils.rb +51 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/tml_param_parser.rb +95 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/validation/dom_rule_parser.rb +61 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/validation/dom_tag.rb +52 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/validation/predefined_variable_rule_parser.rb +97 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/validation/tml_validator.rb +16 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/version.rb +11 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/widgets/property.rb +11 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/widgets/property_accessors.rb +59 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/widgets/widget.rb +251 -0
- data/app_generators/rtml/templates/rtml/lib/rtml/widgets/widget_class_methods.rb +213 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/dot.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_can.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_cand.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_en.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_end.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_i.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icd.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icl.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icr.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_ics.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icsw.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icv.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_int.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_int2.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_men.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_mend.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_next.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_no.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_nod.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_ok.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_okd.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic1.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic2.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic3.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic4.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_top.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_txn.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_yes.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_yesd.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/btmlpa.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/can_dn.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/can_up.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/conf.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/iccemv.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/images.lib +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/magcard.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/no_dn.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/no_up.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/ok_dn.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/ok_up.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/top.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/yes_dn.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/yes_up.gif +0 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/beryl_color.css +37 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/beryl_mono.css +17 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/charts.css +0 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/i5100.css +12 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/i8550.css +37 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/receipt.css +4 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/examples/i5100.css +12 -0
- data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/examples/i8550.css +37 -0
- data/app_generators/rtml/templates/rtml/reporting/110409 +227 -0
- data/app_generators/rtml/templates/rtml/reporting/linecount.rb +42 -0
- data/app_generators/rtml/templates/rtml/rules/predefined_tml_variables.rb +63 -0
- data/app_generators/rtml/templates/rtml/rules/tml_document_structure.rb +84 -0
- data/app_generators/rtml/templates/rtml/rules/varns/audio.rb +30 -0
- data/app_generators/rtml/templates/rtml/rules/varns/card.rb +17 -0
- data/app_generators/rtml/templates/rtml/rules/varns/card/emv.rb +31 -0
- data/app_generators/rtml/templates/rtml/rules/varns/card/mag.rb +8 -0
- data/app_generators/rtml/templates/rtml/rules/varns/card/parser.rb +7 -0
- data/app_generators/rtml/templates/rtml/rules/varns/card/pin.rb +6 -0
- data/app_generators/rtml/templates/rtml/rules/varns/cfgm.rb +15 -0
- data/app_generators/rtml/templates/rtml/rules/varns/com.rb +9 -0
- data/app_generators/rtml/templates/rtml/rules/varns/err.rb +14 -0
- data/app_generators/rtml/templates/rtml/rules/varns/gma/event.rb +13 -0
- data/app_generators/rtml/templates/rtml/rules/varns/gprs.rb +8 -0
- data/app_generators/rtml/templates/rtml/rules/varns/imager.rb +8 -0
- data/app_generators/rtml/templates/rtml/rules/varns/ip.rb +15 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oebr.rb +42 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oebr/3rdparty.rb +7 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oebr/backlight.rb +4 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oebr/cache.rb +1 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oebr/connect.rb +5 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oebr/connection.rb +5 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oebr/offline.rb +5 -0
- data/app_generators/rtml/templates/rtml/rules/varns/oegw.rb +12 -0
- data/app_generators/rtml/templates/rtml/rules/varns/payment.rb +21 -0
- data/app_generators/rtml/templates/rtml/rules/varns/ppp.rb +11 -0
- data/app_generators/rtml/templates/rtml/rules/varns/terminal.rb +29 -0
- data/app_generators/rtml/templates/rtml/tasks/rtml_tasks.rake +78 -0
- data/app_generators/rtml/templates/rtml/template.rb +64 -0
- data/app_generators/rtml/templates/rtml/test/core/element_test.rb +17 -0
- data/app_generators/rtml/templates/rtml/test/core/screen_test.rb +91 -0
- data/app_generators/rtml/templates/rtml/test/core/tml_document_test.rb +53 -0
- data/app_generators/rtml/templates/rtml/test/functional/beryl_controller_test.rb +13 -0
- data/app_generators/rtml/templates/rtml/test/functional/btmlpa_controller_test.rb +13 -0
- data/app_generators/rtml/templates/rtml/test/functional/magcard_demo_controller_test.rb +20 -0
- data/app_generators/rtml/templates/rtml/test/functional/rtml_app_controller_test.rb +9 -0
- data/app_generators/rtml/templates/rtml/test/functional/rtml_routing_test.rb +19 -0
- data/app_generators/rtml/templates/rtml/test/functional/tml_controller_params_test.rb +20 -0
- data/app_generators/rtml/templates/rtml/test/rtml_test_helper.rb +44 -0
- data/app_generators/rtml/templates/rtml/test/validation/predefined_variable_rule_parser_test.rb +11 -0
- data/app_generators/rtml/templates/rtml/uninstall.rb +1 -0
- data/app_generators/rtml/templates/rtml/update.rb +57 -0
- data/bin/rtml +36 -0
- data/lib/rtml.rb +4 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/tasks/reglob.rake +28 -0
- data/test/test_generator_helper.rb +29 -0
- data/test/test_helper.rb +3 -0
- data/test/test_rtml.rb +11 -0
- data/test/test_rtml_generator.rb +43 -0
- metadata +516 -0
@@ -0,0 +1,174 @@
|
|
1
|
+
class Rtml::Helpers::ViewHelpers::RtmlFormBuilder < ActionView::Helpers::FormBuilder
|
2
|
+
def file_field(method, options = {})
|
3
|
+
raise "No file_field support for TML"
|
4
|
+
end
|
5
|
+
|
6
|
+
def select(method, choices, options = {}, tml_options = {})
|
7
|
+
raise "No select support in TML; see tml_select (and note the differences!)"
|
8
|
+
end
|
9
|
+
|
10
|
+
def collection_select(method, collection, value_method, text_method, options = {}, tml_options = {})
|
11
|
+
raise "No collection_select support in TML; see tml_select (and note the differences!)"
|
12
|
+
end
|
13
|
+
|
14
|
+
[ :date_select, :datetime_select, :time_select, :country_select, :time_zone_select ].each do |method|
|
15
|
+
define_method method do |*args|
|
16
|
+
raise "No #{method} support in TML; see tml_select (and note the differences!)"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def tml_select(method, choices, options = {})
|
21
|
+
input_field(method, options.reverse_merge(:type => :list, :value => choices.join(";")))
|
22
|
+
end
|
23
|
+
|
24
|
+
def check_box(method, options = {}, checked_value = "1")
|
25
|
+
input_field(method, options.reverse_merge(:type => :checkbox, :value => checked_value))
|
26
|
+
end
|
27
|
+
|
28
|
+
def hidden_field(method, options = {})
|
29
|
+
add_to_submit_variables(name_for(method, options)) unless options[:do_not_submit]
|
30
|
+
end
|
31
|
+
|
32
|
+
def label(method, text = nil, options = {})
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
def radio_button(method, tag_value, options = {})
|
37
|
+
input_field(method, options.reverse_merge(:type => :radio, :value => tag_value))
|
38
|
+
end
|
39
|
+
|
40
|
+
def text_area(method, options = {})
|
41
|
+
super
|
42
|
+
end
|
43
|
+
|
44
|
+
def currency_field(method, options = {})
|
45
|
+
options.reverse_merge! :precision => 2, :currency_sign => '$'
|
46
|
+
precision = options.delete(:precision)
|
47
|
+
currency_sign = options.delete(:currency_sign)
|
48
|
+
fmt = "#{currency_sign}0*.#{'0'*precision}"
|
49
|
+
input_field(method, options.reverse_merge(:type => :number, :format => fmt))
|
50
|
+
end
|
51
|
+
|
52
|
+
[:date, :password, :text, :number].each do |method|
|
53
|
+
code = <<-end_code
|
54
|
+
def #{method}_field(method, options = {})
|
55
|
+
input_field(method, options.reverse_merge(:type => #{method.inspect}))
|
56
|
+
end
|
57
|
+
end_code
|
58
|
+
eval code, binding, __FILE__, __LINE__ - (code.to_a.length+1)
|
59
|
+
end
|
60
|
+
|
61
|
+
def submit(label = "OK", options = {})
|
62
|
+
options, label = label, "OK" if label.kind_of? Hash
|
63
|
+
|
64
|
+
post = options.delete(:post)
|
65
|
+
cache = options.delete(:cache)
|
66
|
+
post = true if post.nil? # false is acceptable
|
67
|
+
tml = input_field(label, options.reverse_merge(:no_name => true, :alt => label, :type => :submit, :do_not_submit => true))
|
68
|
+
if post
|
69
|
+
screen = @template.current_rtml_element.current_screen
|
70
|
+
new_id = "s#{screen.id.hash.to_s.gsub(/-/, '_')}" # max 1+11=12 characters
|
71
|
+
err_id = new_id.sub(/s/, 'e')
|
72
|
+
|
73
|
+
target = @template.url_for(@options[:url] || {})
|
74
|
+
screen.next new_id
|
75
|
+
tmldoc = @template.controller.rtml_interface
|
76
|
+
tmldoc.screen new_id, :next => err_id do |scr|
|
77
|
+
scr.submit :cache => cache, :target => target, :on_error => err_id do |subm|
|
78
|
+
@template.instance_variable_get("@tml_variables_for_submit").each do |tmlvar|
|
79
|
+
subm.getvar tmlvar
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
tmldoc.screen err_id, :next => tmldoc.default_screen do |err|
|
85
|
+
err.display do |disp|
|
86
|
+
disp.build :table, :border => 2, :height => '100%', :width => '100%' do
|
87
|
+
tr { td :valign => :middle, :align => :center do
|
88
|
+
h1 { "Error Submitting Data" }
|
89
|
+
br
|
90
|
+
getvar :name => 'err.baddata_reason'
|
91
|
+
end }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
tml
|
97
|
+
end
|
98
|
+
|
99
|
+
def reset(label = "Reset", options = {})
|
100
|
+
input_field(label, options(:no_name => true, :alt => label, :type => 'reset', :do_not_submit => true))
|
101
|
+
end
|
102
|
+
|
103
|
+
def baddata
|
104
|
+
@baddata ||= HashWithIndifferentAccess.new
|
105
|
+
end
|
106
|
+
|
107
|
+
def baddata_for(method, options = {}, &block)
|
108
|
+
baddata[method] = Rtml::Widgets::ElementBuilderWidget.new(@template.current_rtml_element, options.merge(:name => :baddata), &block).to_tml
|
109
|
+
end
|
110
|
+
|
111
|
+
def input_field(method, options = {})
|
112
|
+
validate_input_field(method, options)
|
113
|
+
alt = "#{method.to_s.titleize}:"
|
114
|
+
name = name_for(method, options)
|
115
|
+
bd = (baddata[method] || default_baddata_for(method, options))
|
116
|
+
opt = options.reverse_merge(:name => name, :alt => alt)
|
117
|
+
|
118
|
+
add_to_submit_variables name unless opt.delete :do_not_submit
|
119
|
+
opt.delete :name if opt.delete :no_name
|
120
|
+
if bd
|
121
|
+
"<input #{opt.without_values(nil).to_s}>\n\t#{bd.indent}\n</input>"
|
122
|
+
else
|
123
|
+
"<input #{opt.without_values(nil).to_s} />"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
private
|
128
|
+
def name_for(method, options)
|
129
|
+
if options[:prefix]
|
130
|
+
if options[:prefix].blank?
|
131
|
+
method
|
132
|
+
else
|
133
|
+
"#{options[:prefix]}.#{method}"
|
134
|
+
end
|
135
|
+
else
|
136
|
+
((object_name.blank? or object_name == 'nil_class') ? method : "#{object_name}.#{method}")
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def add_to_submit_variables(name)
|
141
|
+
arr = @template.instance_variable_get("@tml_variables_for_submit")
|
142
|
+
arr << name unless arr.include? name
|
143
|
+
end
|
144
|
+
|
145
|
+
# some validation, because debugging TML sucks
|
146
|
+
def validate_input_field(method, options)
|
147
|
+
valid_types = [ :checkbox, :date, :number, :password, :radio, :reset, :submit, :text, :list ]
|
148
|
+
valid_options = [ :type, :class, :alt, :name, :value, :format, :do_not_submit, :no_name ]
|
149
|
+
if options[:type] == :list then valid_options.concat [ :multiple, :rows, :width, :height ]
|
150
|
+
else valid_options.concat [ :id, :readonly, :size, :equal, :not_equal, :max, :min ]
|
151
|
+
end
|
152
|
+
|
153
|
+
raise "Required option: type (one of #{valid_types.inspect})" unless options[:type]
|
154
|
+
raise "Unknown type: #{options[:type]} (valid types: #{valid_types.inspect}" unless valid_types.include? options[:type]
|
155
|
+
options.each { |k,v| raise "Unknown option #{k} (value: #{v})" unless valid_options.include?(k) }
|
156
|
+
end
|
157
|
+
|
158
|
+
def default_baddata_for(method, options)
|
159
|
+
bd = false
|
160
|
+
reasons_for_bd = [ :equal, :not_equal, :max, :min, :format ]
|
161
|
+
options.each { |key,val| bd = true if reasons_for_bd.include? key }
|
162
|
+
return nil unless bd
|
163
|
+
|
164
|
+
baddata_for method, :class => 'c_center', :next => @template.current_rtml_element.current_screen_id.to_screen_ref do
|
165
|
+
table :border => 2, :height => '100%', :width => '100%' do
|
166
|
+
tr do
|
167
|
+
td :valign => :middle, :align => :center do
|
168
|
+
getvar :name => 'err.baddata_reason'
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Rtml
|
2
|
+
module Oe
|
3
|
+
# Constants used for the Basic TML payment application (BTMLPA).
|
4
|
+
#
|
5
|
+
module BtmlpaConstants
|
6
|
+
module Value
|
7
|
+
NOT_SPECIFIED = 0
|
8
|
+
end
|
9
|
+
|
10
|
+
module State
|
11
|
+
NEW = 0
|
12
|
+
APPROVED = 1
|
13
|
+
DECLINED = 2
|
14
|
+
FAILED = 3
|
15
|
+
REVERSED = 4
|
16
|
+
CANCELED = 5
|
17
|
+
end
|
18
|
+
|
19
|
+
module TxnType
|
20
|
+
SALE = 1
|
21
|
+
SALE_CASHBACK = 2
|
22
|
+
REFUND = 3
|
23
|
+
REVERSAL = 4
|
24
|
+
end
|
25
|
+
|
26
|
+
module ResultCode
|
27
|
+
ACCEPTED = 0
|
28
|
+
REFUSED = 1
|
29
|
+
end
|
30
|
+
|
31
|
+
module AuthReply
|
32
|
+
AUTHORIZED = 0
|
33
|
+
DECLINED =1
|
34
|
+
end
|
35
|
+
|
36
|
+
module AuthCode
|
37
|
+
NONE = "NONE"
|
38
|
+
OK = "OK"
|
39
|
+
end
|
40
|
+
|
41
|
+
module InputMethod
|
42
|
+
MAGNETIC = 1
|
43
|
+
ICC = 2
|
44
|
+
KEYED = 3
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Rtml #:nodoc:
|
2
|
+
module Proxying #:nodoc:
|
3
|
+
module MethodMissingMethods #:nodoc:
|
4
|
+
def method_missing(name, *args, &block) #:nodoc:
|
5
|
+
return @rtml_document.send(name, *args, &block) if @rtml_document.respond_to? name
|
6
|
+
return super
|
7
|
+
end
|
8
|
+
|
9
|
+
def respond_to?(*a,&b) #:nodoc:
|
10
|
+
super or @rtml_document.respond_to?(*a,&b)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Rtml #:nodoc:
|
2
|
+
module Proxying #:nodoc:
|
3
|
+
class RtmlInterface #:nodoc:
|
4
|
+
include Rtml::Proxying::MethodMissingMethods
|
5
|
+
|
6
|
+
def initialize #:nodoc:
|
7
|
+
@modules = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def fire_action(action, controller) #:nodoc:
|
11
|
+
@controller = controller
|
12
|
+
@rtml_document = controller.send :tml_document
|
13
|
+
_copy_ivars_from_controller
|
14
|
+
self.send action
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_actions_from_module(m) #:nodoc:
|
18
|
+
me = (class << self; self; end)
|
19
|
+
me.send :include, m
|
20
|
+
@modules << m
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def _copy_ivars_from_controller #:nodoc:
|
25
|
+
if controller
|
26
|
+
variables = controller.instance_variable_names
|
27
|
+
variables -= controller.protected_instance_variables if controller.respond_to?(:protected_instance_variables)
|
28
|
+
variables.each { |name| instance_variable_set(name, controller.instance_variable_get(name)) }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Rtml #:nodoc:
|
2
|
+
module Proxying #:nodoc:
|
3
|
+
class Sandbox < Module #:nodoc:
|
4
|
+
def respond_to?(*a,&b) #:nodoc:
|
5
|
+
super || @__controller.respond_to?(*a,&b)
|
6
|
+
end
|
7
|
+
|
8
|
+
def method_missing(name, *args, &block) #:nodoc:
|
9
|
+
@__controller.send name, *args, &block
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(controller, &block) #:nodoc:
|
13
|
+
@__controller = controller
|
14
|
+
super(&block)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# RTML text formatting utilities.
|
2
|
+
# Note that these utilities may be deprecated in the near future, so
|
3
|
+
# don't write code that relies on them. They're left over from RTML 0.1
|
4
|
+
# (and were copied and pasted even then), and they stink of bad design.
|
5
|
+
#
|
6
|
+
module Rtml::TextUtils
|
7
|
+
|
8
|
+
# Removes all preceeding white space (except new lines) from the given
|
9
|
+
# text, but keeps indentation past the first non-white character. For
|
10
|
+
# example:
|
11
|
+
#
|
12
|
+
# begin
|
13
|
+
# raise "error"
|
14
|
+
# rescue
|
15
|
+
# puts $!
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# would become:
|
19
|
+
#
|
20
|
+
# begin
|
21
|
+
# raise "error"
|
22
|
+
# rescue
|
23
|
+
# puts $!
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
#
|
27
|
+
# The optional tab_stop parameter determines how many white spaces each
|
28
|
+
# tab stop will correlate to. This is important for strings that contain
|
29
|
+
# both white space indentation and tab character indentation, in order
|
30
|
+
# to properly format the result.
|
31
|
+
# def format_text(text, tab_stop = 8)
|
32
|
+
# code = ((text.respond_to? :render_tml) ? text.render_tml :
|
33
|
+
# ((text.respond_to? :to_tml) ? text.to_tml : text.to_s)).gsub(/\t/m, (" "*tab_stop))
|
34
|
+
# min_spaces = -1
|
35
|
+
# #figure out how many spaces NOT to keep
|
36
|
+
# code.split(/\n/m).each do |line|
|
37
|
+
# if not line.strip.blank?
|
38
|
+
# sp = 0
|
39
|
+
# line.each_byte do |ch|
|
40
|
+
# case ch
|
41
|
+
# when ?\s then sp += 1
|
42
|
+
# else break
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
# min_spaces = sp if min_spaces > sp or min_spaces == -1
|
46
|
+
# end
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# code.gsub(/^#{"".ljust(min_spaces)}/m, '').gsub("".ljust(tab_stop), "\t")
|
50
|
+
# end
|
51
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# TML data, when sent as an HTTP POST payload, is in XML format. This class is
|
2
|
+
# responsible for processing TMLPOST data into the familiar name-value pairs.
|
3
|
+
#
|
4
|
+
# TODO: Groupe has agreed to look into implementing TML POST data as
|
5
|
+
# application/x-www-form-urlencoded data instead of XML, which would
|
6
|
+
# render this class unnecessary overhead.
|
7
|
+
#
|
8
|
+
class Rtml::TmlParamParser
|
9
|
+
attr_reader :params
|
10
|
+
|
11
|
+
def initialize(data)
|
12
|
+
tml = Hpricot.XML(data)
|
13
|
+
tmlpost = tml.at('tmlpost')
|
14
|
+
postvars = tml.search("//postvar")
|
15
|
+
@params = {}.with_indifferent_access
|
16
|
+
|
17
|
+
if tmlpost and postvars
|
18
|
+
params[:post_id] = tmlpost['post_id'].to_i
|
19
|
+
params[:date] = Date.parse(tmlpost['date'])
|
20
|
+
params[:itid] = tmlpost['itid']
|
21
|
+
params[:xmlns] = tmlpost['xmlns']
|
22
|
+
p = {}
|
23
|
+
postvars.each do |postvar|
|
24
|
+
name, value = name_and_value_of postvar
|
25
|
+
p[name] = value
|
26
|
+
end
|
27
|
+
|
28
|
+
# The reason this is broken into two phases is because if we don't, there's a chance we'll
|
29
|
+
# miss a value that looks like (but isn't) a namespace. Example:
|
30
|
+
#
|
31
|
+
# card.pin = '3C30E0EEB1978A58' # this is actually the pin block itself
|
32
|
+
# card.pin.smid = '00000E0001E000CB' # this is the smid
|
33
|
+
#
|
34
|
+
# When parsed from parmstr, card.pin.smid would normally create params[:card][:pin] = {:smid => '...'}
|
35
|
+
# But this would overwrite card.pin = '3C30E0EEB1978A58', and we'd lose the pin block. It'd probably
|
36
|
+
# be more correct to fix this at the TML level, but we can't expect every TML developer to figure that
|
37
|
+
# out, and RTML can only help so much. It breaks the convention, but I think it's safer in the
|
38
|
+
# long run to turn this into params[:card][:pin] and params[:card]['pin.smid']. Even though it
|
39
|
+
# will doubtlessly add confusion to a developer who has to work with it, at least this confusion
|
40
|
+
# should be rare in RTML (because RTML sorts all this info into its Transaction model and expects
|
41
|
+
# the developer to deal with transactions through the model, and not the params themselves).
|
42
|
+
#
|
43
|
+
# TODO: Check with Groupe about addressing this. Obviously, 'card.pin.block' would be the preferred
|
44
|
+
# syntax and this problem would never come up if all variables followed the same naming conventions.
|
45
|
+
#
|
46
|
+
# We have to sort the keys so that the shortest ones will be on top (and therefore card.pin will be
|
47
|
+
# processed before card.pin.smid has a chance to determine that it's OK to make it a hash).
|
48
|
+
#
|
49
|
+
p.sort { |a,b| a[0] <=> b[0] }.each do |arr|
|
50
|
+
name, value = arr
|
51
|
+
sort_and_assign name, value
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def sort_and_assign(name, value, p = params)
|
58
|
+
if name =~ /\./
|
59
|
+
ns, *remainder = name.split(/\./)
|
60
|
+
p[ns] = {}.with_indifferent_access unless p.key? ns
|
61
|
+
if p[ns].kind_of? Hash then
|
62
|
+
remainder = remainder.join(".") if remainder.kind_of? Array
|
63
|
+
sort_and_assign(remainder, value, p[ns])
|
64
|
+
else p[name] = value
|
65
|
+
end
|
66
|
+
else
|
67
|
+
p[name] = value
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def name_and_value_of(postvar)
|
72
|
+
type = postvar['type']
|
73
|
+
name = postvar['name']
|
74
|
+
value = if postvar['value'].blank? then nil
|
75
|
+
else
|
76
|
+
value = postvar['value']
|
77
|
+
begin
|
78
|
+
case type
|
79
|
+
when 'date' then DateTime.strptime(value, "%d %m %Y %H:%M:%S").to_time
|
80
|
+
when 'integer' then value.to_i
|
81
|
+
when 'string' then value
|
82
|
+
# TODO: this is actually hex; maybe unpack into true binary at some point?
|
83
|
+
when 'opaque' then value
|
84
|
+
# Decided to simply assign string value instead of raising error on unknown types, so that user
|
85
|
+
# can handle it without having to hack the framework.
|
86
|
+
else value
|
87
|
+
#else raise "Unknown TML type: #{type}"
|
88
|
+
end
|
89
|
+
rescue
|
90
|
+
warn "Error #{$!.message} while parsing value #{value.inspect} for TML param #{name.inspect} (#{type})"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
[name, value]
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
class Rtml::Validation::DomRuleParser
|
2
|
+
def parse!(rules_file)
|
3
|
+
eval File.read(rules_file), binding, rules_file, 1
|
4
|
+
end
|
5
|
+
|
6
|
+
def define_tags(*tag_list)
|
7
|
+
tag_list.each do |tag|
|
8
|
+
define_tags *tag and return if tag.kind_of? Array
|
9
|
+
tags << Rtml::Validation::DomTag.new(tag)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def validate(validator, tml, root = nil)
|
14
|
+
if root.nil?
|
15
|
+
tags.each { |t| root = t if t.root? }
|
16
|
+
raise "No root tag specified" if root.nil?
|
17
|
+
elsif root.kind_of? String or root.kind_of? Symbol
|
18
|
+
root = tags.find_by_name(root)
|
19
|
+
end
|
20
|
+
|
21
|
+
count = root.validate(validator, self, ::Hpricot::XML(tml)).length
|
22
|
+
validator.test_case.assert_equal count, 1, "Expected to find exactly 1 occurrance of #{root.name}; found #{count}"
|
23
|
+
end
|
24
|
+
|
25
|
+
def root(tag)
|
26
|
+
tags.each { |t| t.root = false }
|
27
|
+
r = tags.find_by_name(tag)
|
28
|
+
r.root = true and return if r
|
29
|
+
raise "Could not find root tag #{tag}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def order(&block)
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def children(&block)
|
37
|
+
singleton = Class.new.new
|
38
|
+
tags.each do |tag|
|
39
|
+
singleton.class.send :define_method, tag.name do |children, *options|
|
40
|
+
children = [children] if children.kind_of? String or children.kind_of? Symbol
|
41
|
+
tag.children << [ children, options[0] || HashWithIndifferentAccess.new ]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
singleton.class.send :define_method, :all_elements do @all_elements end
|
46
|
+
singleton.instance_variable_set "@all_elements", tags
|
47
|
+
|
48
|
+
singleton.instance_eval &block
|
49
|
+
end
|
50
|
+
|
51
|
+
def tags
|
52
|
+
return @tags if @tags
|
53
|
+
@tags = []
|
54
|
+
def @tags.find_by_name(name)
|
55
|
+
r = nil
|
56
|
+
self.each { |t| r = t and break if t.name == name.to_s }
|
57
|
+
r
|
58
|
+
end
|
59
|
+
@tags
|
60
|
+
end
|
61
|
+
end
|