mail_engine 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardoc/checksums +17 -0
- data/.yardoc/objects/ActionMailer/Base/collect_responses_and_parts_order_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base/mail_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base/origin_mail_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base/set_layout_and_partials_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base.dat +0 -0
- data/.yardoc/objects/ActionMailer/Collector/custom_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Collector.dat +0 -0
- data/.yardoc/objects/ActionMailer.dat +0 -0
- data/.yardoc/objects/MailEngine/ActsAsMailReceiver/ClassMethods/acts_as_mail_receiver_i.dat +0 -0
- data/.yardoc/objects/MailEngine/ActsAsMailReceiver/ClassMethods.dat +0 -0
- data/.yardoc/objects/MailEngine/ActsAsMailReceiver.dat +0 -0
- data/.yardoc/objects/MailEngine/Base/_40_40configurations.dat +0 -0
- data/.yardoc/objects/MailEngine/Base/current_config_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Base/send_mail_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Base.dat +0 -0
- data/.yardoc/objects/MailEngine/Configuration/load_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Configuration.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateConfig/create_config_file_i.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateConfig.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateMigration/create_migrations_i.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateMigration.dat +0 -0
- data/.yardoc/objects/MailEngine/Engine.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/check_21_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/process_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/replace_resource_filename_in_html_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/replace_resource_url_in_html_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer.dat +0 -0
- data/.yardoc/objects/MailEngine/MailLogSubscriber/deliver_i.dat +0 -0
- data/.yardoc/objects/MailEngine/MailLogSubscriber.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base/ClassMethods/sendgrid_header_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base/ClassMethods.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base/InstanceMethods.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/data_3D_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/data_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/initialize_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/validate_config_21_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/blocks_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/bounces_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/invalidemails_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/spamreports_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/stats_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApiError.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/add_sub_val_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/add_to_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/category_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/filters_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/initialize_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/set_unique_args_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_hash_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_json_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_s_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid.dat +0 -0
- data/.yardoc/objects/MailEngine/VERSION.dat +0 -0
- data/.yardoc/objects/MailEngine/ZipProcessor/extract_all_files_c.dat +0 -0
- data/.yardoc/objects/MailEngine/ZipProcessor.dat +0 -0
- data/.yardoc/objects/MailEngine.dat +0 -0
- data/.yardoc/objects/PLACEHOLDERS_IN_LAYOUT.dat +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/Gemfile +36 -0
- data/Gemfile.lock +159 -0
- data/MIT-LICENSE +20 -0
- data/README.mkd +152 -0
- data/Rakefile +57 -0
- data/VERSION +1 -0
- data/app/controllers/mail_engine/application_controller.rb +7 -0
- data/app/controllers/mail_engine/dashboard_controller.rb +9 -0
- data/app/controllers/mail_engine/mail_logs_controller.rb +20 -0
- data/app/controllers/mail_engine/mail_schedules_controller.rb +56 -0
- data/app/controllers/mail_engine/mail_template_files_controller.rb +46 -0
- data/app/controllers/mail_engine/mail_templates_controller.rb +141 -0
- data/app/controllers/mail_engine/reports_controller.rb +34 -0
- data/app/helpers/mail_engine/mail_engine_helper.rb +30 -0
- data/app/mailers/mail_engine/mail_dispatcher.rb +59 -0
- data/app/models/mail_engine/mail_log.rb +36 -0
- data/app/models/mail_engine/mail_schedule.rb +70 -0
- data/app/models/mail_engine/mail_template.rb +270 -0
- data/app/models/mail_engine/mail_template_file.rb +31 -0
- data/app/models/mail_engine/template_partial.rb +9 -0
- data/app/uploaders/mail_engine/template_file_uploader.rb +47 -0
- data/app/uploaders/mail_engine/zip_file_uploader.rb +47 -0
- data/app/views/layouts/mail_engine/mail_engine.html.erb +112 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/header_and_footer.html.erb +10 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/header_and_footer.text.erb +3 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/none.html.erb +8 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/none.text.erb +1 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/only_footer.html.erb +9 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/only_footer.text.erb +2 -0
- data/app/views/mail_engine/dashboard/index.html.erb +64 -0
- data/app/views/mail_engine/mail_logs/index.html.erb +34 -0
- data/app/views/mail_engine/mail_logs/show.html.erb +38 -0
- data/app/views/mail_engine/mail_schedules/_form.html.erb +45 -0
- data/app/views/mail_engine/mail_schedules/edit.html.erb +16 -0
- data/app/views/mail_engine/mail_schedules/index.html.erb +50 -0
- data/app/views/mail_engine/mail_schedules/new.html.erb +13 -0
- data/app/views/mail_engine/mail_schedules/show.html.erb +44 -0
- data/app/views/mail_engine/mail_template_files/_form.html.erb +28 -0
- data/app/views/mail_engine/mail_template_files/edit.html.erb +9 -0
- data/app/views/mail_engine/mail_template_files/new.html.erb +9 -0
- data/app/views/mail_engine/mail_templates/_form.html.erb +97 -0
- data/app/views/mail_engine/mail_templates/_layout_selector.html.erb +50 -0
- data/app/views/mail_engine/mail_templates/duplicate.html.erb +41 -0
- data/app/views/mail_engine/mail_templates/edit.html.erb +16 -0
- data/app/views/mail_engine/mail_templates/index.html.erb +69 -0
- data/app/views/mail_engine/mail_templates/new.html.erb +12 -0
- data/app/views/mail_engine/mail_templates/new_by_upload.html.erb +63 -0
- data/app/views/mail_engine/mail_templates/partial_options.html.erb +28 -0
- data/app/views/mail_engine/mail_templates/preview.html.erb +1 -0
- data/app/views/mail_engine/mail_templates/preview.text.erb +1 -0
- data/app/views/mail_engine/mail_templates/show.html.erb +64 -0
- data/app/views/mail_engine/reports/charts/blocks.html.erb +21 -0
- data/app/views/mail_engine/reports/charts/bounces.html.erb +21 -0
- data/app/views/mail_engine/reports/charts/invalidemails.html.erb +19 -0
- data/app/views/mail_engine/reports/charts/spamreports.html.erb +17 -0
- data/app/views/mail_engine/reports/index.html.erb +67 -0
- data/config/routes.rb +48 -0
- data/db/migrate/20110114030841_create_table_mail_template.rb +22 -0
- data/db/migrate/20110126030525_create_mail_schedules.rb +21 -0
- data/db/migrate/20110204114145_create_template_partials.rb +13 -0
- data/db/migrate/20110206025002_create_mail_logs.rb +17 -0
- data/db/migrate/20110217062316_create_mail_template_files.rb +14 -0
- data/doc/_index.html +322 -0
- data/doc/class_list.html +36 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +310 -0
- data/doc/file_list.html +38 -0
- data/doc/frames.html +13 -0
- data/doc/js/app.js +203 -0
- data/doc/js/full_list.js +149 -0
- data/doc/js/jquery.js +154 -0
- data/doc/method_list.html +283 -0
- data/lib/mail_engine/action_mailer_patch.rb +104 -0
- data/lib/mail_engine/acts_as_mail_receiver.rb +22 -0
- data/lib/mail_engine/base.rb +26 -0
- data/lib/mail_engine/configuration.rb +11 -0
- data/lib/mail_engine/engine.rb +42 -0
- data/lib/mail_engine/generators/create_config.rb +20 -0
- data/lib/mail_engine/generators/create_migration.rb +20 -0
- data/lib/mail_engine/generators/templates/mail_engine_config.yml +14 -0
- data/lib/mail_engine/html_document_assets_replacer.rb +86 -0
- data/lib/mail_engine/mail_log_subscriber.rb +30 -0
- data/lib/mail_engine/placeholders_in_layout.rb +5 -0
- data/lib/mail_engine/sendgrid/base.rb +45 -0
- data/lib/mail_engine/sendgrid/rest_api.rb +85 -0
- data/lib/mail_engine/sendgrid/smtp_api.rb +85 -0
- data/lib/mail_engine/sendgrid.rb +9 -0
- data/lib/mail_engine/tasks/sendmail.rake +8 -0
- data/lib/mail_engine/version.rb +3 -0
- data/lib/mail_engine/zip_processor.rb +51 -0
- data/lib/mail_engine.rb +17 -0
- data/mail_engine.gemspec +422 -0
- data/screenshots/bounce_report.png +0 -0
- data/screenshots/dashboard.png +0 -0
- data/screenshots/editing_mail_template.png +0 -0
- data/screenshots/logs.png +0 -0
- data/screenshots/new_by_upload.png +0 -0
- data/screenshots/reports.png +0 -0
- data/screenshots/schedule.png +0 -0
- data/screenshots/select_layout_partial.png +0 -0
- data/screenshots/templates.png +0 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/controllers/application_controller.rb +11 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/user_mailer.rb +36 -0
- data/test/dummy/app/models/user.rb +10 -0
- data/test/dummy/config/application.rb +52 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +52 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +47 -0
- data/test/dummy/config/environments/production.rb +49 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/locales/zh.yml +2 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/migrate/20110114030841_create_table_mail_template.rb +22 -0
- data/test/dummy/db/migrate/20110125094530_create_users.rb +16 -0
- data/test/dummy/db/migrate/20110126030525_create_mail_schedules.rb +21 -0
- data/test/dummy/db/migrate/20110204114145_create_template_partials.rb +13 -0
- data/test/dummy/db/migrate/20110206025002_create_mail_logs.rb +17 -0
- data/test/dummy/db/migrate/20110217062316_create_mail_template_files.rb +14 -0
- data/test/dummy/db/schema.rb +78 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/images/mail_engine/header_and_footer_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/logo.gif +0 -0
- data/test/dummy/public/images/mail_engine/logo.png +0 -0
- data/test/dummy/public/images/mail_engine/none_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/only_footer_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/unselect_header_and_footer_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/unselect_none_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/unselect_only_footer_layout.png +0 -0
- data/test/dummy/public/javascripts/jquery.iframe-auto-height.plugin.js +50 -0
- data/test/dummy/public/javascripts/jquery.js +16 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/ajaxLoader.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/close.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/next.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/prev.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal-ie6.js +186 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal-ie6.min.js +9 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal.custom.js +1599 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal.custom.min.js +34 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/styles/nyroModal.css +102 -0
- data/test/dummy/public/javascripts/jquery.string.js +425 -0
- data/test/dummy/public/javascripts/mail_engine_application.js +2 -0
- data/test/dummy/public/javascripts/markitup/jquery.markitup.js +564 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/bold.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/css.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/italic.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/picture.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/stroke.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/tag.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_center.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_justify.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_left.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_right.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_indent.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_letterspacing.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_linespacing.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_lowercase.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_bottom.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_left.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_right.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_top.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_uppercase.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/readme.txt +28 -0
- data/test/dummy/public/javascripts/markitup/sets/css/set.js +52 -0
- data/test/dummy/public/javascripts/markitup/sets/css/style.css +72 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/bold.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/clean.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/image.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/italic.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/link.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/picture.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/preview.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/stroke.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/set.js +27 -0
- data/test/dummy/public/javascripts/markitup/sets/default/style.css +27 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/bold.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/clean.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h1.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h2.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h3.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h4.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h5.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h6.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/image.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/italic.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/link.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/list-bullet.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/list-item.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/list-numeric.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/paragraph.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/picture.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/preview.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/stroke.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/readme.txt +11 -0
- data/test/dummy/public/javascripts/markitup/sets/html/set.js +40 -0
- data/test/dummy/public/javascripts/markitup/sets/html/style.css +59 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-container.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-bbcode.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-dotclear.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-html.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-json.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-markdown.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-textile.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-wiki.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-xml.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/handle.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/menu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/submenu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/style.css +147 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/images/handle.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/images/menu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/images/submenu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/style.css +118 -0
- data/test/dummy/public/javascripts/markitup/templates/preview.css +5 -0
- data/test/dummy/public/javascripts/markitup/templates/preview.html +11 -0
- data/test/dummy/public/javascripts/rails.js +132 -0
- data/test/dummy/public/stylesheets/.gitkeep +0 -0
- data/test/dummy/public/stylesheets/application.css +0 -0
- data/test/dummy/public/stylesheets/style.css +681 -0
- data/test/dummy/script/rails +6 -0
- data/test/factories.rb +88 -0
- data/test/fixtures/files/compress_by_dir.zip +0 -0
- data/test/fixtures/files/compress_by_file.zip +0 -0
- data/test/fixtures/files/image.png +0 -0
- data/test/functional/mail_engine/mail_dispatcher_test.rb +8 -0
- data/test/functional/mail_engine/mail_schedules_controller_controller_test.rb +8 -0
- data/test/functional/mail_engine/mail_templates_controller_controller_test.rb +8 -0
- data/test/support/integration_case.rb +5 -0
- data/test/test_helper.rb +35 -0
- data/test/unit/mail_engine/mail_log_test.rb +8 -0
- data/test/unit/mail_engine/mail_schedule_test.rb +40 -0
- data/test/unit/mail_engine/mail_template_file_test.rb +21 -0
- data/test/unit/mail_engine/mail_template_test.rb +77 -0
- data/test/unit/mail_engine/template_partial_test.rb +8 -0
- metadata +597 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>Subject: <%= @mail_log.subject %></h2>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<div class="post-body">
|
7
|
+
<table class="data-table largest">
|
8
|
+
<tr>
|
9
|
+
<td>recipient</td>
|
10
|
+
<td><%= @mail_log.recipient %></td>
|
11
|
+
</tr>
|
12
|
+
<tr>
|
13
|
+
<td>sender</td>
|
14
|
+
<td><%= @mail_log.sender %></td>
|
15
|
+
</tr>
|
16
|
+
<tr>
|
17
|
+
<td>Mime type</td>
|
18
|
+
<td><%= @mail_log.mime_type %></td>
|
19
|
+
</tr>
|
20
|
+
<tr>
|
21
|
+
<td>Mail template path</td>
|
22
|
+
<td><pre><%= @mail_log.mail_template_path %></pre></td>
|
23
|
+
</tr>
|
24
|
+
<tr>
|
25
|
+
<td>Raw Body</td>
|
26
|
+
<td><pre><%= @mail_log.raw_body %></pre></td>
|
27
|
+
</tr>
|
28
|
+
<tr>
|
29
|
+
<td>Sent at</td>
|
30
|
+
<td><%= @mail_log.created_at %></td>
|
31
|
+
</tr>
|
32
|
+
</table>
|
33
|
+
</div>
|
34
|
+
<br />
|
35
|
+
<h2>
|
36
|
+
<%= link_to 'Back', mail_logs_path %>
|
37
|
+
</h2>
|
38
|
+
</div>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<% if @mail_schedule.errors.any? %>
|
2
|
+
<div id="error_explanation">
|
3
|
+
<h2><%= pluralize(@mail_schedule.errors.count, "error") %> prohibited this mail_schedule from being saved:</h2>
|
4
|
+
|
5
|
+
<ul>
|
6
|
+
<% @mail_schedule.errors.full_messages.each do |msg| %>
|
7
|
+
<li><%= msg %></li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<div class="field">
|
14
|
+
<%= f.label :name %><br />
|
15
|
+
<%= f.text_field :name, :class => "text" %>
|
16
|
+
</div>
|
17
|
+
<div class="field">
|
18
|
+
<%= f.label :mail_template_id %><br />
|
19
|
+
<%= f.select :mail_template_id, MailEngine::MailTemplate.where(:for_marketing => true).map {|t| [t.name, t.id]} %>
|
20
|
+
</div>
|
21
|
+
<div class="field">
|
22
|
+
<%= f.label :user_group %><br />
|
23
|
+
<%= f.select :user_group, User.groups %>
|
24
|
+
</div>
|
25
|
+
<div class="field">
|
26
|
+
<%= f.label :count %><br />
|
27
|
+
<%= f.select :count, [['Unlimited', 0]] + (1..10).to_a.map {|i| [i,i]} %>
|
28
|
+
</div>
|
29
|
+
<div class="field">
|
30
|
+
<%= f.label :period %><br />
|
31
|
+
<%= f.select :period, ['once', 'daily', 'weekly', 'monthly', 'yearly'] %>
|
32
|
+
</div>
|
33
|
+
<div class="field">
|
34
|
+
<%= f.label :first_send_at, "First Send At" %><br />
|
35
|
+
<%= f.datetime_select :first_send_at, :start_year => Time.now.year, :include_seconds => false, :minute_step => 15 %>
|
36
|
+
</div>
|
37
|
+
<div class="field">
|
38
|
+
<%= f.label :payload %><br />
|
39
|
+
<% User.payload_columns.each do |column| %>
|
40
|
+
<%= check_box_tag "#{f.object_name}[payload][]", column, f.object.payload.try(:include?, column) %> <%= column %><br />
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
<div class="actions">
|
44
|
+
<%= f.submit :class => "button" %>
|
45
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>Editing Mail Schedule</h2>
|
4
|
+
</div>
|
5
|
+
<div class="post-body">
|
6
|
+
<%= form_for( @mail_schedule, :url => mail_schedule_path(@mail_schedule) ) do |f| %>
|
7
|
+
<%= render 'form', :f => f %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
<br />
|
11
|
+
<h2>
|
12
|
+
<%= link_to 'Back', mail_schedules_path %>
|
13
|
+
|
|
14
|
+
<%= link_to 'Show', mail_schedule_path(@mail_schedule) %>
|
15
|
+
</h2>
|
16
|
+
</div>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title"><h2>System Mail Schedules</h2></div>
|
3
|
+
<div class="post-body">
|
4
|
+
<% show_no_record(@mail_schedules) do %>
|
5
|
+
<table class="data-table">
|
6
|
+
<tr>
|
7
|
+
<th>Name</th>
|
8
|
+
<th>Template</th>
|
9
|
+
<th>User Group</th>
|
10
|
+
<th>Total Count</th>
|
11
|
+
<th>Sent Count</th>
|
12
|
+
<th>Period</th>
|
13
|
+
<th>Payload</th>
|
14
|
+
<th></th>
|
15
|
+
</tr>
|
16
|
+
|
17
|
+
<% @mail_schedules.each do |mail_schedule| %>
|
18
|
+
<tr class="even">
|
19
|
+
<td><%= mail_schedule.name %></td>
|
20
|
+
<td><%= mail_schedule.mail_template.name %></td>
|
21
|
+
<td><%= mail_schedule.user_group %></td>
|
22
|
+
<td><%= mail_schedule.count %></td>
|
23
|
+
<td><%= mail_schedule.sent_count %></td>
|
24
|
+
<td><%= mail_schedule.period %></td>
|
25
|
+
<td><%= mail_schedule.payload %></td>
|
26
|
+
<td>
|
27
|
+
<%= link_to 'Show', mail_schedule_path(mail_schedule) %>
|
28
|
+
<%= link_to 'Edit', edit_mail_schedule_path(mail_schedule) %>
|
29
|
+
<%= link_to 'Destroy', mail_schedule_path(mail_schedule), :confirm => 'Are you sure?', :method => :delete %>
|
30
|
+
<br>
|
31
|
+
<%= form_tag send_test_mail_mail_schedule_path(mail_schedule), :remote => true do %>
|
32
|
+
<%= text_field_tag :recipient, "", :size => 10, :class => "text" %>
|
33
|
+
<%= submit_tag 'Send Test', :class => "button" %>
|
34
|
+
<% end %>
|
35
|
+
</td>
|
36
|
+
</tr>
|
37
|
+
<% end %>
|
38
|
+
</table>
|
39
|
+
|
40
|
+
<div class="left">
|
41
|
+
<%= will_paginate @mail_schedules %>
|
42
|
+
</div>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
<h5 class="right">
|
46
|
+
<%= link_to 'New Mail Schedule', new_mail_schedule_path %>
|
47
|
+
</h5>
|
48
|
+
<div class="clearer"> </div>
|
49
|
+
</div>
|
50
|
+
</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>
|
4
|
+
<%= link_to 'Back', mail_schedules_path %>
|
5
|
+
New Mail Schedules
|
6
|
+
</h2>
|
7
|
+
</div>
|
8
|
+
<div class="post-body">
|
9
|
+
<%= form_for(@mail_schedule, :url => mail_schedules_path) do |f| %>
|
10
|
+
<%= render 'form', :f => f %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
</div>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>Name: <%= @mail_schedule.name %></h2>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<div class="post-body">
|
7
|
+
<table class="data-table largest">
|
8
|
+
<tr>
|
9
|
+
<td>Name</td>
|
10
|
+
<td><%= @mail_schedule.name %></td>
|
11
|
+
</tr>
|
12
|
+
<tr>
|
13
|
+
<td>Template</td>
|
14
|
+
<td><%= @mail_schedule.mail_template.name %></td>
|
15
|
+
</tr>
|
16
|
+
<tr>
|
17
|
+
<td>User Group</td>
|
18
|
+
<td><%= @mail_schedule.user_group %></td>
|
19
|
+
</tr>
|
20
|
+
<tr>
|
21
|
+
<td>Total Count</td>
|
22
|
+
<td><%= @mail_schedule.count %></td>
|
23
|
+
</tr>
|
24
|
+
<tr>
|
25
|
+
<td>Sent Count</td>
|
26
|
+
<td><%= @mail_schedule.sent_count %></td>
|
27
|
+
</tr>
|
28
|
+
<tr>
|
29
|
+
<td>Period</td>
|
30
|
+
<td><%= @mail_schedule.period %></td>
|
31
|
+
</tr>
|
32
|
+
<tr>
|
33
|
+
<td>Payload</td>
|
34
|
+
<td><%= @mail_schedule.payload %></td>
|
35
|
+
</tr>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
<br />
|
39
|
+
<h2>
|
40
|
+
<%= link_to 'Edit', edit_mail_schedule_path(@mail_schedule) %>
|
41
|
+
|
|
42
|
+
<%= link_to 'Back', mail_schedules_path %>
|
43
|
+
</h2>
|
44
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% if f.object.errors.any? %>
|
2
|
+
<div id="error_explanation">
|
3
|
+
<h2><%= pluralize(f.object.errors.count, "error") %> prohibited this mail_schedule from being saved:</h2>
|
4
|
+
|
5
|
+
<ul>
|
6
|
+
<% f.object.errors.full_messages.each do |msg| %>
|
7
|
+
<li><%= msg %></li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<div class="field">
|
14
|
+
<%= f.label :file %><br />
|
15
|
+
<%= f.file_field :file, :class => "text" %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<% if f.object.attributes["file"] %>
|
19
|
+
<p>
|
20
|
+
<b><%= link_to f.object.attributes["file"], f.object.file.url, :target => '_blank' %></b>
|
21
|
+
<i><%= "http://#{request.host}#{f.object.file.url}" %></i>
|
22
|
+
</p>
|
23
|
+
<%= image_tag f.object.file.url, :width => 200 if f.object.image? %>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<div class="actions">
|
27
|
+
<%= f.submit :class => "button" %>
|
28
|
+
</div>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-body">
|
3
|
+
<%= form_for [@mail_template, @mail_template_file],
|
4
|
+
:url => mail_template_mail_template_file_path(@mail_template, @mail_template_file),
|
5
|
+
:html => {:multipart => true} do |f| %>
|
6
|
+
<%= render 'form', :f => f %>
|
7
|
+
<% end %>
|
8
|
+
</div>
|
9
|
+
</div>
|
@@ -0,0 +1,97 @@
|
|
1
|
+
<% if @mail_template.errors.any? %>
|
2
|
+
<div id="error_explanation">
|
3
|
+
<h2><%= pluralize(@mail_template.errors.count, "error") %> prohibited this mail_template from being saved:</h2>
|
4
|
+
|
5
|
+
<ul>
|
6
|
+
<% @mail_template.errors.full_messages.each do |msg| %>
|
7
|
+
<li><%= msg %></li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<div class="field">
|
14
|
+
<%= f.label :name %><br />
|
15
|
+
<%= f.text_field :name, :class => "text" %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="field">
|
19
|
+
<%= f.label :path, 'Template Path' %><br />
|
20
|
+
<%= f.text_field :path, :class => "text" %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div class="field">
|
24
|
+
<%= f.label :locale %><br />
|
25
|
+
<%= f.select :locale, I18n.available_locales.map(&:to_s) %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="field">
|
29
|
+
<%= f.label :format, "Format" %><br />
|
30
|
+
<%= f.select :format, ['text', 'html'] %>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<!-- layout selecter -->
|
34
|
+
<%= render 'layout_selector', :f => f if params[:type] != 'partial' and f.object.partial != true %>
|
35
|
+
|
36
|
+
<% if @mail_template.persisted? %>
|
37
|
+
<div class="field">
|
38
|
+
<label>Files</label>
|
39
|
+
|
40
|
+
<% if @mail_template.mail_template_files.present? %>
|
41
|
+
<% @mail_template.mail_template_files.each do |file| %>
|
42
|
+
<p>
|
43
|
+
<div style="margin-bottom: 5px">
|
44
|
+
<b><%= link_to file.attributes["file"], file.url %></b>
|
45
|
+
<input type="text" class="text" style="width:700px" value="<%= "http://#{request.host}#{file.url}" %>" />
|
46
|
+
<b><%= link_to "[edit]", edit_mail_template_mail_template_file_path(@mail_template, file), :class => "modal_link", :blank => "_blank" %></b>
|
47
|
+
<b><%= link_to "[delete]", mail_template_mail_template_file_path(@mail_template, file), :method => :delete, :confirm => 'Are you sure?', :remote => true %></b>
|
48
|
+
</div>
|
49
|
+
<%= image_tag file.url if file.image? %>
|
50
|
+
</p>
|
51
|
+
<hr />
|
52
|
+
<% end %>
|
53
|
+
<% end %>
|
54
|
+
<div class="clearer"></div>
|
55
|
+
|
56
|
+
<h3 class="right"><%= link_to "New File", new_mail_template_mail_template_file_path(@mail_template), :class => "modal_link" %></h3>
|
57
|
+
<div class="clearer"></div>
|
58
|
+
</div>
|
59
|
+
<% end %>
|
60
|
+
|
61
|
+
<% if @mail_template.zip_file.present? %>
|
62
|
+
<div class="field">
|
63
|
+
<label>ZIP Files</label>
|
64
|
+
<h4><%= link_to @mail_template.attributes["zip_file"], @mail_template.zip_file.url %></h4>
|
65
|
+
<p class="hint">If you want to do batch editing, we recommend you to download the original file then edit it on your local computer.</p>
|
66
|
+
</div>
|
67
|
+
<% end %>
|
68
|
+
|
69
|
+
<!-- the editor -->
|
70
|
+
<div class="field">
|
71
|
+
<%= f.label :body %><br />
|
72
|
+
<%= f.text_area :body, :class => "markitup w910", :rows => "10" %>
|
73
|
+
</div>
|
74
|
+
|
75
|
+
<%= f.hidden_field :for_marketing, :value => (f.object.for_marketing || params[:type] == 'marketing') %>
|
76
|
+
<%= f.hidden_field :partial, :value => (f.object.partial || params[:type] == 'partial') %>
|
77
|
+
|
78
|
+
<div class="actions">
|
79
|
+
<%= f.submit :class => "button" %>
|
80
|
+
</div>
|
81
|
+
|
82
|
+
<script>
|
83
|
+
$(function(){
|
84
|
+
// when the format chenged, should reload the same format of partial options.
|
85
|
+
$("#mail_engine_mail_template_format, #mail_engine_mail_template_locale").change(function(){
|
86
|
+
$(".layout_option:checked").click();
|
87
|
+
});
|
88
|
+
|
89
|
+
// init markitup
|
90
|
+
$.extend(mySettings, {
|
91
|
+
previewParserPath: '~/preview.' + $("#mail_engine_mail_template_format").val(),
|
92
|
+
previewParserVar: 'new_body',
|
93
|
+
previewAutoRefresh: true
|
94
|
+
});
|
95
|
+
$(".markitup").markItUp(mySettings);
|
96
|
+
});
|
97
|
+
</script>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<div class="field">
|
2
|
+
<%= f.label :layout, "Layout" %>
|
3
|
+
<div class="clearer"></div>
|
4
|
+
|
5
|
+
<!-- list all kinds of layouts -->
|
6
|
+
<% PLACEHOLDERS_IN_LAYOUT.keys.each do |layout_name| %>
|
7
|
+
<div class="layout_option_item left">
|
8
|
+
<%= f.radio_button :layout, layout_name, :class => "layout_option hidden", :ref => layout_name %>
|
9
|
+
|
10
|
+
<label for="mail_engine_mail_template_layout_<%= layout_name %>" style="font-size: 11px">
|
11
|
+
<img class="layout_option_image" src="/images/mail_engine/unselect_<%= layout_name %>_layout.png"/>
|
12
|
+
</label>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
<div class="clearer"></div>
|
16
|
+
|
17
|
+
<% PLACEHOLDERS_IN_LAYOUT.keys.each do |layout_name| %>
|
18
|
+
<!-- list all placeholders -->
|
19
|
+
<div class="placeholder_list <%= layout_name %> quiet" style="margin-left: 7px"></div>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<p class="hint">Choose a template layout.</p>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<script>
|
26
|
+
$(function(){
|
27
|
+
function resetAllImageSelectionState() {
|
28
|
+
$("img.layout_option_image").each(function(i){
|
29
|
+
if(!$.string(this.src).include('unselect')) {
|
30
|
+
$(this).attr("src", $.string(this.src).gsub("images/mail_engine/", "images/mail_engine/unselect_").str);
|
31
|
+
}
|
32
|
+
});
|
33
|
+
}
|
34
|
+
|
35
|
+
$("input[type=radio].layout_option").click(function(){
|
36
|
+
// change image to selected state.
|
37
|
+
resetAllImageSelectionState();
|
38
|
+
var image_el = $(this).next("label").children('img');
|
39
|
+
var selected_layout_image_name = $.string(image_el.attr('src')).gsub("unselect_", "").str
|
40
|
+
image_el.attr('src', selected_layout_image_name);
|
41
|
+
|
42
|
+
var layout_name = $(this).attr('ref');
|
43
|
+
$('.placeholder_list').html("");
|
44
|
+
$("." + layout_name).load("<%= partial_options_mail_templates_path %>", {id:<%= f.object.id||"''" %>, layout:layout_name, template_format:$('#mail_engine_mail_template_format').val(), template_locale:$('#mail_engine_mail_template_locale').val()});
|
45
|
+
});
|
46
|
+
|
47
|
+
// load options when editing.
|
48
|
+
$("input[type=radio].layout_option:checked").click();
|
49
|
+
});
|
50
|
+
</script>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>
|
4
|
+
Duplicate Mail Tempate
|
5
|
+
</h2>
|
6
|
+
</div>
|
7
|
+
<div class="post-body">
|
8
|
+
<%= form_for(@mail_template, :url => duplicate_mail_template_path(@mail_template, :type => params[:type])) do |f| %>
|
9
|
+
<% if @duplicated_mail_template.errors.any? %>
|
10
|
+
<div id="error_explanation">
|
11
|
+
<h2><%= pluralize(@duplicated_mail_template.errors.count, "error") %> prohibited this mail_template from being saved:</h2>
|
12
|
+
|
13
|
+
<ul>
|
14
|
+
<% @duplicated_mail_template.errors.full_messages.each do |msg| %>
|
15
|
+
<li><%= msg %></li>
|
16
|
+
<% end %>
|
17
|
+
</ul>
|
18
|
+
</div>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<div class="field">
|
22
|
+
<%= f.label :name %><br />
|
23
|
+
<%= f.text_field :name, :class => "text" %>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div class="field">
|
27
|
+
<%= f.label :path, 'Template Path' %><br />
|
28
|
+
<%= f.text_field :path, :class => "text" %>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<div class="field">
|
32
|
+
<%= f.label :locale %><br />
|
33
|
+
<%= f.select :locale, I18n.available_locales.map(&:to_s) %>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div class="actions">
|
37
|
+
<%= f.submit "Duplicate", :class => "button" %>
|
38
|
+
</div>
|
39
|
+
<% end %>
|
40
|
+
</div>
|
41
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>Editing Mail Template</h2>
|
4
|
+
</div>
|
5
|
+
<div class="post-body">
|
6
|
+
<%= form_for(@mail_template, :url => mail_template_path(@mail_template)) do |f| %>
|
7
|
+
<%= render 'form', :f => f %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
<br />
|
11
|
+
<h2>
|
12
|
+
<%= link_to 'Back', mail_templates_path(:type => @mail_template.type) %>
|
13
|
+
|
|
14
|
+
<%= link_to 'Show', mail_template_path(@mail_template) %>
|
15
|
+
</h2>
|
16
|
+
</div>
|
@@ -0,0 +1,69 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title"><h2><%= mail_template_list_title(params[:type]) %></h2></div>
|
3
|
+
<div class="post-body">
|
4
|
+
<% show_no_record(@mail_templates) do %>
|
5
|
+
<table class="data-table">
|
6
|
+
<tr>
|
7
|
+
<th>Name</th>
|
8
|
+
<th>Template Path</th>
|
9
|
+
<% if params[:type] != 'partial' %>
|
10
|
+
<th>Layout</th>
|
11
|
+
<th>Partials</th>
|
12
|
+
<% end %>
|
13
|
+
<th>Variations</th>
|
14
|
+
</tr>
|
15
|
+
|
16
|
+
<% @mail_templates.each do |mail_template| %>
|
17
|
+
<tr class="even">
|
18
|
+
<td><%= mail_template.name %></td>
|
19
|
+
<td><%= mail_template.path %></td>
|
20
|
+
<% if params[:type] != 'partial' %>
|
21
|
+
<td><%= mail_template.layout %></td>
|
22
|
+
<td><%= mail_template.partials.map(&:name).join(" , ") %></td>
|
23
|
+
<% end %>
|
24
|
+
<td>
|
25
|
+
<table style="margin-bottom: 0px">
|
26
|
+
<% mail_template.variations.group_by(&:locale).each do |locale, templates| %>
|
27
|
+
<tr>
|
28
|
+
<td colspan="3" style="background-color: grey; font-weight: bold; color: white; padding: 2px 5px"><%= locale.humanize %></td>
|
29
|
+
</tr>
|
30
|
+
<% templates.each do |template| %>
|
31
|
+
<tr>
|
32
|
+
<td><%= template.locale %>.<%= template.format %></td>
|
33
|
+
<td>
|
34
|
+
<%= link_to 'Show', mail_template_path(template) %>
|
35
|
+
<%= link_to 'Edit', edit_mail_template_path(template) %>
|
36
|
+
<%= link_to 'Destroy', mail_template_path(template, :type => params[:type]), :confirm => 'Are you sure?', :method => :delete %>
|
37
|
+
<%= link_to 'Duplicate', duplicate_mail_template_path(template, :type => params[:type]), :class => "modal_link" %>
|
38
|
+
</td>
|
39
|
+
<% unless mail_template.partial? %>
|
40
|
+
<td>
|
41
|
+
<%= form_tag send_test_mail_mail_template_path(template), :remote => true do %>
|
42
|
+
<%= text_field_tag :recipient, "", :size => 10, :class => "text" %>
|
43
|
+
<%= submit_tag 'Send Test', :class => "button" %>
|
44
|
+
<% end %>
|
45
|
+
</td>
|
46
|
+
<% end %>
|
47
|
+
</tr>
|
48
|
+
<% end %>
|
49
|
+
<% end %>
|
50
|
+
</table>
|
51
|
+
</td>
|
52
|
+
</tr>
|
53
|
+
<% end %>
|
54
|
+
</table>
|
55
|
+
|
56
|
+
<div class="left">
|
57
|
+
<%= will_paginate @mail_templates %>
|
58
|
+
</div>
|
59
|
+
<% end %>
|
60
|
+
|
61
|
+
<h5 class="quiet right">
|
62
|
+
Create new mail By:
|
63
|
+
<%= link_to 'Input html or text', new_mail_template_path(:type => params[:type]) %>
|
64
|
+
or
|
65
|
+
<%= link_to "Uploading zip file", new_by_upload_mail_templates_path(:type => params[:type]) %>
|
66
|
+
</h5>
|
67
|
+
<div class="clearer"> </div>
|
68
|
+
</div>
|
69
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>
|
4
|
+
Create New <%= mail_template_list_title(params[:type]) %>
|
5
|
+
</h2>
|
6
|
+
</div>
|
7
|
+
<div class="post-body">
|
8
|
+
<%= form_for(@mail_template, :url => mail_templates_path) do |f| %>
|
9
|
+
<%= render 'form', :f => f %>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
12
|
+
</div>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<div class="post-title">
|
3
|
+
<h2>
|
4
|
+
Create New <%= mail_template_list_title(params[:type]) %>
|
5
|
+
</h2>
|
6
|
+
</div>
|
7
|
+
<div class="post-body">
|
8
|
+
<%= form_for(@mail_template, :url => create_by_upload_mail_templates_path, :html => {:multipart => true}) do |f| %>
|
9
|
+
<% if @mail_template.errors.any? %>
|
10
|
+
<div id="error_explanation">
|
11
|
+
<h2><%= pluralize(@mail_template.errors.count, "error") %> prohibited this mail_template from being saved:</h2>
|
12
|
+
|
13
|
+
<ul>
|
14
|
+
<% @mail_template.errors.full_messages.each do |msg| %>
|
15
|
+
<li><%= msg %></li>
|
16
|
+
<% end %>
|
17
|
+
</ul>
|
18
|
+
</div>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<div class="field">
|
22
|
+
<%= f.label :name %><br />
|
23
|
+
<%= f.text_field :name, :class => "text" %>
|
24
|
+
</div>
|
25
|
+
<div class="field">
|
26
|
+
<%= f.label :path, 'Template Path' %><br />
|
27
|
+
<%= f.text_field :path, :class => "text" %>
|
28
|
+
</div>
|
29
|
+
<div class="field">
|
30
|
+
<%= f.label :locale %><br />
|
31
|
+
<%= f.select :locale, I18n.available_locales.map(&:to_s) %>
|
32
|
+
</div>
|
33
|
+
<div class="field">
|
34
|
+
<label>Zip File</label><br />
|
35
|
+
<% if @mail_template.zip_file.present? %>
|
36
|
+
<div class="loud">Do you to change this uploaded file: <b><%= link_to File.basename(@mail_template.zip_file_url), @mail_template.zip_file_url %></b> ?</div>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<%= f.file_field :zip_file, :style => 'padding: 10px;' %>
|
40
|
+
<%= f.hidden_field :zip_file_cache %>
|
41
|
+
|
42
|
+
<h5>Note:</h5>
|
43
|
+
<ol>
|
44
|
+
<li>Only include Image files(png, gif, jpg), css files and html file.</li>
|
45
|
+
<li>Only one html file.</li>
|
46
|
+
<li>File should less than 1MB.</li>
|
47
|
+
</ol>
|
48
|
+
|
49
|
+
|
50
|
+
</div>
|
51
|
+
|
52
|
+
<%= f.hidden_field :for_marketing, :value => (f.object.for_marketing || params[:type] == 'marketing') %>
|
53
|
+
<%= f.hidden_field :partial, :value => (f.object.partial || params[:type] == 'partial') %>
|
54
|
+
<%= f.hidden_field :format %>
|
55
|
+
<%= f.hidden_field :layout %>
|
56
|
+
<%= f.hidden_field :create_by_upload, :value => true %>
|
57
|
+
|
58
|
+
<div class="actions">
|
59
|
+
<%= f.submit :class => "button" %>
|
60
|
+
</div>
|
61
|
+
<% end %>
|
62
|
+
</div>
|
63
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% @tmp_mail_template.template_partials.each do |template_partial| %>
|
2
|
+
<%= fields_for "mail_engine_mail_template[template_partials_attributes][#{template_partial.id || template_partial.object_id}]", template_partial do |partial_form| %>
|
3
|
+
<h3><%= partial_form.object.placeholder_name %></h3>
|
4
|
+
|
5
|
+
<!-- list all partials -->
|
6
|
+
<% show_no_record partials = MailEngine::MailTemplate.partial.where(:format => params[:template_format], :locale => params[:template_locale]) do %>
|
7
|
+
<ul class="partial_option_list">
|
8
|
+
<% partials.each do |partial| %>
|
9
|
+
<li>
|
10
|
+
<%= partial_form.radio_button :partial_id, partial.id, :class => "placeholder_option" %>
|
11
|
+
<label for="mail_engine_mail_template_template_partials_attributes_<%= template_partial.id || template_partial.object_id %>_partial_id_<%= partial.id %>" style="font-size: 13px">
|
12
|
+
<%= partial.name.to_s.humanize %>
|
13
|
+
<%= link_to "Edit", edit_mail_template_path(partial), :target => "_blank" %>
|
14
|
+
<iframe width="100%" class="bordered" src="<%= body_mail_template_path(partial, :format => partial.format, :locale => partial.locale) %>"></iframe>
|
15
|
+
</label>
|
16
|
+
<%= partial_form.hidden_field :placeholder_name, :value => partial_form.object.placeholder_name %>
|
17
|
+
</li>
|
18
|
+
<% end %>
|
19
|
+
</ul>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<script>
|
25
|
+
$(function(){
|
26
|
+
jQuery('iframe').iframeAutoHeight({heightOffset: 20});
|
27
|
+
});
|
28
|
+
</script>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= raw(@mail_template.body) %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= @mail_template.body %>
|