mail_engine 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. data/.yardoc/checksums +17 -0
  2. data/.yardoc/objects/ActionMailer/Base/collect_responses_and_parts_order_i.dat +0 -0
  3. data/.yardoc/objects/ActionMailer/Base/mail_i.dat +0 -0
  4. data/.yardoc/objects/ActionMailer/Base/origin_mail_i.dat +0 -0
  5. data/.yardoc/objects/ActionMailer/Base/set_layout_and_partials_i.dat +0 -0
  6. data/.yardoc/objects/ActionMailer/Base.dat +0 -0
  7. data/.yardoc/objects/ActionMailer/Collector/custom_i.dat +0 -0
  8. data/.yardoc/objects/ActionMailer/Collector.dat +0 -0
  9. data/.yardoc/objects/ActionMailer.dat +0 -0
  10. data/.yardoc/objects/MailEngine/ActsAsMailReceiver/ClassMethods/acts_as_mail_receiver_i.dat +0 -0
  11. data/.yardoc/objects/MailEngine/ActsAsMailReceiver/ClassMethods.dat +0 -0
  12. data/.yardoc/objects/MailEngine/ActsAsMailReceiver.dat +0 -0
  13. data/.yardoc/objects/MailEngine/Base/_40_40configurations.dat +0 -0
  14. data/.yardoc/objects/MailEngine/Base/current_config_c.dat +0 -0
  15. data/.yardoc/objects/MailEngine/Base/send_mail_c.dat +0 -0
  16. data/.yardoc/objects/MailEngine/Base.dat +0 -0
  17. data/.yardoc/objects/MailEngine/Configuration/load_c.dat +0 -0
  18. data/.yardoc/objects/MailEngine/Configuration.dat +0 -0
  19. data/.yardoc/objects/MailEngine/CreateConfig/create_config_file_i.dat +0 -0
  20. data/.yardoc/objects/MailEngine/CreateConfig.dat +0 -0
  21. data/.yardoc/objects/MailEngine/CreateMigration/create_migrations_i.dat +0 -0
  22. data/.yardoc/objects/MailEngine/CreateMigration.dat +0 -0
  23. data/.yardoc/objects/MailEngine/Engine.dat +0 -0
  24. data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/check_21_c.dat +0 -0
  25. data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/process_c.dat +0 -0
  26. data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/replace_resource_filename_in_html_c.dat +0 -0
  27. data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/replace_resource_url_in_html_c.dat +0 -0
  28. data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer.dat +0 -0
  29. data/.yardoc/objects/MailEngine/MailLogSubscriber/deliver_i.dat +0 -0
  30. data/.yardoc/objects/MailEngine/MailLogSubscriber.dat +0 -0
  31. data/.yardoc/objects/MailEngine/Sendgrid/Base/ClassMethods/sendgrid_header_i.dat +0 -0
  32. data/.yardoc/objects/MailEngine/Sendgrid/Base/ClassMethods.dat +0 -0
  33. data/.yardoc/objects/MailEngine/Sendgrid/Base/InstanceMethods.dat +0 -0
  34. data/.yardoc/objects/MailEngine/Sendgrid/Base.dat +0 -0
  35. data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/data_3D_i.dat +0 -0
  36. data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/data_i.dat +0 -0
  37. data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/initialize_i.dat +0 -0
  38. data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/validate_config_21_i.dat +0 -0
  39. data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting.dat +0 -0
  40. data/.yardoc/objects/MailEngine/Sendgrid/RestApi/blocks_c.dat +0 -0
  41. data/.yardoc/objects/MailEngine/Sendgrid/RestApi/bounces_c.dat +0 -0
  42. data/.yardoc/objects/MailEngine/Sendgrid/RestApi/invalidemails_c.dat +0 -0
  43. data/.yardoc/objects/MailEngine/Sendgrid/RestApi/spamreports_c.dat +0 -0
  44. data/.yardoc/objects/MailEngine/Sendgrid/RestApi/stats_c.dat +0 -0
  45. data/.yardoc/objects/MailEngine/Sendgrid/RestApi.dat +0 -0
  46. data/.yardoc/objects/MailEngine/Sendgrid/RestApiError.dat +0 -0
  47. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/add_sub_val_i.dat +0 -0
  48. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/add_to_i.dat +0 -0
  49. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/category_i.dat +0 -0
  50. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/filters_i.dat +0 -0
  51. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/initialize_i.dat +0 -0
  52. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/set_unique_args_i.dat +0 -0
  53. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_hash_i.dat +0 -0
  54. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_json_i.dat +0 -0
  55. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_s_i.dat +0 -0
  56. data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi.dat +0 -0
  57. data/.yardoc/objects/MailEngine/Sendgrid.dat +0 -0
  58. data/.yardoc/objects/MailEngine/VERSION.dat +0 -0
  59. data/.yardoc/objects/MailEngine/ZipProcessor/extract_all_files_c.dat +0 -0
  60. data/.yardoc/objects/MailEngine/ZipProcessor.dat +0 -0
  61. data/.yardoc/objects/MailEngine.dat +0 -0
  62. data/.yardoc/objects/PLACEHOLDERS_IN_LAYOUT.dat +0 -0
  63. data/.yardoc/objects/root.dat +0 -0
  64. data/.yardoc/proxy_types +0 -0
  65. data/Gemfile +36 -0
  66. data/Gemfile.lock +159 -0
  67. data/MIT-LICENSE +20 -0
  68. data/README.mkd +152 -0
  69. data/Rakefile +57 -0
  70. data/VERSION +1 -0
  71. data/app/controllers/mail_engine/application_controller.rb +7 -0
  72. data/app/controllers/mail_engine/dashboard_controller.rb +9 -0
  73. data/app/controllers/mail_engine/mail_logs_controller.rb +20 -0
  74. data/app/controllers/mail_engine/mail_schedules_controller.rb +56 -0
  75. data/app/controllers/mail_engine/mail_template_files_controller.rb +46 -0
  76. data/app/controllers/mail_engine/mail_templates_controller.rb +141 -0
  77. data/app/controllers/mail_engine/reports_controller.rb +34 -0
  78. data/app/helpers/mail_engine/mail_engine_helper.rb +30 -0
  79. data/app/mailers/mail_engine/mail_dispatcher.rb +59 -0
  80. data/app/models/mail_engine/mail_log.rb +36 -0
  81. data/app/models/mail_engine/mail_schedule.rb +70 -0
  82. data/app/models/mail_engine/mail_template.rb +270 -0
  83. data/app/models/mail_engine/mail_template_file.rb +31 -0
  84. data/app/models/mail_engine/template_partial.rb +9 -0
  85. data/app/uploaders/mail_engine/template_file_uploader.rb +47 -0
  86. data/app/uploaders/mail_engine/zip_file_uploader.rb +47 -0
  87. data/app/views/layouts/mail_engine/mail_engine.html.erb +112 -0
  88. data/app/views/layouts/mail_engine/mail_template_layouts/header_and_footer.html.erb +10 -0
  89. data/app/views/layouts/mail_engine/mail_template_layouts/header_and_footer.text.erb +3 -0
  90. data/app/views/layouts/mail_engine/mail_template_layouts/none.html.erb +8 -0
  91. data/app/views/layouts/mail_engine/mail_template_layouts/none.text.erb +1 -0
  92. data/app/views/layouts/mail_engine/mail_template_layouts/only_footer.html.erb +9 -0
  93. data/app/views/layouts/mail_engine/mail_template_layouts/only_footer.text.erb +2 -0
  94. data/app/views/mail_engine/dashboard/index.html.erb +64 -0
  95. data/app/views/mail_engine/mail_logs/index.html.erb +34 -0
  96. data/app/views/mail_engine/mail_logs/show.html.erb +38 -0
  97. data/app/views/mail_engine/mail_schedules/_form.html.erb +45 -0
  98. data/app/views/mail_engine/mail_schedules/edit.html.erb +16 -0
  99. data/app/views/mail_engine/mail_schedules/index.html.erb +50 -0
  100. data/app/views/mail_engine/mail_schedules/new.html.erb +13 -0
  101. data/app/views/mail_engine/mail_schedules/show.html.erb +44 -0
  102. data/app/views/mail_engine/mail_template_files/_form.html.erb +28 -0
  103. data/app/views/mail_engine/mail_template_files/edit.html.erb +9 -0
  104. data/app/views/mail_engine/mail_template_files/new.html.erb +9 -0
  105. data/app/views/mail_engine/mail_templates/_form.html.erb +97 -0
  106. data/app/views/mail_engine/mail_templates/_layout_selector.html.erb +50 -0
  107. data/app/views/mail_engine/mail_templates/duplicate.html.erb +41 -0
  108. data/app/views/mail_engine/mail_templates/edit.html.erb +16 -0
  109. data/app/views/mail_engine/mail_templates/index.html.erb +69 -0
  110. data/app/views/mail_engine/mail_templates/new.html.erb +12 -0
  111. data/app/views/mail_engine/mail_templates/new_by_upload.html.erb +63 -0
  112. data/app/views/mail_engine/mail_templates/partial_options.html.erb +28 -0
  113. data/app/views/mail_engine/mail_templates/preview.html.erb +1 -0
  114. data/app/views/mail_engine/mail_templates/preview.text.erb +1 -0
  115. data/app/views/mail_engine/mail_templates/show.html.erb +64 -0
  116. data/app/views/mail_engine/reports/charts/blocks.html.erb +21 -0
  117. data/app/views/mail_engine/reports/charts/bounces.html.erb +21 -0
  118. data/app/views/mail_engine/reports/charts/invalidemails.html.erb +19 -0
  119. data/app/views/mail_engine/reports/charts/spamreports.html.erb +17 -0
  120. data/app/views/mail_engine/reports/index.html.erb +67 -0
  121. data/config/routes.rb +48 -0
  122. data/db/migrate/20110114030841_create_table_mail_template.rb +22 -0
  123. data/db/migrate/20110126030525_create_mail_schedules.rb +21 -0
  124. data/db/migrate/20110204114145_create_template_partials.rb +13 -0
  125. data/db/migrate/20110206025002_create_mail_logs.rb +17 -0
  126. data/db/migrate/20110217062316_create_mail_template_files.rb +14 -0
  127. data/doc/_index.html +322 -0
  128. data/doc/class_list.html +36 -0
  129. data/doc/css/common.css +1 -0
  130. data/doc/css/full_list.css +53 -0
  131. data/doc/css/style.css +310 -0
  132. data/doc/file_list.html +38 -0
  133. data/doc/frames.html +13 -0
  134. data/doc/js/app.js +203 -0
  135. data/doc/js/full_list.js +149 -0
  136. data/doc/js/jquery.js +154 -0
  137. data/doc/method_list.html +283 -0
  138. data/lib/mail_engine/action_mailer_patch.rb +104 -0
  139. data/lib/mail_engine/acts_as_mail_receiver.rb +22 -0
  140. data/lib/mail_engine/base.rb +26 -0
  141. data/lib/mail_engine/configuration.rb +11 -0
  142. data/lib/mail_engine/engine.rb +42 -0
  143. data/lib/mail_engine/generators/create_config.rb +20 -0
  144. data/lib/mail_engine/generators/create_migration.rb +20 -0
  145. data/lib/mail_engine/generators/templates/mail_engine_config.yml +14 -0
  146. data/lib/mail_engine/html_document_assets_replacer.rb +86 -0
  147. data/lib/mail_engine/mail_log_subscriber.rb +30 -0
  148. data/lib/mail_engine/placeholders_in_layout.rb +5 -0
  149. data/lib/mail_engine/sendgrid/base.rb +45 -0
  150. data/lib/mail_engine/sendgrid/rest_api.rb +85 -0
  151. data/lib/mail_engine/sendgrid/smtp_api.rb +85 -0
  152. data/lib/mail_engine/sendgrid.rb +9 -0
  153. data/lib/mail_engine/tasks/sendmail.rake +8 -0
  154. data/lib/mail_engine/version.rb +3 -0
  155. data/lib/mail_engine/zip_processor.rb +51 -0
  156. data/lib/mail_engine.rb +17 -0
  157. data/mail_engine.gemspec +422 -0
  158. data/screenshots/bounce_report.png +0 -0
  159. data/screenshots/dashboard.png +0 -0
  160. data/screenshots/editing_mail_template.png +0 -0
  161. data/screenshots/logs.png +0 -0
  162. data/screenshots/new_by_upload.png +0 -0
  163. data/screenshots/reports.png +0 -0
  164. data/screenshots/schedule.png +0 -0
  165. data/screenshots/select_layout_partial.png +0 -0
  166. data/screenshots/templates.png +0 -0
  167. data/test/dummy/Rakefile +7 -0
  168. data/test/dummy/app/controllers/application_controller.rb +11 -0
  169. data/test/dummy/app/helpers/application_helper.rb +2 -0
  170. data/test/dummy/app/mailers/user_mailer.rb +36 -0
  171. data/test/dummy/app/models/user.rb +10 -0
  172. data/test/dummy/config/application.rb +52 -0
  173. data/test/dummy/config/boot.rb +10 -0
  174. data/test/dummy/config/database.yml +52 -0
  175. data/test/dummy/config/environment.rb +5 -0
  176. data/test/dummy/config/environments/development.rb +47 -0
  177. data/test/dummy/config/environments/production.rb +49 -0
  178. data/test/dummy/config/environments/test.rb +43 -0
  179. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  180. data/test/dummy/config/initializers/inflections.rb +10 -0
  181. data/test/dummy/config/initializers/mime_types.rb +5 -0
  182. data/test/dummy/config/initializers/secret_token.rb +7 -0
  183. data/test/dummy/config/initializers/session_store.rb +8 -0
  184. data/test/dummy/config/locales/en.yml +5 -0
  185. data/test/dummy/config/locales/zh.yml +2 -0
  186. data/test/dummy/config/routes.rb +58 -0
  187. data/test/dummy/config.ru +4 -0
  188. data/test/dummy/db/migrate/20110114030841_create_table_mail_template.rb +22 -0
  189. data/test/dummy/db/migrate/20110125094530_create_users.rb +16 -0
  190. data/test/dummy/db/migrate/20110126030525_create_mail_schedules.rb +21 -0
  191. data/test/dummy/db/migrate/20110204114145_create_template_partials.rb +13 -0
  192. data/test/dummy/db/migrate/20110206025002_create_mail_logs.rb +17 -0
  193. data/test/dummy/db/migrate/20110217062316_create_mail_template_files.rb +14 -0
  194. data/test/dummy/db/schema.rb +78 -0
  195. data/test/dummy/public/404.html +26 -0
  196. data/test/dummy/public/422.html +26 -0
  197. data/test/dummy/public/500.html +26 -0
  198. data/test/dummy/public/favicon.ico +0 -0
  199. data/test/dummy/public/images/mail_engine/header_and_footer_layout.png +0 -0
  200. data/test/dummy/public/images/mail_engine/logo.gif +0 -0
  201. data/test/dummy/public/images/mail_engine/logo.png +0 -0
  202. data/test/dummy/public/images/mail_engine/none_layout.png +0 -0
  203. data/test/dummy/public/images/mail_engine/only_footer_layout.png +0 -0
  204. data/test/dummy/public/images/mail_engine/unselect_header_and_footer_layout.png +0 -0
  205. data/test/dummy/public/images/mail_engine/unselect_none_layout.png +0 -0
  206. data/test/dummy/public/images/mail_engine/unselect_only_footer_layout.png +0 -0
  207. data/test/dummy/public/javascripts/jquery.iframe-auto-height.plugin.js +50 -0
  208. data/test/dummy/public/javascripts/jquery.js +16 -0
  209. data/test/dummy/public/javascripts/jquery.nyroModal/img/ajaxLoader.gif +0 -0
  210. data/test/dummy/public/javascripts/jquery.nyroModal/img/close.gif +0 -0
  211. data/test/dummy/public/javascripts/jquery.nyroModal/img/next.gif +0 -0
  212. data/test/dummy/public/javascripts/jquery.nyroModal/img/prev.gif +0 -0
  213. data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal-ie6.js +186 -0
  214. data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal-ie6.min.js +9 -0
  215. data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal.custom.js +1599 -0
  216. data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal.custom.min.js +34 -0
  217. data/test/dummy/public/javascripts/jquery.nyroModal/styles/nyroModal.css +102 -0
  218. data/test/dummy/public/javascripts/jquery.string.js +425 -0
  219. data/test/dummy/public/javascripts/mail_engine_application.js +2 -0
  220. data/test/dummy/public/javascripts/markitup/jquery.markitup.js +564 -0
  221. data/test/dummy/public/javascripts/markitup/sets/css/images/bold.png +0 -0
  222. data/test/dummy/public/javascripts/markitup/sets/css/images/css.png +0 -0
  223. data/test/dummy/public/javascripts/markitup/sets/css/images/italic.png +0 -0
  224. data/test/dummy/public/javascripts/markitup/sets/css/images/picture.png +0 -0
  225. data/test/dummy/public/javascripts/markitup/sets/css/images/stroke.png +0 -0
  226. data/test/dummy/public/javascripts/markitup/sets/css/images/tag.png +0 -0
  227. data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_center.png +0 -0
  228. data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_justify.png +0 -0
  229. data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_left.png +0 -0
  230. data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_right.png +0 -0
  231. data/test/dummy/public/javascripts/markitup/sets/css/images/text_indent.png +0 -0
  232. data/test/dummy/public/javascripts/markitup/sets/css/images/text_letterspacing.png +0 -0
  233. data/test/dummy/public/javascripts/markitup/sets/css/images/text_linespacing.png +0 -0
  234. data/test/dummy/public/javascripts/markitup/sets/css/images/text_lowercase.png +0 -0
  235. data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_bottom.png +0 -0
  236. data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_left.png +0 -0
  237. data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_right.png +0 -0
  238. data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_top.png +0 -0
  239. data/test/dummy/public/javascripts/markitup/sets/css/images/text_uppercase.png +0 -0
  240. data/test/dummy/public/javascripts/markitup/sets/css/readme.txt +28 -0
  241. data/test/dummy/public/javascripts/markitup/sets/css/set.js +52 -0
  242. data/test/dummy/public/javascripts/markitup/sets/css/style.css +72 -0
  243. data/test/dummy/public/javascripts/markitup/sets/default/images/bold.png +0 -0
  244. data/test/dummy/public/javascripts/markitup/sets/default/images/clean.png +0 -0
  245. data/test/dummy/public/javascripts/markitup/sets/default/images/image.png +0 -0
  246. data/test/dummy/public/javascripts/markitup/sets/default/images/italic.png +0 -0
  247. data/test/dummy/public/javascripts/markitup/sets/default/images/link.png +0 -0
  248. data/test/dummy/public/javascripts/markitup/sets/default/images/picture.png +0 -0
  249. data/test/dummy/public/javascripts/markitup/sets/default/images/preview.png +0 -0
  250. data/test/dummy/public/javascripts/markitup/sets/default/images/stroke.png +0 -0
  251. data/test/dummy/public/javascripts/markitup/sets/default/set.js +27 -0
  252. data/test/dummy/public/javascripts/markitup/sets/default/style.css +27 -0
  253. data/test/dummy/public/javascripts/markitup/sets/html/images/bold.png +0 -0
  254. data/test/dummy/public/javascripts/markitup/sets/html/images/clean.png +0 -0
  255. data/test/dummy/public/javascripts/markitup/sets/html/images/h1.png +0 -0
  256. data/test/dummy/public/javascripts/markitup/sets/html/images/h2.png +0 -0
  257. data/test/dummy/public/javascripts/markitup/sets/html/images/h3.png +0 -0
  258. data/test/dummy/public/javascripts/markitup/sets/html/images/h4.png +0 -0
  259. data/test/dummy/public/javascripts/markitup/sets/html/images/h5.png +0 -0
  260. data/test/dummy/public/javascripts/markitup/sets/html/images/h6.png +0 -0
  261. data/test/dummy/public/javascripts/markitup/sets/html/images/image.png +0 -0
  262. data/test/dummy/public/javascripts/markitup/sets/html/images/italic.png +0 -0
  263. data/test/dummy/public/javascripts/markitup/sets/html/images/link.png +0 -0
  264. data/test/dummy/public/javascripts/markitup/sets/html/images/list-bullet.png +0 -0
  265. data/test/dummy/public/javascripts/markitup/sets/html/images/list-item.png +0 -0
  266. data/test/dummy/public/javascripts/markitup/sets/html/images/list-numeric.png +0 -0
  267. data/test/dummy/public/javascripts/markitup/sets/html/images/paragraph.png +0 -0
  268. data/test/dummy/public/javascripts/markitup/sets/html/images/picture.png +0 -0
  269. data/test/dummy/public/javascripts/markitup/sets/html/images/preview.png +0 -0
  270. data/test/dummy/public/javascripts/markitup/sets/html/images/stroke.png +0 -0
  271. data/test/dummy/public/javascripts/markitup/sets/html/readme.txt +11 -0
  272. data/test/dummy/public/javascripts/markitup/sets/html/set.js +40 -0
  273. data/test/dummy/public/javascripts/markitup/sets/html/style.css +59 -0
  274. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-container.png +0 -0
  275. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-bbcode.png +0 -0
  276. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-dotclear.png +0 -0
  277. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-html.png +0 -0
  278. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-json.png +0 -0
  279. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-markdown.png +0 -0
  280. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-textile.png +0 -0
  281. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-wiki.png +0 -0
  282. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-xml.png +0 -0
  283. data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor.png +0 -0
  284. data/test/dummy/public/javascripts/markitup/skins/markitup/images/handle.png +0 -0
  285. data/test/dummy/public/javascripts/markitup/skins/markitup/images/menu.png +0 -0
  286. data/test/dummy/public/javascripts/markitup/skins/markitup/images/submenu.png +0 -0
  287. data/test/dummy/public/javascripts/markitup/skins/markitup/style.css +147 -0
  288. data/test/dummy/public/javascripts/markitup/skins/simple/images/handle.png +0 -0
  289. data/test/dummy/public/javascripts/markitup/skins/simple/images/menu.png +0 -0
  290. data/test/dummy/public/javascripts/markitup/skins/simple/images/submenu.png +0 -0
  291. data/test/dummy/public/javascripts/markitup/skins/simple/style.css +118 -0
  292. data/test/dummy/public/javascripts/markitup/templates/preview.css +5 -0
  293. data/test/dummy/public/javascripts/markitup/templates/preview.html +11 -0
  294. data/test/dummy/public/javascripts/rails.js +132 -0
  295. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  296. data/test/dummy/public/stylesheets/application.css +0 -0
  297. data/test/dummy/public/stylesheets/style.css +681 -0
  298. data/test/dummy/script/rails +6 -0
  299. data/test/factories.rb +88 -0
  300. data/test/fixtures/files/compress_by_dir.zip +0 -0
  301. data/test/fixtures/files/compress_by_file.zip +0 -0
  302. data/test/fixtures/files/image.png +0 -0
  303. data/test/functional/mail_engine/mail_dispatcher_test.rb +8 -0
  304. data/test/functional/mail_engine/mail_schedules_controller_controller_test.rb +8 -0
  305. data/test/functional/mail_engine/mail_templates_controller_controller_test.rb +8 -0
  306. data/test/support/integration_case.rb +5 -0
  307. data/test/test_helper.rb +35 -0
  308. data/test/unit/mail_engine/mail_log_test.rb +8 -0
  309. data/test/unit/mail_engine/mail_schedule_test.rb +40 -0
  310. data/test/unit/mail_engine/mail_template_file_test.rb +21 -0
  311. data/test/unit/mail_engine/mail_template_test.rb +77 -0
  312. data/test/unit/mail_engine/template_partial_test.rb +8 -0
  313. 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">&nbsp;</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,9 @@
1
+ <div class="post">
2
+ <div class="post-body">
3
+ <%= form_for @mail_template_file,
4
+ :url => mail_template_mail_template_files_path(@mail_template),
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">&nbsp;</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 %>