rtml 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,78 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rubigen'
|
|
3
|
+
require 'rubigen/scripts/generate'
|
|
4
|
+
|
|
5
|
+
class RtmlGenerator < RubiGen::Base
|
|
6
|
+
|
|
7
|
+
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
|
8
|
+
Config::CONFIG['ruby_install_name'])
|
|
9
|
+
|
|
10
|
+
default_options :author => nil
|
|
11
|
+
|
|
12
|
+
attr_reader :name
|
|
13
|
+
|
|
14
|
+
def initialize(runtime_args, runtime_options = {})
|
|
15
|
+
super
|
|
16
|
+
usage if args.empty?
|
|
17
|
+
@destination_root = File.expand_path(args.shift)
|
|
18
|
+
@name = base_name
|
|
19
|
+
extract_options
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def manifest
|
|
23
|
+
src = File.join(File.dirname(__FILE__), "templates/rtml")
|
|
24
|
+
dst = "vendor/plugins/rtml"
|
|
25
|
+
record do |m|
|
|
26
|
+
Dir[File.join(File.dirname(__FILE__), "templates/rtml/**/*")].each do |source|
|
|
27
|
+
destination = File.join(dst, source.sub(/^#{Regexp::escape src}/, ''))
|
|
28
|
+
if File.directory?(source)
|
|
29
|
+
m.directory destination
|
|
30
|
+
elsif File.file?(source)
|
|
31
|
+
m.file File.join('rtml', source.sub(/^#{Regexp::escape src}/, '')), destination
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
m.file "rails_template.rb", "rails_template.rb"
|
|
36
|
+
|
|
37
|
+
# m.dependency "install_rubigen_scripts", [destination_root, 'rtml'],
|
|
38
|
+
# :shebang => options[:shebang], :collision => :force
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
protected
|
|
43
|
+
def banner
|
|
44
|
+
<<-EOS
|
|
45
|
+
Creates a ...
|
|
46
|
+
|
|
47
|
+
USAGE: #{spec.name} name
|
|
48
|
+
EOS
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def add_options!(opts)
|
|
52
|
+
opts.separator ''
|
|
53
|
+
opts.separator 'Options:'
|
|
54
|
+
# For each option below, place the default
|
|
55
|
+
# at the top of the file next to "default_options"
|
|
56
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
|
57
|
+
# "Some comment about this option",
|
|
58
|
+
# "Default: none") { |o| options[:author] = o }
|
|
59
|
+
opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def extract_options
|
|
63
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
|
64
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
|
65
|
+
# raw instance variable value.
|
|
66
|
+
# @author = options[:author]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Installation skeleton. Intermediate directories are automatically
|
|
70
|
+
# created so don't sweat their absence here.
|
|
71
|
+
BASEDIRS = %w(
|
|
72
|
+
lib
|
|
73
|
+
log
|
|
74
|
+
script
|
|
75
|
+
test
|
|
76
|
+
tmp
|
|
77
|
+
)
|
|
78
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
def win_env?
|
|
2
|
+
RUBY_PLATFORM=~ /(win32|mingw)/
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
def rake(command, options = {})
|
|
6
|
+
env = options[:env] || 'development'
|
|
7
|
+
log 'rake', "#{command} in #{env} "
|
|
8
|
+
sudo = win_env? ? '' : (options[:sudo] ? 'sudo' : '')
|
|
9
|
+
rake_cmd = win_env? ? "rake.bat" : 'rake'
|
|
10
|
+
in_root { run("#{sudo} #{rake_cmd} #{command} RAILS_ENV=#{env}", false) }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
inside("vendor/plugins/rtml") do
|
|
14
|
+
run "ruby install.rb"
|
|
15
|
+
end
|
|
16
|
+
run "rm public/index.html"
|
|
17
|
+
gem "hpricot"
|
|
18
|
+
rake "gems:install"
|
|
19
|
+
rake 'rtml:setup'
|
|
20
|
+
rake 'db:migrate'
|
|
21
|
+
rake 'db:test:load'
|
|
22
|
+
|
|
23
|
+
controller_name = ask("Controller name [skip]: ").chomp
|
|
24
|
+
if controller_name.length > 0
|
|
25
|
+
controller_name.gsub!(/_./) { |i| i[1].chr.upcase }
|
|
26
|
+
actions = ask("Actions (separate with space) [index]: ").chomp.split(/\s/)
|
|
27
|
+
actions = [ 'index' ] if actions.length == 0
|
|
28
|
+
default_action = ((actions.include? "index") ? "index" : actions.first)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
if controller_name.length > 0
|
|
32
|
+
run "ruby script/generate rtml_controller #{controller_name} #{actions.join(" ")}"
|
|
33
|
+
route "map.connect_rtml :controller => '#{controller_name}', :action => '#{default_action}'"
|
|
34
|
+
else
|
|
35
|
+
route 'map.connect_rtml'
|
|
36
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2009 Colin MacKenzie IV
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
RTML (RubyTML) is a TML syntax for Ruby. (Redundant, huh?)
|
|
2
|
+
|
|
3
|
+
RTML hails from very humble beginnings. Originally, it was designed to
|
|
4
|
+
help new TML programmers understand just how the TML is being processed.
|
|
5
|
+
TML has its similarities to HTML, except that it's about 10 times harder
|
|
6
|
+
for a newbie to figure out what it means. My aim was to keep the language
|
|
7
|
+
as simple as possible to understand, while keeping to an identical work
|
|
8
|
+
flow, so that anyone learning the RTML would be able to take that directly
|
|
9
|
+
into TML when the time came. (Ruby on Rails was considered an unlikely
|
|
10
|
+
candidate for a production TML server at the time, so people had to be able
|
|
11
|
+
to take what they learned from this into Java or PHP -- which means typing
|
|
12
|
+
a lot of raw TML.)
|
|
13
|
+
|
|
14
|
+
I think I did too good a job on the work flow thing, though, because I found
|
|
15
|
+
myself writing code over and over again, just like TML. Sure, it was easier to
|
|
16
|
+
read than raw TML would have been, but it was so wordy! I had a bit of a
|
|
17
|
+
lightbulb moment, realizing that basic TML flies in the face of the DRY (Don't
|
|
18
|
+
Repeat Yourself) principle, which is a cornerstone of Rails development,
|
|
19
|
+
and I also realized that I could get so much more accomplished if I took the
|
|
20
|
+
Rails principles and applied them to TML. It was just a collection of helper
|
|
21
|
+
methods, really.
|
|
22
|
+
|
|
23
|
+
Then, after the basic functionality was there, I had another lightbulb
|
|
24
|
+
moment. I looked at the Rails framework and what it had become, and thought,
|
|
25
|
+
why not do for TML what Rails has done for HTML? So I started writing
|
|
26
|
+
supporting classes for it -- the TMLAppController, some helpers, Widgets,
|
|
27
|
+
some generators and rake tasks... The list goes on. RTML has come a long
|
|
28
|
+
way since its inception.
|
|
29
|
+
|
|
30
|
+
RTML makes a concerted effort to make the application read like
|
|
31
|
+
a human language. This is why Ruby was chosen as the base language of choice:
|
|
32
|
+
because Ruby is already pretty easy to read, as programming languages go.
|
|
33
|
+
It's not perfect, of course, but it's getting close.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
What RTML is NOT:
|
|
38
|
+
|
|
39
|
+
RTML is not a complete substitute for standard Terminal Markup Language (TML).
|
|
40
|
+
It reformats Ruby-style code into its TML counterpart, which is then sent to
|
|
41
|
+
the terminal browser.
|
|
42
|
+
|
|
43
|
+
RTML is not an IDE. RTML can even be written in Notepad, if you have the
|
|
44
|
+
stomach for it. It is simply a Ruby interface into the TML world.
|
|
45
|
+
|
|
46
|
+
RTML is not a replacement for the TML logic flow. That is, RTML will not
|
|
47
|
+
replace the entire TML development process. TML, in its simplest form, looks
|
|
48
|
+
something like:
|
|
49
|
+
|
|
50
|
+
Idle prompt -> User Input -> Screen -> User Input -> [Send data, receive data]
|
|
51
|
+
-> Completion / back to Idle Prompt.
|
|
52
|
+
|
|
53
|
+
This flow is exactly the same whether you design an application using RTML or
|
|
54
|
+
standard TML.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Here is an example of the GMA event processing code found on page 34
|
|
59
|
+
of the TML Application Development Guidelines for Incendo, rewritten as an
|
|
60
|
+
RTML action:
|
|
61
|
+
|
|
62
|
+
Rtml::actions_for MyTMLApplication do
|
|
63
|
+
on :menu => :initialscr, :cancel => :initialscr
|
|
64
|
+
includes '/btmlpa/tmlapp.tml'
|
|
65
|
+
includes '/magcard/magcard.tml'
|
|
66
|
+
includes '/iccemv/iccemv.tml'
|
|
67
|
+
|
|
68
|
+
screen :initialscr, :next => :initialscr1 do
|
|
69
|
+
next_screen '/magcard/magcard.tml', :if => "tmlvar:gma.event.occured == mag"
|
|
70
|
+
next_screen '/iccemv/iccemv.tml', :if => "tmlvar:gma.event.occured == icc"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
screen :initialscr1 do
|
|
74
|
+
on :cancel => :initialscr1
|
|
75
|
+
display # The actual display code is segregated into a Rails view. See below.
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
screen :gma_subscr, :next => :initialscr1 do
|
|
79
|
+
set 'gma.event.subscribed' => 'anykey;mag;icc'
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
screen :gma_unsubscr, :next => :initialscr1 do
|
|
83
|
+
set 'gma.event.subscribed' => ''
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
Notice the :initialscr1 screen has "display" in it. This tells RTML to
|
|
88
|
+
render the View for that screen. Display can be called with an argument,
|
|
89
|
+
too, to override this behavior: A String will be assigned directly, or
|
|
90
|
+
a Block can be added to facilitate additional functionality.
|
|
91
|
+
|
|
92
|
+
For this example, the View looks like this:
|
|
93
|
+
|
|
94
|
+
<h1>OE Examples:</h1>
|
|
95
|
+
<%=link_to "BTMLPA", "/btmlpa/tmlapp.tml"%><br/>
|
|
96
|
+
<%=link_to "MAGCARD", "/magcard/magcard.tml"%><br/>
|
|
97
|
+
<%=link_to "ICCEMV", "/iccemv/iccemv.tml"%><br/>
|
|
98
|
+
<%=link_to "Subscribe to GMA events", :anchor => "#gma_subscr"%><br/>
|
|
99
|
+
<%=link_to "Unsubscribe from GMA events", :anchor => "#gma_unsubscr"%><br/>
|
|
100
|
+
<%=link_to "Terminal Config", embedded_app%><br/>
|
|
101
|
+
<%=link_to "Exit OEBR", "exit"%>
|
|
102
|
+
|
|
103
|
+
As you can see, RTML is embedded within an ERB document just like
|
|
104
|
+
any other Embedded Ruby.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
Copyright (c) 2009
|
|
108
|
+
Written by Colin MacKenzie IV
|
|
109
|
+
Released under the MIT license.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'rake/testtask'
|
|
3
|
+
require 'rake/rdoctask'
|
|
4
|
+
#require File.join(File.dirname(__FILE__), "lib", "rtml", "version")
|
|
5
|
+
|
|
6
|
+
desc 'Default: run unit tests.'
|
|
7
|
+
task :default => :test
|
|
8
|
+
|
|
9
|
+
task "test" do |t|
|
|
10
|
+
Rake::Task['test:all'].invoke
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
namespace "test" do |t|
|
|
14
|
+
desc 'Test the rtml plugin.'
|
|
15
|
+
|
|
16
|
+
[:all, :core, :validation, :functional].each do |s|
|
|
17
|
+
desc "Test rtml (#{s})"
|
|
18
|
+
Rake::TestTask.new(s) do |t|
|
|
19
|
+
case s
|
|
20
|
+
when :all then t.pattern = "test/**/*.rb"
|
|
21
|
+
else t.pattern = "test/#{s}/**/*.rb"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
#t.libs << 'lib'
|
|
25
|
+
t.test_files = ["test/rtml_test_helper.rb"]
|
|
26
|
+
t.verbose = true
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
desc 'Generate documentation for the rtml plugin.'
|
|
32
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
33
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
34
|
+
rdoc.title = 'Rtml'
|
|
35
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
36
|
+
rdoc.rdoc_files.include('README')
|
|
37
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
38
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
class BerylController < Rtml::RtmlAppController
|
|
2
|
+
tml_helper :all, :plugin_path => true # see app/helpers/beryl_tml_helpers/*.rb
|
|
3
|
+
include Rtml::Features
|
|
4
|
+
hide_action :authorize
|
|
5
|
+
|
|
6
|
+
configure_features do |config|
|
|
7
|
+
config.common.menu = false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
rtml_debug do |config|
|
|
11
|
+
config[:dump_tml] = false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def authorize(transaction)
|
|
15
|
+
logger.warn "You should override BerylController#authorize(transaction)"
|
|
16
|
+
logger.warn "Default implementation always sends a fake approval."
|
|
17
|
+
logger.debug "Transaction information:"
|
|
18
|
+
logger.debug transaction.to_yaml
|
|
19
|
+
|
|
20
|
+
transaction.message = "APPROVED"
|
|
21
|
+
transaction.auth_code = Time.now.to_i + rand(99999)
|
|
22
|
+
transaction.state = :approved
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def sale
|
|
26
|
+
auth Rtml::Transaction.from(params)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def sale_return
|
|
30
|
+
auth Rtml::Transaction.from(params)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def force_sale
|
|
34
|
+
auth Rtml::Transaction.from(params)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def void
|
|
38
|
+
auth Rtml::Transaction.from(params)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
def auth(transaction)
|
|
43
|
+
valid_states = (Rtml::Beryl::Constants::States - [:new])
|
|
44
|
+
|
|
45
|
+
started_at = Time.now
|
|
46
|
+
begin
|
|
47
|
+
transaction.card.input_type = :keyed if params[:manual_entry].to_s == '1'
|
|
48
|
+
authorize transaction
|
|
49
|
+
unless valid_states.include? transaction.state
|
|
50
|
+
raise "Set transaction.state to one of #{valid_states.inspect}"
|
|
51
|
+
end
|
|
52
|
+
transaction.message ||= case transaction.state
|
|
53
|
+
when :approved then "Transaction approved"
|
|
54
|
+
when :declined then "Transaction declined"
|
|
55
|
+
when :failed then "Transaction failed"
|
|
56
|
+
when :reversed then "Transaction reversed"
|
|
57
|
+
when :canceled then "Transaction canceled"
|
|
58
|
+
end
|
|
59
|
+
rescue #auth
|
|
60
|
+
transaction.state = :declined if transaction.state == :new
|
|
61
|
+
raise
|
|
62
|
+
#raise "Error in transaction data: \"#{$!}\""
|
|
63
|
+
end
|
|
64
|
+
transaction.duration = Time.now.to_f - started_at.to_f
|
|
65
|
+
transaction.save!
|
|
66
|
+
|
|
67
|
+
@transaction = transaction
|
|
68
|
+
render :rtml => :auth_result unless performed?
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
class Rtml::MagcardDemoController < Rtml::RtmlAppController
|
|
2
|
+
tml_helper :all, :plugin_path => true # see app/helpers/magcard_demo_tml_helpers/*.rb
|
|
3
|
+
|
|
4
|
+
def authorize
|
|
5
|
+
logger.debug params.to_yaml
|
|
6
|
+
@auth_code = Time.now.to_i
|
|
7
|
+
render :rtml => :authorized
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
class Rtml::Oe::BtmlpaController < Rtml::RtmlAppController
|
|
2
|
+
# $RTML_WIREDUMP_DEV = STDOUT
|
|
3
|
+
# caches_action :index, :receipt, :icc
|
|
4
|
+
|
|
5
|
+
tml_helper :all, :plugin_path => true
|
|
6
|
+
include Rtml::Oe
|
|
7
|
+
include Rtml::Oe::BtmlpaConstants
|
|
8
|
+
|
|
9
|
+
before_filter :find_terminal, :only => [ :auth, :reverse ]
|
|
10
|
+
|
|
11
|
+
public
|
|
12
|
+
def rescue_action_test
|
|
13
|
+
raise "Error"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def reverse
|
|
17
|
+
txn = Rtml::Transaction.find_by_txn_id(params[:transid], :conditions => { :terminal_id => @terminal.id })
|
|
18
|
+
if txn.nil?
|
|
19
|
+
raise "Reversal failed: Invalid transaction ID"
|
|
20
|
+
else
|
|
21
|
+
case txn.state
|
|
22
|
+
when State::APPROVED
|
|
23
|
+
t = txn.txn_type
|
|
24
|
+
txn.txn_type = TxnType::REVERSAL
|
|
25
|
+
authorize! txn # Application.getInstance().reverseTransaction(txn)
|
|
26
|
+
raise "Reversal failed: #{txn.message}" if txn.auth_code.nil?
|
|
27
|
+
txn.state = State::REVERSED
|
|
28
|
+
txn.txn_type = t
|
|
29
|
+
txn.save!
|
|
30
|
+
when State::NEW
|
|
31
|
+
txn.state = State::CANCELED
|
|
32
|
+
txn.save!
|
|
33
|
+
else
|
|
34
|
+
puts "FAIL ON GET < #{txn.state}"
|
|
35
|
+
raise "Reversal failed: Invalid transaction state"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
@message = "Reversed."
|
|
40
|
+
@destination = "receipt"
|
|
41
|
+
render :rtml => :dynamic
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def auth
|
|
45
|
+
puts params.to_yaml
|
|
46
|
+
started_at = Time.now
|
|
47
|
+
txn = Rtml::Transaction.find_by_txn_id(params[:transid], :conditions => { :terminal_id => @terminal.id })
|
|
48
|
+
if txn.nil?
|
|
49
|
+
txn = transaction_class.new(:state => State::NEW,
|
|
50
|
+
:txn_started => started_at,
|
|
51
|
+
:terminal => @terminal,
|
|
52
|
+
:txn_id => params[:transid],
|
|
53
|
+
:post_id => params[:post_id],
|
|
54
|
+
:txn_mode => params[:oebr][:submit_mode],
|
|
55
|
+
:txn_type => txn_type_to_i(params[:payment][:trans_type]),
|
|
56
|
+
:term_txn_date => DateTime.parse((params[:payment][:txn_date] || Time.now).to_s).utc,
|
|
57
|
+
:post_txn_date => (params[:date] ? DateTime.parse(params[:date].to_s).utc : nil),
|
|
58
|
+
:amount => params[:payment][:amount]
|
|
59
|
+
)
|
|
60
|
+
if txn.txn_type == TxnType::SALE_CASHBACK
|
|
61
|
+
if params[:payment][:amount_other] == Value::NOT_SPECIFIED
|
|
62
|
+
raise "Cashback amount should be specified."
|
|
63
|
+
end
|
|
64
|
+
txn.amount_other = params[:payment][:amount_other]
|
|
65
|
+
end
|
|
66
|
+
txn.currency_code = params[:currency_code]
|
|
67
|
+
txn.pan = params[:card][:pan]
|
|
68
|
+
txn.cardholder_name = params[:card][:cardholder_name]
|
|
69
|
+
txn.card_number = params[:card][:issue_number]
|
|
70
|
+
txn.input_method = params[:card][:input_type]
|
|
71
|
+
txn.iso2_track = params[:card][:mag][:iso2_track] if params[:card][:mag]
|
|
72
|
+
txn.expiry_date = params[:card][:expiry_date]
|
|
73
|
+
txn.start_date = params[:card][:effective_date]
|
|
74
|
+
if txn.input_method == InputMethod::ICC
|
|
75
|
+
txn.icc_app = params[:card][:emv][:aid]
|
|
76
|
+
txn.icc_aip = params[:card][:emv][:aip]
|
|
77
|
+
txn.icc_auc = params[:card][:emv][:auc]
|
|
78
|
+
txn.icc_atc = params[:card][:emv][:atc]
|
|
79
|
+
txn.icc_aac = params[:card][:emv][:aac]
|
|
80
|
+
txn.icc_tc = params[:card][:emv][:tc]
|
|
81
|
+
txn.icc_arqc = params[:card][:emv][:arqc]
|
|
82
|
+
txn.icc_iad = params[:card][:emv][:iad].to_s
|
|
83
|
+
txn.icc_tvr = params[:card][:emv][:tvr]
|
|
84
|
+
txn.icc_unumber = params[:card][:emv][:unumber]
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
txn.save!
|
|
88
|
+
else
|
|
89
|
+
txn.post_id = params[:post_id] if params[:post_id]
|
|
90
|
+
# if txn.post_id != params[:post_id]
|
|
91
|
+
# raise "Transaction has a duplicate ID."
|
|
92
|
+
# end
|
|
93
|
+
txn.txn_mode = "offline"
|
|
94
|
+
txn.save!
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
if txn.state == State::NEW
|
|
98
|
+
begin
|
|
99
|
+
authorize! txn
|
|
100
|
+
txn.state = (txn.auth_code ? State::APPROVED : State::DECLINED)
|
|
101
|
+
puts "SET > #{txn.state}"
|
|
102
|
+
rescue
|
|
103
|
+
txn.state = State::DECLINED
|
|
104
|
+
puts "Error in transaction data: #{$!}"
|
|
105
|
+
puts $!.backtrace[0..4].join("\n")
|
|
106
|
+
raise "Error in transaction data: \"#{$!}\""#"Incorrect data."
|
|
107
|
+
end
|
|
108
|
+
txn.txn_duration = (Time.now.to_i - started_at.to_i)
|
|
109
|
+
txn.save!
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
unless offline?
|
|
113
|
+
# do stuff w/ auth result stuff
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
@transaction = txn
|
|
117
|
+
auth_result
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
protected
|
|
121
|
+
# Commence transaction authorization
|
|
122
|
+
# You should override this in your controller.
|
|
123
|
+
def authorize!(transaction)
|
|
124
|
+
raise "Default method Rtml::Oe::BtmlpaController#authorize! is not implemented"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def transaction_class
|
|
128
|
+
self.class.name.gsub(/Controller/, "Transaction").constantize rescue \
|
|
129
|
+
self.class.name.gsub(/Controller/, '::Transaction').constantize rescue \
|
|
130
|
+
Rtml::Transaction
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
private
|
|
134
|
+
def find_terminal
|
|
135
|
+
Rtml::Terminal
|
|
136
|
+
Rtml::Transaction
|
|
137
|
+
# Examples::Btmlpa::Terminal
|
|
138
|
+
# Examples::Btmlpa::Transaction
|
|
139
|
+
|
|
140
|
+
@terminal = Rtml::Terminal.find_by_itid(params[:itid])
|
|
141
|
+
@terminal = Rtml::Terminal.create!(:itid => params[:itid]) if @terminal.nil?
|
|
142
|
+
#raise "Terminal ITID not found: #{params[:itid]}" if @terminal.nil?
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def txn_type_to_i(type)
|
|
146
|
+
case type.to_s.downcase
|
|
147
|
+
when "debit" then return 1
|
|
148
|
+
when "cashback" then return 2
|
|
149
|
+
when "credit" then return 3
|
|
150
|
+
when "reversal" then return 1
|
|
151
|
+
else raise "Unsupported payment type: #{type}"
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def offline?
|
|
156
|
+
params[:oebr][:submit_mode].to_s.downcase == "offline"
|
|
157
|
+
end
|
|
158
|
+
end
|