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,18 @@
|
|
|
1
|
+
module Rtml::Features
|
|
2
|
+
def self.included(base)
|
|
3
|
+
base.send :include, Rtml::Features::ControllerInstanceMethods
|
|
4
|
+
base.send :extend, Rtml::Features::ControllerClassMethods
|
|
5
|
+
# Views are shared across all Features because Features must be designed to coexist.
|
|
6
|
+
base.append_view_path_for_action nil, File.join(PLUGIN_BASE, "components", "rtml", "features", "views")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.all
|
|
10
|
+
features = (Rtml::Features.constants - %W(ControllerClassMethods ControllerInstanceMethods
|
|
11
|
+
ArrayOfFeatureInstances))
|
|
12
|
+
features.collect do |k|
|
|
13
|
+
Rtml::Features.const_get(k)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.each(*a, &b) self.all.each(*a, &b) end
|
|
18
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Rtml
|
|
2
|
+
module Features
|
|
3
|
+
class ArrayOfFeatureInstances < Array
|
|
4
|
+
def init(rtml_document, after_init)
|
|
5
|
+
prev_ft = rtml_document.screen :feature_init
|
|
6
|
+
self.flatten.each_with_index do |feature, index|
|
|
7
|
+
next unless feature.respond_to? :init
|
|
8
|
+
cur_ft = rtml_document.screen "ft_init_#{index}" do |scr| feature.init(scr) end
|
|
9
|
+
prev_ft.next_screen cur_ft.id
|
|
10
|
+
prev_ft = cur_ft
|
|
11
|
+
end
|
|
12
|
+
prev_ft.next_screen after_init
|
|
13
|
+
:feature_init
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Rtml::Features::ControllerClassMethods
|
|
2
|
+
def configuration_blocks
|
|
3
|
+
return superclass.configuration_blocks if superclass.respond_to? :configuration_blocks
|
|
4
|
+
@configuration_blocks ||= []
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def configure_features(&block)
|
|
8
|
+
raise "Block expected" unless block_given?
|
|
9
|
+
configuration_blocks << block
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.extended(base)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.feature_files
|
|
16
|
+
ret = []
|
|
17
|
+
[
|
|
18
|
+
File.join(RAILS_ROOT, "lib", "rtml", "features"),
|
|
19
|
+
File.join(RAILS_ROOT, "vendor", "plugins", "rtml", "components", "rtml", "features")
|
|
20
|
+
].each do |features_dir|
|
|
21
|
+
extract = /^#{Regexp.quote(features_dir)}\/?(.*)\.rb$/
|
|
22
|
+
ret.concat Dir["#{features_dir}/**/*.rb"].map { |file| file.sub extract, 'rtml/features/\1' }
|
|
23
|
+
end
|
|
24
|
+
ret
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
feature_files.each do |file_name|
|
|
28
|
+
require_dependency(file_name)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Rtml::Features::ControllerInstanceMethods
|
|
2
|
+
def self.included(base)
|
|
3
|
+
base.send :before_filter, :setup_features
|
|
4
|
+
base.send :hide_action, :configure_features, :setup_features, :feature_instances, :feature_config,
|
|
5
|
+
:add_features
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def configure_features(config = self.feature_config)
|
|
9
|
+
yield config if block_given?
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def setup_features
|
|
13
|
+
yield feature_config if block_given?
|
|
14
|
+
self.class.configuration_blocks.each { |config_block| configure_features(feature_config, &config_block) }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def feature_instances
|
|
18
|
+
return @feature_instances if @feature_instances
|
|
19
|
+
@feature_instances = feature_config.to_instances
|
|
20
|
+
@feature_instances
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def features; feature_instances; end
|
|
24
|
+
|
|
25
|
+
def feature_config
|
|
26
|
+
@feature_config ||= Rtml::FeatureConfig.new
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def add_features(*feature_classes)
|
|
30
|
+
tml_document.action_view.instance_variable_set("@config", feature_config)
|
|
31
|
+
feature_instances.flatten.each do |instance|
|
|
32
|
+
instance.add_to tml_document if feature_classes.empty? or feature_classes.include? instance.feature_class
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Rtml
|
|
2
|
+
# Helper methods for RTML Widgets.
|
|
3
|
+
module Helpers
|
|
4
|
+
# Applies the current layout to the given target object
|
|
5
|
+
# If a block is supplied, that block will be called with the target object
|
|
6
|
+
# as an argument, and the result of that block will have the layout applied to it.
|
|
7
|
+
# If there is no layout for this object, the above happens but a layout is not applied.
|
|
8
|
+
def do_layout(target = nil, &block)
|
|
9
|
+
if target.respond_to? :layout=
|
|
10
|
+
target.layout = layout
|
|
11
|
+
yield target if block_given?
|
|
12
|
+
target.to_tml
|
|
13
|
+
else
|
|
14
|
+
c = ((block_given?) ? block.call(target) :
|
|
15
|
+
((target.respond_to? :to_tml) ? target.to_tml : target.to_s)
|
|
16
|
+
)
|
|
17
|
+
((layout) ? (layout.to_tml { c.to_s.indent }) : c.to_s)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module Rtml::Helpers::ControllerHelpers
|
|
2
|
+
# The RTML Helper is the core of your RTML application. This is where you tell your controller
|
|
3
|
+
# which helpers to load. Most common usage is:
|
|
4
|
+
#
|
|
5
|
+
# tml_helper :all
|
|
6
|
+
#
|
|
7
|
+
# Note to myself (you probably shouldn't care): To load internal TML helpers, use this syntax:
|
|
8
|
+
#
|
|
9
|
+
# tml_helper :all, :plugin_path => true
|
|
10
|
+
#
|
|
11
|
+
def tml_helper(*args)
|
|
12
|
+
options = args.extract_options!
|
|
13
|
+
|
|
14
|
+
args.flatten.each do |arg|
|
|
15
|
+
case arg
|
|
16
|
+
when Module
|
|
17
|
+
|
|
18
|
+
when :all
|
|
19
|
+
tml_helper(all_tml_helpers(options[:plugin_path]), :plugin_path => options[:plugin_path])
|
|
20
|
+
when String, Symbol
|
|
21
|
+
file_name = arg.to_s.underscore
|
|
22
|
+
class_name = file_name.camelize
|
|
23
|
+
view_path = File.join("app/views", controller_path)
|
|
24
|
+
view_path = File.join("vendor", "plugins", "rtml", view_path) if options[:plugin_path]
|
|
25
|
+
view_path = File.join(view_path, file_name)
|
|
26
|
+
file_name = File.join("#{controller_path}_tml_helpers/#{file_name}") unless File.exist?("#{file_name}.rb")
|
|
27
|
+
|
|
28
|
+
begin
|
|
29
|
+
logger.debug "Adding TML Helper: #{file_name}" if ENV['RAILS_ENV'] == 'development'
|
|
30
|
+
require_dependency(file_name)
|
|
31
|
+
append_view_path_for_action(class_name.underscore, view_path)
|
|
32
|
+
rescue LoadError => load_error
|
|
33
|
+
requiree = / -- (.*?)(\.rb)?$/.match(load_error.message).to_a[1]
|
|
34
|
+
if requiree == file_name
|
|
35
|
+
msg = "Missing TML helper file helpers/#{file_name}.rb"
|
|
36
|
+
raise LoadError.new(msg).copy_blame!(load_error)
|
|
37
|
+
else
|
|
38
|
+
raise
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
else
|
|
42
|
+
raise ArgumentError, "tml_helper expects String or Symbol argument (was: #{args.inspect})"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
def all_tml_helpers(plugin_path = false)
|
|
49
|
+
ret = []
|
|
50
|
+
f = ""
|
|
51
|
+
f = File.join("vendor", "plugins", "rtml") if plugin_path
|
|
52
|
+
|
|
53
|
+
[File.join(RAILS_ROOT, f, "app", "helpers", "#{controller_path}_tml_helpers")].each do |helpers_dir|
|
|
54
|
+
extract = /^#{Regexp.quote(helpers_dir)}\/?(.*)\.rb$/
|
|
55
|
+
ret.concat Dir["#{helpers_dir}/*.rb"].map { |file| file.sub extract, '\1' }
|
|
56
|
+
end
|
|
57
|
+
ret
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
module Rtml::Helpers::ControllerHelpers::MenuHelpers
|
|
2
|
+
# Constructs a new Menu Item to be rendered at the main menu of an application.
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Option definitions:
|
|
6
|
+
# [option] => [default value] [description]
|
|
7
|
+
# :label => - the text label to render
|
|
8
|
+
# :image => nil the URL to the image to render
|
|
9
|
+
# :partial => nil the Partial to render (negates :image, :label, :render_mode)
|
|
10
|
+
# :escape => true whether to HTML-escape the label or block result
|
|
11
|
+
# :display => true whether to display this menu item at all
|
|
12
|
+
# :position => num_menu_items a number between 0 and the number of menu items representing
|
|
13
|
+
# where in the list this item should be placed
|
|
14
|
+
# :render_mode => :normal The render_mode option determines how to render the data
|
|
15
|
+
# if a display is less capable of rendering graphics.
|
|
16
|
+
#
|
|
17
|
+
# Available render modes:
|
|
18
|
+
# :always => Always render both label and image
|
|
19
|
+
# :normal => Render label and image in graphical displays, and just label otherwise.
|
|
20
|
+
# :image => Render only image for graphical displays, and fall back to label otherwise.
|
|
21
|
+
# :always_image => Always render only the image and never the label.
|
|
22
|
+
#
|
|
23
|
+
# Note that the render mode is ignored if a partial is supplied.
|
|
24
|
+
#
|
|
25
|
+
# Examples:
|
|
26
|
+
# menu_item :sale
|
|
27
|
+
# menu_item :sale, :label => "Sale", :image => "rtml/sale.gif"
|
|
28
|
+
# menu_item :sale, :next => :sale_screen
|
|
29
|
+
# menu_item :sale, :next_screen => :sale_screen
|
|
30
|
+
# menu_item :sale, :image => "rtml/sale.gif", :label => nil
|
|
31
|
+
# menu_item :sale, :partial => 'menu_sale'
|
|
32
|
+
# menu_item :sale, :display => false ## disables this menu item
|
|
33
|
+
# menu_item :sale, :position => 0 ## inserts this menu item at index 0
|
|
34
|
+
# menu_item :sale, :render_mode => :always
|
|
35
|
+
#
|
|
36
|
+
# If a block is included, it will be called and the return value will be
|
|
37
|
+
# rendered:
|
|
38
|
+
#
|
|
39
|
+
# menu_item :sale, :next => :sale_screen do |info|
|
|
40
|
+
# info[:escape] = false
|
|
41
|
+
# "CLICK TO BEGIN SALE"
|
|
42
|
+
# end
|
|
43
|
+
#
|
|
44
|
+
# The argument passed into the block is the Hash containing the details of
|
|
45
|
+
# this menu item. It can be modified here, if you wish to alter information.
|
|
46
|
+
# After the block ends, its return value will be converted to a link pointing
|
|
47
|
+
# to the <code>info[:next_screen]</code> screen. If <code>info[:escape]</code> is set
|
|
48
|
+
# to <code>true</code> (this is the default), it will be HTML-escaped before
|
|
49
|
+
# the link is created.
|
|
50
|
+
def menu_item(*args, &block)
|
|
51
|
+
defaults = { :label => args[0].to_s.titleize, :image => nil, :partial => nil, :escape => true,
|
|
52
|
+
:display => true, :position => menu_items.values.length, :render_mode => :normal }
|
|
53
|
+
defaults[:block] = block if block_given?
|
|
54
|
+
item = nil
|
|
55
|
+
case args.length
|
|
56
|
+
when 0
|
|
57
|
+
raise "Expected at least one argument (Symbol or Hash)"
|
|
58
|
+
when 1
|
|
59
|
+
if args[0].kind_of? Hash
|
|
60
|
+
item = menu_items[args[0][:name]] || { :name => args[0][:name] }.merge(defaults)
|
|
61
|
+
old_name = item[:name]
|
|
62
|
+
item.merge! args[0]
|
|
63
|
+
elsif args[0].kind_of? Symbol
|
|
64
|
+
item = menu_items[args[0]] || { :name => args[0], :next_screen => args[0] }.merge(defaults)
|
|
65
|
+
old_name = item[:name]
|
|
66
|
+
else
|
|
67
|
+
raise "Expected argument to be a Symbol or Hash"
|
|
68
|
+
end
|
|
69
|
+
when 2
|
|
70
|
+
unless args[0].kind_of? Symbol
|
|
71
|
+
raise "Expected first argument to be a Symbol if second argument is given"
|
|
72
|
+
end
|
|
73
|
+
raise "Expected second argument to be a Hash" unless args[1].kind_of? Hash
|
|
74
|
+
item = menu_items[args[0]] || { :name => args[0], :next_screen => args[0] }.merge(defaults)
|
|
75
|
+
old_name = item[:name]
|
|
76
|
+
item.merge! args[1]
|
|
77
|
+
else
|
|
78
|
+
raise "Expected no more than 2 arguments (Symbol and a Hash)"
|
|
79
|
+
end
|
|
80
|
+
item[:next_screen] = item.delete :next if item.keys.include? :next
|
|
81
|
+
|
|
82
|
+
raise "No :next_screen specified" unless item[:next_screen]
|
|
83
|
+
|
|
84
|
+
if item[:name] != old_name
|
|
85
|
+
menu_items.delete item[:name]
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
menu_items[item[:name]] = item
|
|
89
|
+
menu_items.reorder!
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Renders the menu to a string. If a block is given, it will be executed for each item and
|
|
93
|
+
# its value will be assigned in place of the defaults.
|
|
94
|
+
#
|
|
95
|
+
# The arguments given to the optional block are the item itself, and the return value of
|
|
96
|
+
# calling that item's block (or nil, if no block was given).
|
|
97
|
+
def render_menu_items(*items, &block)
|
|
98
|
+
r = ""
|
|
99
|
+
if items.empty? then items = menu_items.ordered_values
|
|
100
|
+
else items = menu_items.ordered_values(*items)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
items.each do |item|
|
|
104
|
+
if item[:display]
|
|
105
|
+
block_response = (item[:block] ? item[:block].call(item) : nil)
|
|
106
|
+
if block_given?
|
|
107
|
+
r.concat yield(item, render_menu_items(item[:name]))
|
|
108
|
+
else
|
|
109
|
+
if item[:partial]
|
|
110
|
+
rx = render(:partial => item[:partial], :locals => item)
|
|
111
|
+
r.concat rx
|
|
112
|
+
elsif block_response
|
|
113
|
+
x = CGI::escapeHTML block_response if item[:escape]
|
|
114
|
+
x = rtml_interface.action_view.link_to x, item[:next_screen].to_screen_ref
|
|
115
|
+
r.concat x
|
|
116
|
+
else
|
|
117
|
+
label = item[:label]
|
|
118
|
+
label = CGI::escapeHTML label if item[:escape]
|
|
119
|
+
x = ""
|
|
120
|
+
case item[:render_mode]
|
|
121
|
+
when :always
|
|
122
|
+
raise "No image to display" unless item[:image]
|
|
123
|
+
x = "<img src='#{item[:image]}' alt='' /> #{label}"
|
|
124
|
+
when :normal
|
|
125
|
+
if color_display? and item[:image]
|
|
126
|
+
x = "<img src='#{item[:image]}' alt='' /> #{label}".strip
|
|
127
|
+
else x = label
|
|
128
|
+
end
|
|
129
|
+
when :image
|
|
130
|
+
if color_display? and item[:image]
|
|
131
|
+
x = "<img src='#{item[:image]}' alt='' />"
|
|
132
|
+
else
|
|
133
|
+
x = label
|
|
134
|
+
end
|
|
135
|
+
when :always_image
|
|
136
|
+
raise "No image to display" unless item[:image]
|
|
137
|
+
x = "<img src='#{item[:image]}' alt='' />"
|
|
138
|
+
else raise "Invalid render_mode: #{item[:render_mode]}"
|
|
139
|
+
end
|
|
140
|
+
r.concat rtml_interface.action_view.link_to(x, item[:next_screen].to_screen_ref)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
r
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def self.included(base)
|
|
149
|
+
if base.ancestors.include? ActionController::Base
|
|
150
|
+
base.class_eval do
|
|
151
|
+
hide_action :menu_items, :render_menu_items, :menu_item, :controller
|
|
152
|
+
|
|
153
|
+
def menu_items
|
|
154
|
+
unless @menu_items
|
|
155
|
+
@menu_items = {}.with_indifferent_access
|
|
156
|
+
def @menu_items.ordered_values(*only)
|
|
157
|
+
if only.empty? then self.values
|
|
158
|
+
else only.collect { |key| key.nil? ? nil : self[key.to_s] } - [nil]
|
|
159
|
+
end.sort { |a,b| a[:position] <=> b[:position] }
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# keeps :position equal to a predictable value
|
|
163
|
+
# this is not important for a first-level app (ie btmlpa), but
|
|
164
|
+
# becomes important as that application is extended. If a user
|
|
165
|
+
# sets :position equal to 2.5 to emphasize that it belongs *between*
|
|
166
|
+
# item 2 and item 3, we need to somehow normalize that so that the
|
|
167
|
+
# user doesn't have to remember that there's a 2.5 in there.
|
|
168
|
+
# reorder! accomplishes this by replacing 2, 2.5 and 3 with
|
|
169
|
+
# 2, 3, 4 respectively.
|
|
170
|
+
def @menu_items.reorder!
|
|
171
|
+
#self.ordered_values.each_with_index do |item,index|
|
|
172
|
+
# item[:position] = index
|
|
173
|
+
#end
|
|
174
|
+
self
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
@menu_items
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def controller
|
|
182
|
+
self
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
else
|
|
186
|
+
base.class_eval do
|
|
187
|
+
def menu_items
|
|
188
|
+
controller.menu_items
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Rtml::Helpers::CoreHelpers
|
|
2
|
+
# Wraps an instance of ActionView::Base such that any method that is called on this
|
|
3
|
+
# object that doesn't exist will be proxied through to the ActionView object instead.
|
|
4
|
+
module ActionViewWrapper
|
|
5
|
+
def action_view
|
|
6
|
+
return root_element.action_view unless parent.nil?
|
|
7
|
+
@action_view
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
alias view action_view
|
|
11
|
+
|
|
12
|
+
# Wraps the specified view. This should only be called for a single instance of ActionView::Base.
|
|
13
|
+
def wrap_view(view)
|
|
14
|
+
@action_view = view if parent.nil?
|
|
15
|
+
return unless action_view
|
|
16
|
+
if controller
|
|
17
|
+
copy_instance_variables_from controller
|
|
18
|
+
copy_instance_variables_from controller.rtml_interface
|
|
19
|
+
end
|
|
20
|
+
copy_instance_variables_from parent if parent
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Rtml::Helpers::CoreHelpers
|
|
2
|
+
# Helper methods to deal with terminal event handling.
|
|
3
|
+
module EventHelpers
|
|
4
|
+
# Takes an event designation and an action. The event can be anything, but should
|
|
5
|
+
# be a valid TML event designation such as :menu, :cancel, :f1, :f2, etc.
|
|
6
|
+
#
|
|
7
|
+
# If the event is :error, then the action will be taken if an error occurs.
|
|
8
|
+
# If the event is any of :menu, :cancel, :stop, :enter, :up, :down, :00, [:f1 - :f9], [0 - 9]
|
|
9
|
+
# then the action will be triggered when the corresponding button has been pressed.
|
|
10
|
+
#
|
|
11
|
+
# The action should be either a String or Symbol pointing to the screen to go
|
|
12
|
+
# to in the event of the button press.
|
|
13
|
+
#
|
|
14
|
+
# Examples:
|
|
15
|
+
# on :cancel => :cancel_pressed
|
|
16
|
+
# on :menu => :menu_pressed, :error => :err_screen
|
|
17
|
+
def on(event_list)
|
|
18
|
+
event_list.each do |event,action|
|
|
19
|
+
if action.nil?
|
|
20
|
+
event_handler.unregister(event)
|
|
21
|
+
else
|
|
22
|
+
target = (action.kind_of? Hash) ? url_for(action) : action.to_screen_ref
|
|
23
|
+
event_handler.register(event, target)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Rtml::Helpers::CoreHelpers::LayoutHelpers
|
|
2
|
+
# Defines, undefines or retrieves a layout for this Element. If no arguments
|
|
3
|
+
# are given, the current layout is returned, or the parent's layout is returned
|
|
4
|
+
# if this Element has no layout (but has a parent Element).
|
|
5
|
+
#
|
|
6
|
+
# If a value of nil or false is given, the current layout will be removed, and
|
|
7
|
+
# if a layout has been inherited from the parent Element, it will not be used.
|
|
8
|
+
# If a Rtml::Core::Layout object is specified, it will be used.
|
|
9
|
+
# If any other value is specified, a new Layout will be constructed using the View
|
|
10
|
+
# associated with this screen. A second argument may optionally contain a Hash
|
|
11
|
+
# to be used as local variables within the Layout.
|
|
12
|
+
#
|
|
13
|
+
# Examples:
|
|
14
|
+
# layout document.screens[0].layout # Will use the layout and locals used by document.screens[0]
|
|
15
|
+
# layout 'layout', { :a => 5 } # Will use a new layout, with a local variable a == 5
|
|
16
|
+
# layout nil # Will use no layout for this screen
|
|
17
|
+
def layout(*args)
|
|
18
|
+
if args.empty?
|
|
19
|
+
# So basically, if @layout is nil, then it's never been explicitly set, and it should "inherit"
|
|
20
|
+
# from parent. @layout can still be false, which would mean that the user has explicitly said
|
|
21
|
+
# that this layout should not be used.
|
|
22
|
+
@layout = ((parent.nil?) ? nil : parent.layout) if @layout.nil?
|
|
23
|
+
@layout
|
|
24
|
+
else
|
|
25
|
+
case args[0].class.name
|
|
26
|
+
when 'Rtml::Core::Layout' then
|
|
27
|
+
@layout = Rtml::Core::Layout.new(action_view, args[0].name, locals_for_layout(args[0].locals))
|
|
28
|
+
when 'NilClass', 'FalseClass' then @layout = false
|
|
29
|
+
else @layout = Rtml::Core::Layout.new(action_view, args[0], locals_for_layout(args[1]))
|
|
30
|
+
end
|
|
31
|
+
@layout
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Returns the Hash of local variables that will be used for the layout for this Element.
|
|
36
|
+
# These variables will also be passed into any View Templates for use with this Element, and
|
|
37
|
+
# are inherited from parent Elements. If an argument is given, it is expected to be a Hash
|
|
38
|
+
# to be merged with the other local variables.
|
|
39
|
+
def locals_for_layout(merge_with = nil)
|
|
40
|
+
if @locals_for_layout.nil?
|
|
41
|
+
@locals_for_layout ||= HashWithIndifferentAccess.new
|
|
42
|
+
@locals_for_layout.merge! parent.locals_for_layout if parent
|
|
43
|
+
end
|
|
44
|
+
@locals_for_layout.merge! merge_with unless merge_with.nil?
|
|
45
|
+
@locals_for_layout
|
|
46
|
+
end
|
|
47
|
+
end
|