mindapp2 0.1.0

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.
Files changed (264) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +5 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +43 -0
  8. data/Rakefile +1 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/lib/generators/mindapp/USAGE +8 -0
  12. data/lib/generators/mindapp/install_generator.rb +179 -0
  13. data/lib/generators/mindapp/mongoid_generator.rb +30 -0
  14. data/lib/generators/mindapp/templates/app/assets/config/manifest.js +3 -0
  15. data/lib/generators/mindapp/templates/app/assets/images/.keep +0 -0
  16. data/lib/generators/mindapp/templates/app/assets/images/4dcity-old.ico +0 -0
  17. data/lib/generators/mindapp/templates/app/assets/images/4dcity.ico +0 -0
  18. data/lib/generators/mindapp/templates/app/assets/images/account.png +0 -0
  19. data/lib/generators/mindapp/templates/app/assets/images/add.png +0 -0
  20. data/lib/generators/mindapp/templates/app/assets/images/ajax-loader-circle.gif +0 -0
  21. data/lib/generators/mindapp/templates/app/assets/images/ajax-loader.gif +0 -0
  22. data/lib/generators/mindapp/templates/app/assets/images/anchor.png +0 -0
  23. data/lib/generators/mindapp/templates/app/assets/images/application_double.png +0 -0
  24. data/lib/generators/mindapp/templates/app/assets/images/application_form_edit.png +0 -0
  25. data/lib/generators/mindapp/templates/app/assets/images/arrow_left.png +0 -0
  26. data/lib/generators/mindapp/templates/app/assets/images/arrow_right.png +0 -0
  27. data/lib/generators/mindapp/templates/app/assets/images/arrow_turn_left.png +0 -0
  28. data/lib/generators/mindapp/templates/app/assets/images/arrow_turn_right.png +0 -0
  29. data/lib/generators/mindapp/templates/app/assets/images/calendar.png +0 -0
  30. data/lib/generators/mindapp/templates/app/assets/images/cancel.png +0 -0
  31. data/lib/generators/mindapp/templates/app/assets/images/chart_bar.png +0 -0
  32. data/lib/generators/mindapp/templates/app/assets/images/clock.png +0 -0
  33. data/lib/generators/mindapp/templates/app/assets/images/cog.png +0 -0
  34. data/lib/generators/mindapp/templates/app/assets/images/control_fastforward.png +0 -0
  35. data/lib/generators/mindapp/templates/app/assets/images/control_play.png +0 -0
  36. data/lib/generators/mindapp/templates/app/assets/images/cross.png +0 -0
  37. data/lib/generators/mindapp/templates/app/assets/images/delete.png +0 -0
  38. data/lib/generators/mindapp/templates/app/assets/images/external-link.png +0 -0
  39. data/lib/generators/mindapp/templates/app/assets/images/facebooksmall.png +0 -0
  40. data/lib/generators/mindapp/templates/app/assets/images/favicon.ico +0 -0
  41. data/lib/generators/mindapp/templates/app/assets/images/freemind(mm).png +0 -0
  42. data/lib/generators/mindapp/templates/app/assets/images/help.png +0 -0
  43. data/lib/generators/mindapp/templates/app/assets/images/highway-menu.png +0 -0
  44. data/lib/generators/mindapp/templates/app/assets/images/highway.png +0 -0
  45. data/lib/generators/mindapp/templates/app/assets/images/house.png +0 -0
  46. data/lib/generators/mindapp/templates/app/assets/images/icons-18-black.png +0 -0
  47. data/lib/generators/mindapp/templates/app/assets/images/icons-18-white.png +0 -0
  48. data/lib/generators/mindapp/templates/app/assets/images/icons-36-black.png +0 -0
  49. data/lib/generators/mindapp/templates/app/assets/images/icons-36-white.png +0 -0
  50. data/lib/generators/mindapp/templates/app/assets/images/logo.png +0 -0
  51. data/lib/generators/mindapp/templates/app/assets/images/logo_mindapp.png +0 -0
  52. data/lib/generators/mindapp/templates/app/assets/images/logout.png +0 -0
  53. data/lib/generators/mindapp/templates/app/assets/images/mylogo.png +0 -0
  54. data/lib/generators/mindapp/templates/app/assets/images/new.gif +0 -0
  55. data/lib/generators/mindapp/templates/app/assets/images/new.png +0 -0
  56. data/lib/generators/mindapp/templates/app/assets/images/page.png +0 -0
  57. data/lib/generators/mindapp/templates/app/assets/images/page_attach.png +0 -0
  58. data/lib/generators/mindapp/templates/app/assets/images/page_green.png +0 -0
  59. data/lib/generators/mindapp/templates/app/assets/images/page_output.png +0 -0
  60. data/lib/generators/mindapp/templates/app/assets/images/page_pdf.png +0 -0
  61. data/lib/generators/mindapp/templates/app/assets/images/pencil.png +0 -0
  62. data/lib/generators/mindapp/templates/app/assets/images/printer.png +0 -0
  63. data/lib/generators/mindapp/templates/app/assets/images/refresh.png +0 -0
  64. data/lib/generators/mindapp/templates/app/assets/images/report.png +0 -0
  65. data/lib/generators/mindapp/templates/app/assets/images/rssmall.png +0 -0
  66. data/lib/generators/mindapp/templates/app/assets/images/tick.png +0 -0
  67. data/lib/generators/mindapp/templates/app/assets/images/twittersmall.png +0 -0
  68. data/lib/generators/mindapp/templates/app/assets/images/user.png +0 -0
  69. data/lib/generators/mindapp/templates/app/assets/images/view_code.png +0 -0
  70. data/lib/generators/mindapp/templates/app/assets/javascripts/admins.js.coffee +3 -0
  71. data/lib/generators/mindapp/templates/app/assets/javascripts/application.js +25 -0
  72. data/lib/generators/mindapp/templates/app/assets/javascripts/application.js.bak +20 -0
  73. data/lib/generators/mindapp/templates/app/assets/javascripts/articles.coffee +3 -0
  74. data/lib/generators/mindapp/templates/app/assets/javascripts/basic.coffee +3 -0
  75. data/lib/generators/mindapp/templates/app/assets/javascripts/cable.js +13 -0
  76. data/lib/generators/mindapp/templates/app/assets/javascripts/channels/.keep +0 -0
  77. data/lib/generators/mindapp/templates/app/assets/javascripts/comments.coffee +3 -0
  78. data/lib/generators/mindapp/templates/app/assets/javascripts/ctrs.coffee +3 -0
  79. data/lib/generators/mindapp/templates/app/assets/javascripts/devs.js.coffee +3 -0
  80. data/lib/generators/mindapp/templates/app/assets/javascripts/disable_enter_key.js +10 -0
  81. data/lib/generators/mindapp/templates/app/assets/javascripts/iscroll-wrapper.js +32 -0
  82. data/lib/generators/mindapp/templates/app/assets/javascripts/iscroll.js +1084 -0
  83. data/lib/generators/mindapp/templates/app/assets/javascripts/jquery.mobile-1.2.1.js +9272 -0
  84. data/lib/generators/mindapp/templates/app/assets/javascripts/jquery.mobile.datebox.js +1772 -0
  85. data/lib/generators/mindapp/templates/app/assets/javascripts/jquery.mobile.splitview.js +695 -0
  86. data/lib/generators/mindapp/templates/app/assets/javascripts/mindapp.js +14 -0
  87. data/lib/generators/mindapp/templates/app/assets/javascripts/pictures.coffee +3 -0
  88. data/lib/generators/mindapp/templates/app/assets/javascripts/sitemap.coffee +3 -0
  89. data/lib/generators/mindapp/templates/app/assets/javascripts/users.js.coffee +3 -0
  90. data/lib/generators/mindapp/templates/app/assets/stylesheets/admins.scss +3 -0
  91. data/lib/generators/mindapp/templates/app/assets/stylesheets/application.css.bak +15 -0
  92. data/lib/generators/mindapp/templates/app/assets/stylesheets/application.scss +31 -0
  93. data/lib/generators/mindapp/templates/app/assets/stylesheets/articles.scss +60 -0
  94. data/lib/generators/mindapp/templates/app/assets/stylesheets/basic.scss +3 -0
  95. data/lib/generators/mindapp/templates/app/assets/stylesheets/comments.scss +3 -0
  96. data/lib/generators/mindapp/templates/app/assets/stylesheets/ctrs.scss +3 -0
  97. data/lib/generators/mindapp/templates/app/assets/stylesheets/devs.scss +3 -0
  98. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun.eot +0 -0
  99. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun.ttf +0 -0
  100. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun.woff +0 -0
  101. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun_bold.ttf +0 -0
  102. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun_bolditalic.ttf +0 -0
  103. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun_italic.ttf +0 -0
  104. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew-webfont.eot +0 -0
  105. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew-webfont.ttf +0 -0
  106. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew-webfont.woff +0 -0
  107. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew.css +47 -0
  108. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.eot +0 -0
  109. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.ttf +0 -0
  110. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.woff +0 -0
  111. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.eot +0 -0
  112. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.ttf +0 -0
  113. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.woff +0 -0
  114. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.eot +0 -0
  115. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.ttf +0 -0
  116. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.woff +0 -0
  117. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ajax-loader.gif +0 -0
  118. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/button_black.png +0 -0
  119. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/button_blue.png +0 -0
  120. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/button_red.png +0 -0
  121. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-18-black.png +0 -0
  122. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-18-white.png +0 -0
  123. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-36-black.png +0 -0
  124. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-36-white.png +0 -0
  125. data/lib/generators/mindapp/templates/app/assets/stylesheets/indicator.gif +0 -0
  126. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile-1.2.1.css +2339 -0
  127. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile.datebox.css +65 -0
  128. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile.grids.collapsible.css +122 -0
  129. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile.splitview.css +128 -0
  130. data/lib/generators/mindapp/templates/app/assets/stylesheets/kul-4.2.css +1516 -0
  131. data/lib/generators/mindapp/templates/app/assets/stylesheets/kul-4.2.min.css +11 -0
  132. data/lib/generators/mindapp/templates/app/assets/stylesheets/mindapp.css +138 -0
  133. data/lib/generators/mindapp/templates/app/assets/stylesheets/pictures.scss +3 -0
  134. data/lib/generators/mindapp/templates/app/assets/stylesheets/rouge.css.erb +11 -0
  135. data/lib/generators/mindapp/templates/app/assets/stylesheets/sarabun.css +37 -0
  136. data/lib/generators/mindapp/templates/app/assets/stylesheets/sitemap.scss +3 -0
  137. data/lib/generators/mindapp/templates/app/assets/stylesheets/users.scss +3 -0
  138. data/lib/generators/mindapp/templates/app/channels/application_cable/channel.rb +4 -0
  139. data/lib/generators/mindapp/templates/app/channels/application_cable/connection.rb +4 -0
  140. data/lib/generators/mindapp/templates/app/controllers/admins_controller.rb +6 -0
  141. data/lib/generators/mindapp/templates/app/controllers/application_controller.rb +41 -0
  142. data/lib/generators/mindapp/templates/app/controllers/articles_controller.rb +67 -0
  143. data/lib/generators/mindapp/templates/app/controllers/comments_controller.rb +17 -0
  144. data/lib/generators/mindapp/templates/app/controllers/concerns/.keep +0 -0
  145. data/lib/generators/mindapp/templates/app/controllers/ctrs_controller.rb +2 -0
  146. data/lib/generators/mindapp/templates/app/controllers/devs_controller.rb +2 -0
  147. data/lib/generators/mindapp/templates/app/controllers/identities_controller.rb +5 -0
  148. data/lib/generators/mindapp/templates/app/controllers/mindapp_controller.rb +501 -0
  149. data/lib/generators/mindapp/templates/app/controllers/sessions_controller.rb +30 -0
  150. data/lib/generators/mindapp/templates/app/controllers/sitemap_controller.rb +12 -0
  151. data/lib/generators/mindapp/templates/app/controllers/users_controller.rb +25 -0
  152. data/lib/generators/mindapp/templates/app/helpers/admins_helper.rb +2 -0
  153. data/lib/generators/mindapp/templates/app/helpers/application_helper.rb +33 -0
  154. data/lib/generators/mindapp/templates/app/helpers/articles_helper.rb +2 -0
  155. data/lib/generators/mindapp/templates/app/helpers/basic_helper.rb +2 -0
  156. data/lib/generators/mindapp/templates/app/helpers/comments_helper.rb +2 -0
  157. data/lib/generators/mindapp/templates/app/helpers/ctrs_helper.rb +2 -0
  158. data/lib/generators/mindapp/templates/app/helpers/devs_helper.rb +2 -0
  159. data/lib/generators/mindapp/templates/app/helpers/pictures_helper.rb +2 -0
  160. data/lib/generators/mindapp/templates/app/helpers/sitemap_helper.rb +2 -0
  161. data/lib/generators/mindapp/templates/app/helpers/users_helper.rb +2 -0
  162. data/lib/generators/mindapp/templates/app/jobs/application_job.rb +2 -0
  163. data/lib/generators/mindapp/templates/app/mailers/application_mailer.rb +4 -0
  164. data/lib/generators/mindapp/templates/app/mailers/mindapp_mailer.rb +7 -0
  165. data/lib/generators/mindapp/templates/app/mindapp/index.mm +188 -0
  166. data/lib/generators/mindapp/templates/app/mindapp/template/view.html.erb +23 -0
  167. data/lib/generators/mindapp/templates/app/models/.gitkeep +0 -0
  168. data/lib/generators/mindapp/templates/app/models/address.rb +14 -0
  169. data/lib/generators/mindapp/templates/app/models/article.rb +14 -0
  170. data/lib/generators/mindapp/templates/app/models/ckeditor/asset.rb +5 -0
  171. data/lib/generators/mindapp/templates/app/models/ckeditor/attachment_file.rb +13 -0
  172. data/lib/generators/mindapp/templates/app/models/ckeditor/picture.rb +14 -0
  173. data/lib/generators/mindapp/templates/app/models/comment.rb +11 -0
  174. data/lib/generators/mindapp/templates/app/models/concerns/.keep +0 -0
  175. data/lib/generators/mindapp/templates/app/models/identity.rb +14 -0
  176. data/lib/generators/mindapp/templates/app/models/mindapp/doc.rb +31 -0
  177. data/lib/generators/mindapp/templates/app/models/mindapp/module.rb +11 -0
  178. data/lib/generators/mindapp/templates/app/models/mindapp/notice.rb +14 -0
  179. data/lib/generators/mindapp/templates/app/models/mindapp/role.rb +8 -0
  180. data/lib/generators/mindapp/templates/app/models/mindapp/runseq.rb +24 -0
  181. data/lib/generators/mindapp/templates/app/models/mindapp/service.rb +17 -0
  182. data/lib/generators/mindapp/templates/app/models/mindapp/xmain.rb +38 -0
  183. data/lib/generators/mindapp/templates/app/models/param.rb +41 -0
  184. data/lib/generators/mindapp/templates/app/models/person.rb +14 -0
  185. data/lib/generators/mindapp/templates/app/models/user.rb +30 -0
  186. data/lib/generators/mindapp/templates/app/views/admins/edit_role/edit_role.html.erb +7 -0
  187. data/lib/generators/mindapp/templates/app/views/admins/edit_role/select_user.html.erb +4 -0
  188. data/lib/generators/mindapp/templates/app/views/articles/edit.haml +12 -0
  189. data/lib/generators/mindapp/templates/app/views/articles/edit_article/edit_article.html.erb +13 -0
  190. data/lib/generators/mindapp/templates/app/views/articles/edit_article/select_article.html.erb +12 -0
  191. data/lib/generators/mindapp/templates/app/views/articles/index.haml +23 -0
  192. data/lib/generators/mindapp/templates/app/views/articles/my.haml +21 -0
  193. data/lib/generators/mindapp/templates/app/views/articles/new_article/form_article.html.erb +14 -0
  194. data/lib/generators/mindapp/templates/app/views/articles/show.html.haml +27 -0
  195. data/lib/generators/mindapp/templates/app/views/articles/xedit_article/edit_article.html.erb +13 -0
  196. data/lib/generators/mindapp/templates/app/views/articles/xedit_article/xedit_article.html.erb +11 -0
  197. data/lib/generators/mindapp/templates/app/views/ctrs/vfolder1/viewfile1.html.erb +23 -0
  198. data/lib/generators/mindapp/templates/app/views/ctrs/vfolder1/viewfile2.html.erb +23 -0
  199. data/lib/generators/mindapp/templates/app/views/ctrs/vfolder2/viewfile2.html.erb +23 -0
  200. data/lib/generators/mindapp/templates/app/views/identities/new.html.erb +30 -0
  201. data/lib/generators/mindapp/templates/app/views/layouts/_full.haml +39 -0
  202. data/lib/generators/mindapp/templates/app/views/layouts/_head.html.erb +13 -0
  203. data/lib/generators/mindapp/templates/app/views/layouts/_meta_tags.html.erb +5 -0
  204. data/lib/generators/mindapp/templates/app/views/layouts/_metatag.html.erb +19 -0
  205. data/lib/generators/mindapp/templates/app/views/layouts/_page.haml +16 -0
  206. data/lib/generators/mindapp/templates/app/views/layouts/_top.html.erb +10 -0
  207. data/lib/generators/mindapp/templates/app/views/layouts/application.haml +4 -0
  208. data/lib/generators/mindapp/templates/app/views/layouts/application.html.erb.bak +14 -0
  209. data/lib/generators/mindapp/templates/app/views/layouts/gmail.html.erb +9 -0
  210. data/lib/generators/mindapp/templates/app/views/layouts/mailer.html.erb +13 -0
  211. data/lib/generators/mindapp/templates/app/views/layouts/mailer.text.erb +1 -0
  212. data/lib/generators/mindapp/templates/app/views/layouts/mobile.html.erb +13 -0
  213. data/lib/generators/mindapp/templates/app/views/layouts/mobilejq.html.erb +31 -0
  214. data/lib/generators/mindapp/templates/app/views/layouts/print.html.erb +22 -0
  215. data/lib/generators/mindapp/templates/app/views/layouts/utf8.html.erb +22 -0
  216. data/lib/generators/mindapp/templates/app/views/mindapp/_activity.md +10 -0
  217. data/lib/generators/mindapp/templates/app/views/mindapp/_menu.haml +25 -0
  218. data/lib/generators/mindapp/templates/app/views/mindapp/_menu_mm.haml +29 -0
  219. data/lib/generators/mindapp/templates/app/views/mindapp/_model.md +5 -0
  220. data/lib/generators/mindapp/templates/app/views/mindapp/_modul.md +9 -0
  221. data/lib/generators/mindapp/templates/app/views/mindapp/_pending_home.haml +5 -0
  222. data/lib/generators/mindapp/templates/app/views/mindapp/_pending_page.haml +24 -0
  223. data/lib/generators/mindapp/templates/app/views/mindapp/_service.md +24 -0
  224. data/lib/generators/mindapp/templates/app/views/mindapp/_static.haml +23 -0
  225. data/lib/generators/mindapp/templates/app/views/mindapp/doc.md +37 -0
  226. data/lib/generators/mindapp/templates/app/views/mindapp/error_logs.haml +22 -0
  227. data/lib/generators/mindapp/templates/app/views/mindapp/feed.rss.builder +27 -0
  228. data/lib/generators/mindapp/templates/app/views/mindapp/help.haml +20 -0
  229. data/lib/generators/mindapp/templates/app/views/mindapp/index.html.haml +21 -0
  230. data/lib/generators/mindapp/templates/app/views/mindapp/logs.haml +22 -0
  231. data/lib/generators/mindapp/templates/app/views/mindapp/pending.haml +1 -0
  232. data/lib/generators/mindapp/templates/app/views/mindapp/run_form.haml +37 -0
  233. data/lib/generators/mindapp/templates/app/views/mindapp/run_output.haml +38 -0
  234. data/lib/generators/mindapp/templates/app/views/mindapp/search.haml +20 -0
  235. data/lib/generators/mindapp/templates/app/views/mindapp/status.haml +61 -0
  236. data/lib/generators/mindapp/templates/app/views/mindapp_mailer/gmail.html.erb +9 -0
  237. data/lib/generators/mindapp/templates/app/views/sessions/new.html.erb +11 -0
  238. data/lib/generators/mindapp/templates/app/views/sitemap/index.xml.haml +10 -0
  239. data/lib/generators/mindapp/templates/app/views/users/index.haml +13 -0
  240. data/lib/generators/mindapp/templates/app/views/users/pwd/enter.html.erb +6 -0
  241. data/lib/generators/mindapp/templates/app/views/users/user/enter_user.html.erb +8 -0
  242. data/lib/generators/mindapp/templates/cloudinary.yml +9 -0
  243. data/lib/generators/mindapp/templates/mindapp.yml +10 -0
  244. data/lib/generators/mindapp/templates/public/404.html +67 -0
  245. data/lib/generators/mindapp/templates/public/422.html +67 -0
  246. data/lib/generators/mindapp/templates/public/500.html +66 -0
  247. data/lib/generators/mindapp/templates/public/assets/images/logo.png +0 -0
  248. data/lib/generators/mindapp/templates/public/favicon.ico +0 -0
  249. data/lib/generators/mindapp/templates/public/robots.txt +3 -0
  250. data/lib/generators/mindapp/templates/seeds.rb +6 -0
  251. data/lib/generators/mindapp/templates/spec/controllers/admins_controller_spec.rb +5 -0
  252. data/lib/generators/mindapp/templates/spec/controllers/devs_controller_spec.rb +5 -0
  253. data/lib/generators/mindapp/templates/spec/controllers/users_controller_spec.rb +5 -0
  254. data/lib/generators/mindapp/templates/spec/helpers/admins_helper_spec.rb +15 -0
  255. data/lib/generators/mindapp/templates/spec/helpers/devs_helper_spec.rb +15 -0
  256. data/lib/generators/mindapp/templates/spec/helpers/users_helper_spec.rb +15 -0
  257. data/lib/generators/mindapp/templates/spec/spec_helper.rb +38 -0
  258. data/lib/mindapp/helpers.rb +509 -0
  259. data/lib/mindapp/railtie.rb +18 -0
  260. data/lib/mindapp/version.rb +3 -0
  261. data/lib/mindapp.rb +6 -0
  262. data/lib/tasks/mindapp.rake +202 -0
  263. data/mindapp.gemspec +27 -0
  264. metadata +349 -0
@@ -0,0 +1,501 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class MindappController < ApplicationController
3
+ def index
4
+ end
5
+ def logs
6
+ @xmains = Mindapp::Xmain.all.desc(:created_at).page(params[:page]).per(10)
7
+ end
8
+ def error_logs
9
+ @xmains = Mindapp::Xmain.in(status:['E']).desc(:created_at).page(params[:page]).per(10)
10
+ end
11
+ def pending
12
+ @title= "Pending Tasks"
13
+ @xmains = Mindapp::Xmain.in(status:['R','I']).asc(:created_at)
14
+ end
15
+ def cancel
16
+ Mindapp::Xmain.find(params[:id]).update_attributes :status=>'X'
17
+ if params[:return]
18
+ redirect_to params[:return]
19
+ else
20
+ redirect_to action:"pending"
21
+ end
22
+ end
23
+ def clear_xmains
24
+ Mindapp::Xmain.where(:status =>{'$in'=>['R','I']}).update_all(:status=>'X')
25
+ redirect_to action:"pending"
26
+ end
27
+ def ajax_notice
28
+ if notice=Mindapp::Notice.recent(current_user, request.env["REMOTE_ADDR"])
29
+ notice.update_attribute :unread, false
30
+ js = "notice('#{notice.message}');"
31
+ else
32
+ js = ""
33
+ end
34
+ render plain: "<script>#{js}</script>"
35
+ end
36
+ def init
37
+ module_code, code = params[:s].split(":")
38
+ @service= Mindapp::Service.where(:module_code=> module_code, :code=> code).first
39
+ # @service= Mindapp::Service.where(:module_code=> params[:module], :code=> params[:service]).first
40
+ if @service && authorize_init?
41
+ xmain = create_xmain(@service)
42
+ result = create_runseq(xmain)
43
+ unless result
44
+ message = "cannot find action for xmain #{xmain.id}"
45
+ ma_log("ERROR", message)
46
+ flash[:notice]= message
47
+ redirect_to "pending" and return
48
+ end
49
+ xmain.update_attribute(:xvars, @xvars)
50
+ xmain.runseqs.last.update_attribute(:end,true)
51
+ #Above line cause error update_attribute in heroku shown in logs and it was proposed to fixed in github:'kul1/g241502'
52
+ redirect_to :action=>'run', :id=>xmain.id
53
+ else
54
+ refresh_to "/", :alert => "Error: cannot process"
55
+ end
56
+ end
57
+ def run
58
+ init_vars(params[:id])
59
+ if authorize?
60
+ # session[:full_layout]= false
61
+ redirect_to(:action=>"run_#{@runseq.action}", :id=>@xmain.id)
62
+ else
63
+ redirect_to_root
64
+ end
65
+ end
66
+ def run_form
67
+ init_vars(params[:id])
68
+ if authorize?
69
+ if ['F', 'X'].include? @xmain.status
70
+ redirect_to_root
71
+ else
72
+ service= @xmain.service
73
+ if service
74
+ @title= "Transaction ID #{@xmain.xid}: #{@xmain.name} / #{@runseq.name}"
75
+ fhelp= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.md"
76
+ @help = File.read(fhelp) if File.exists?(fhelp)
77
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
78
+ @ui= File.read(f)
79
+ else
80
+ # flash[:notice]= "ไม่สามารถค้นหาบริการที่ต้องการได้"
81
+ ma_log "Error: Service not found"
82
+ redirect_to_root
83
+ end
84
+ end
85
+ else
86
+ redirect_to_root
87
+ end
88
+ end
89
+ def run_if
90
+ init_vars(params[:id])
91
+ condition= eval(@runseq.code).to_s
92
+ match_found= false
93
+ if condition
94
+ xml= REXML::Document.new(@runseq.xml).root
95
+ next_runseq= nil
96
+ text = xml.elements['//node/node'].attributes['TEXT']
97
+ match, name= text.split(':',2)
98
+ label= name2code(name.strip)
99
+ if condition==match
100
+ if label=="end"
101
+ @end_job= true
102
+ else
103
+ next_runseq= @xmain.runseqs.where(:code=> label, :action.ne=>'redirect').first
104
+ match_found= true if next_runseq
105
+ @runseq_not_f= false
106
+ end
107
+ end
108
+ end
109
+ unless match_found || @end_job
110
+ next_runseq= @xmain.runseqs.where( rstep:(@xvars['current_step']+1) ).first
111
+ end
112
+ end_action(next_runseq)
113
+ end
114
+ def run_redirect
115
+ init_vars(params[:id])
116
+ # next_runseq= @xmain.runseqs.first :conditions=>["id != ? AND code = ?",@runseq.id, @runseq.code]
117
+ next_runseq= @xmain.runseqs.where(:id.ne=>@runseq.id, :code=>@runseq.code).first
118
+ @xmain.current_runseq= next_runseq.id
119
+ end_action(next_runseq)
120
+ end
121
+ def run_do
122
+ init_vars(params[:id])
123
+ @runseq.start ||= Time.now
124
+ @runseq.status= 'R' # running
125
+ $runseq_id= @runseq.id
126
+ $user_id= current_user.try(:id)
127
+ set_global
128
+ controller = Kernel.const_get(@xvars['custom_controller']).new
129
+ result = controller.send(@runseq.code)
130
+ init_vars_by_runseq($runseq_id)
131
+ @xvars = $xvars
132
+ @xvars[@runseq.code.to_sym]= result.to_s
133
+ @xvars['current_step']= @runseq.rstep
134
+ @runseq.status= 'F' #finish
135
+ @runseq.stop= Time.now
136
+ @runseq.save
137
+ end_action
138
+ rescue => e
139
+ @xmain.status='E'
140
+ @xvars['error']= e.to_s+e.backtrace.to_s
141
+ @xmain.xvars= $xvars
142
+ @xmain.save
143
+ @runseq.status= 'F' #finish
144
+ @runseq.stop= Time.now
145
+ @runseq.save
146
+ refresh_to "/", :alert => "Sorry opeation error at #{@xmain.id} #{@xvars['error']}"
147
+ end
148
+ def run_output
149
+ init_vars(params[:id])
150
+ service= @xmain.service
151
+ disp= get_option("display")
152
+ display = (disp && !affirm(disp)) ? false : true
153
+ if service
154
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
155
+ @ui= File.read(f)
156
+ if Mindapp::Doc.where(:runseq_id=>@runseq.id).exists?
157
+ @doc= Mindapp::Doc.where(:runseq_id=>@runseq.id).first
158
+ @doc.update_attributes :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
159
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_user,
160
+ :ip=> get_ip, :service=>service, :display=>display,
161
+ :secured => @xmain.service.secured
162
+ else
163
+ @doc= Mindapp::Doc.create :name=> @runseq.name,
164
+ :content_type=>"output", :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
165
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_user,
166
+ :ip=> get_ip, :service=>service, :display=>display,
167
+ :secured => @xmain.service.secured
168
+ end
169
+ @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next &gt;"
170
+ @message = "สิ้นสุดการทำงาน" if @runseq.end
171
+ eval "@xvars[@runseq.code] = url_for(:controller=>'Mindapp', :action=>'document', :id=>@doc.id)"
172
+ else
173
+ # flash[:notice]= "ไม่สามารถค้นหาบริการที่ต้องการได้"
174
+ ma_log "Error: service not found"
175
+ redirect_to_root
176
+ end
177
+ #display= get_option("display")
178
+ unless display
179
+ end_action
180
+ end
181
+ end
182
+ def run_mail
183
+ init_vars(params[:id])
184
+ service= @xmain.service
185
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
186
+ @ui= File.read(f).html_safe
187
+ @doc= Mindapp::Doc.create :name=> @runseq.name,
188
+ :content_type=>"mail", :data_text=> render_to_string(:inline=>@ui, :layout=>false),
189
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_user,
190
+ :ip=> get_ip, :service=>service, :display=>false,
191
+ :secured => @xmain.service.secured
192
+ eval "@xvars[:#{@runseq.code}] = url_for(:controller=>'mindapp', :action=>'document', :id=>@doc.id)"
193
+ mail_from = get_option('from')
194
+ # sender= render_to_string(:inline=>mail_from) if mail_from
195
+ mail_to = get_option('to')
196
+ recipients= render_to_string(:inline=>mail_to) if mail_to
197
+ mail_subject = get_option('subject')
198
+ subject= render_to_string(:inline=>mail_subject) || "#{@runseq.name}"
199
+ MindappMailer.gmail(@doc.data_text, recipients, subject).deliver unless DONT_SEND_MAIL
200
+ end_action
201
+ end
202
+ def end_output
203
+ init_vars(params[:xmain_id])
204
+ end_action
205
+ end
206
+ def end_form
207
+ init_vars(params[:xmain_id])
208
+ eval "@xvars[@runseq.code] = {} unless @xvars[@runseq.code]"
209
+ params.each { |k,v|
210
+ if params[k].respond_to? :original_filename
211
+ get_image(k, params[k])
212
+ elsif params[k].is_a?(Hash)
213
+ eval "@xvars[@runseq.code][k] = v"
214
+ params[k].each { |k1,v1|
215
+ next unless v1.respond_to?(:original_filename)
216
+ get_image1(k, k1, params[k][k1])
217
+ }
218
+ else
219
+ v = v.to_unsafe_h unless v.class == String
220
+ eval "@xvars[@runseq.code][k] = v"
221
+ end
222
+ }
223
+ end_action
224
+ end
225
+ def end_action(next_runseq = nil)
226
+ # @runseq.status='F' unless @runseq_not_f
227
+ @xmain.xvars= @xvars
228
+ @xmain.status= 'R' # running
229
+ @xmain.save
230
+ @runseq.status='F'
231
+ @runseq.user= current_user
232
+ @runseq.stop= Time.now
233
+ @runseq.save
234
+ next_runseq= @xmain.runseqs.where(:rstep=> @runseq.rstep+1).first unless next_runseq
235
+ if @end_job || !next_runseq # job finish
236
+ @xmain.xvars= @xvars
237
+ @xmain.status= 'F' unless @xmain.status== 'E' # finish
238
+ @xmain.stop= Time.now
239
+ @xmain.save
240
+ if @xvars['p']['return']
241
+ redirect_to @xvars['p']['return'] and return
242
+ else
243
+ if @user
244
+ redirect_to :action=>'index' and return
245
+ else
246
+ redirect_to_root and return
247
+ end
248
+ end
249
+ else
250
+ @xmain.update_attribute :current_runseq, next_runseq.id
251
+ redirect_to :action=>'run', :id=>@xmain.id and return
252
+ end
253
+ end
254
+ # process images from first level
255
+ def get_image(key, params)
256
+ doc = Mindapp::Doc.create(
257
+ :name=> key.to_s,
258
+ :xmain=> @xmain.id,
259
+ :runseq=> @runseq.id,
260
+ :filename=> params.original_filename,
261
+ :content_type => params.content_type || 'application/zip',
262
+ :data_text=> '',
263
+ :display=>true,
264
+ :secured => @xmain.service.secured )
265
+ if defined?(IMAGE_LOCATION)
266
+ filename = "#{IMAGE_LOCATION}/f#{Param.gen(:asset_id)}"
267
+ File.open(filename,"wb") { |f| f.write(params.read) }
268
+ # File.open(filename,"wb") { |f| f.puts(params.read) }
269
+ eval "@xvars[@runseq.code][key] = '#{url_for(:action=>'document', :id=>doc.id, :only_path => true )}' "
270
+ doc.update_attributes :url => filename, :basename => File.basename(filename), :cloudinary => false
271
+ else
272
+ result = Cloudinary::Uploader.upload(params)
273
+ eval %Q{ @xvars[@runseq.code][key] = '#{result["url"]}' }
274
+ doc.update_attributes :url => result["url"], :basename => File.basename(result["url"]), :cloudinary => true
275
+ end
276
+ end
277
+ # process images from second level, e.g,, fields_for
278
+ def get_image1(key, key1, params)
279
+ doc = Mindapp::Doc.create(
280
+ :name=> "#{key}_#{key1}",
281
+ :xmain=> @xmain.id,
282
+ :runseq=> @runseq.id,
283
+ :filename=> params.original_filename,
284
+ :content_type => params.content_type || 'application/zip',
285
+ :data_text=> '',
286
+ :display=>true, :secured => @xmain.service.secured )
287
+ if defined?(IMAGE_LOCATION)
288
+ filename = "#{IMAGE_LOCATION}/f#{Param.gen(:asset_id)}"
289
+ File.open(filename,"wb") { |f| f.write(params.read) }
290
+ eval "@xvars[@runseq.code][key][key1] = '#{url_for(:action=>'document', :id=>doc.id, :only_path => true)}' "
291
+ doc.update_attributes :url => filename, :basename => File.basename(filename), :cloudinary => false
292
+ else
293
+ result = Cloudinary::Uploader.upload(params)
294
+ eval %Q{ @xvars[@runseq.code][key][key1] = '#{result["url"]}' }
295
+ doc.update_attributes :url => result["url"], :basename => File.basename(result["url"]), :cloudinary => true
296
+ end
297
+ end
298
+ def doc_print
299
+ render :file=>'public/doc.html', :layout=>'layouts/print'
300
+ end
301
+ # generate documentation for application
302
+ def doc
303
+ require 'rdoc'
304
+ @app= get_app
305
+ @intro = File.read('README.md')
306
+ @print= "<div align='right'><img src='/assets/printer.png'/> <a href='/mindapp/doc_print' target='_blank'/>พิมพ์</a></div>"
307
+ doc= render_to_string 'doc.md', :layout => false
308
+ html= Maruku.new(doc).to_html
309
+ File.open('public/doc.html','w') {|f| f.puts html }
310
+ respond_to do |format|
311
+ format.html {
312
+ render :text=> @print+html, :layout => 'layouts/_page'
313
+ # render :text=> Maruku.new(doc).to_html, :layout => false
314
+ # format.html {
315
+ # h = RDoc::Markup::ToHtml.new
316
+ # render :text=> h.convert(doc), :layout => 'layouts/_page'
317
+ }
318
+ format.pdf {
319
+ latex= Maruku.new(doc).to_latex
320
+ File.open('tmp/doc.md','w') {|f| f.puts doc}
321
+ File.open('tmp/doc.tex','w') {|f| f.puts latex}
322
+ # system('pdflatex tmp/doc.tex ')
323
+ # send_file( 'tmp/doc.pdf', :type => ‘application/pdf’,
324
+ # :disposition => ‘inline’, :filename => 'doc.pdf')
325
+ render :text=>'done'
326
+ }
327
+ end
328
+ end
329
+ # handle uploaded image
330
+ def document
331
+ doc = Mindapp::Doc.find params[:id]
332
+ if doc.cloudinary
333
+ require 'net/http'
334
+ require "uri"
335
+ uri = URI.parse(doc.url)
336
+ data = Net::HTTP.get_response(uri)
337
+ send_data(data.body, :filename=>doc.filename, :type=>doc.content_type, :disposition=>"inline")
338
+ else
339
+ data= read_binary(doc.url)
340
+ send_data(data, :filename=>doc.filename, :type=>doc.content_type, :disposition=>"inline")
341
+ end
342
+ end
343
+ def status
344
+ @xmain= Mindapp::Xmain.where(:xid=>params[:xid]).first
345
+ @title= "Task number #{params[:xid]} #{@xmain.name}"
346
+ @backbtn= true
347
+ @xvars= @xmain.xvars
348
+ # flash.now[:notice]= "รายการ #{@xmain.id} ได้ถูกยกเลิกแล้ว" if @xmain.status=='X'
349
+ ma_log "Task #{@xmain.id} is cancelled" if @xmain.status=='X'
350
+ # flash.now[:notice]= "transaction #{@xmain.id} was cancelled" if @xmain.status=='X'
351
+ rescue
352
+ refresh_to "/", :alert => "Could not find task number <b> #{params[:xid]} </b>"
353
+ end
354
+ def help
355
+ end
356
+ def search
357
+ @q = params[:q] || params[:ma_search][:q] || ""
358
+ @title = "ผลการค้นหา #{@q}"
359
+ @backbtn= true
360
+ @cache= true
361
+ if @q.blank?
362
+ redirect_to "/"
363
+ else
364
+ s= GmaSearch.create :q=>@q, :ip=> request.env["REMOTE_ADDR"]
365
+ do_search
366
+ end
367
+ end
368
+ def err404
369
+ # ma_log 'ERROR', 'main/err404'
370
+ flash[:notice] = "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
371
+ ma_log "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
372
+ redirect_to '/'
373
+ end
374
+ def err500
375
+ # ma_log 'ERROR', 'main/err500'
376
+ flash[:notice] = "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
377
+ ma_log "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
378
+ redirect_to '/'
379
+ end
380
+
381
+ private
382
+ def create_xmain(service)
383
+ c = name2camel(service.module.code)
384
+ custom_controller= "#{c}Controller"
385
+ params["return"] = request.env['HTTP_REFERER']
386
+ Mindapp::Xmain.create :service=>service,
387
+ :start=>Time.now,
388
+ :name=>service.name,
389
+ :ip=> get_ip,
390
+ :status=>'I', # init
391
+ :user=>current_user,
392
+ :xvars=> {
393
+ :service_id=>service.id,
394
+ :p=>params.to_unsafe_h,
395
+ :id=>params[:id],
396
+ :user_id=>current_user.try(:id),
397
+ :custom_controller=>custom_controller,
398
+ :host=>request.host,
399
+ :referer=>request.env['HTTP_REFERER']
400
+ }
401
+ end
402
+ def create_runseq(xmain)
403
+ @xvars= xmain.xvars
404
+ default_role= get_default_role
405
+ xml= xmain.service.xml
406
+ root = REXML::Document.new(xml).root
407
+ i= 0; j= 0 # i= step, j= form_step
408
+ root.elements.each('node') do |activity|
409
+ text= activity.attributes['TEXT']
410
+ next if ma_comment?(text)
411
+ next if text =~/^rule:\s*/
412
+ action= freemind2action(activity.elements['icon'].attributes['BUILTIN']) if activity.elements['icon']
413
+ return false unless action
414
+ i= i + 1
415
+ output_display= false
416
+ if action=='output'
417
+ display= get_option_xml("display", activity)
418
+ if display && !affirm(display)
419
+ output_display= false
420
+ else
421
+ output_display= true
422
+ end
423
+ end
424
+ j= j + 1 if (action=='form' || output_display)
425
+ @xvars['referer'] = activity.attributes['TEXT'] if action=='redirect'
426
+ if action!= 'if'
427
+ scode, name= text.split(':', 2)
428
+ name ||= scode; name.strip!
429
+ code= name2code(scode)
430
+ else
431
+ code= text
432
+ name= text
433
+ end
434
+ role= get_option_xml("role", activity) || default_role
435
+ rule= get_option_xml("rule", activity) || "true"
436
+ runseq= Mindapp::Runseq.create :xmain=>xmain.id,
437
+ :name=> name, :action=> action,
438
+ :code=> code, :role=>role.upcase, :rule=> rule,
439
+ :rstep=> i, :form_step=> j, :status=>'I',
440
+ :xml=>activity.to_s
441
+ xmain.current_runseq= runseq.id if i==1
442
+ end
443
+ @xvars['total_steps']= i
444
+ @xvars['total_form_steps']= j
445
+ end
446
+ def init_vars(xmain)
447
+ @xmain= Mindapp::Xmain.find xmain
448
+ @xvars= @xmain.xvars
449
+ @runseq= @xmain.runseqs.find @xmain.current_runseq
450
+ # authorize?
451
+ @xvars['current_step']= @runseq.rstep
452
+ @xvars['referrer']= request.referrer
453
+ session[:xmain_id]= @xmain.id
454
+ session[:runseq_id]= @runseq.id
455
+ unless params[:action]=='run_call'
456
+ @runseq.start ||= Time.now
457
+ @runseq.status= 'R' # running
458
+ @runseq.save
459
+ end
460
+ $xmain= @xmain; $xvars= @xvars
461
+ $runseq_id= @runseq.id
462
+ $user_id= current_user.try(:id)
463
+ end
464
+ def init_vars_by_runseq(runseq_id)
465
+ @runseq= Mindapp::Runseq.find runseq_id
466
+ @xmain= @runseq.xmain
467
+ @xvars= @xmain.xvars
468
+ #@xvars[:current_step]= @runseq.rstep
469
+ @runseq.start ||= Time.now
470
+ @runseq.status= 'R' # running
471
+ @runseq.save
472
+ end
473
+ def store_asset
474
+ if params[:content]
475
+ doc = GmaDoc.create! :name=> 'asset',
476
+ :filename=> (params[:file_name]||''),
477
+ :content_type => (params[:content_type] || 'application/zip'),
478
+ :data_text=> '',
479
+ :display=>true
480
+ path = (IMAGE_LOCATION || "tmp")
481
+ File.open("#{path}/f#{doc.id}","wb") { |f|
482
+ f.puts(params[:content])
483
+ }
484
+ render :xml=>"<elocal><doc id='#{doc.id}' /><success /></elocal>"
485
+ else
486
+ render :xml=>"<elocal><fail /></elocal>"
487
+ end
488
+ end
489
+ def do_search
490
+ if current_user.secured?
491
+ @docs = GmaDoc.search_secured(@q.downcase, params[:page], PER_PAGE)
492
+ else
493
+ @docs = GmaDoc.search(@q.downcase, params[:page], PER_PAGE)
494
+ end
495
+ @xmains = GmaXmain.find(@docs.map(&:ma_xmain_id)).sort { |a,b| b.id<=>a.id }
496
+ # @xmains = GmaXmain.find @docs.map(&:created_at).sort { |a,b| b<=>a }
497
+ end
498
+ def read_binary(path)
499
+ File.open path, "rb" do |f| f.read end
500
+ end
501
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+ class SessionsController < ApplicationController
3
+ def new
4
+ @title= 'Sign In'
5
+ end
6
+
7
+ # to refresh the page, must know BEFOREHAND that the action needs refresh
8
+ # then use attribute 'data-ajax'=>'false'
9
+ # see app/views/sessions/new.html.erb for sample
10
+ def create
11
+ user = User.from_omniauth(request.env["omniauth.auth"])
12
+ session[:user_id] = user.id
13
+ redirect_to '/mindapp/pending'
14
+ rescue
15
+ redirect_to root_path, :alert=> "Authentication failed, please try again."
16
+ end
17
+
18
+ def destroy
19
+ session[:user_id] = nil
20
+ # redirect_to '/mindapp/help'
21
+ refresh_to root_path
22
+ # render not work!!
23
+ #redirect_to 'mindapp/index'
24
+ end
25
+
26
+ def failure
27
+ ma_log "Authentication failed, please try again."
28
+ redirect_to root_path, :alert=> "Authentication failed, please try again."
29
+ end
30
+ end
@@ -0,0 +1,12 @@
1
+ class SitemapController < ApplicationController
2
+ # From https://makandracards.com/makandra/689-know-your-haml-comments
3
+ SitemapController < ApplicationController
4
+ layout nil
5
+ def index
6
+ headers['Content-Type'] = 'application/xml'
7
+ respond_to do |format|
8
+ format.xml {@articles = Article.all}
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class UsersController < ApplicationController
3
+ def index
4
+ @today = Date.today
5
+ @xmains = current_user.xmains.in(status:['R','I']).asc(:created_at)
6
+ end
7
+
8
+ # mindapp methods
9
+ def update_user
10
+ # can't use session, current_user inside mindapp methods
11
+ $user.update_attribute :email, $xvars["enter_user"]["user"]["email"]
12
+ end
13
+ def change_password
14
+ # check if old password correct
15
+ identity = Identity.find_by :code=> $user.code
16
+ if identity.authenticate($xvars["enter"]["epass"])
17
+ identity.password = $xvars["enter"]["npass"]
18
+ identity.password_confirmation = $xvars["enter"]["npass_confirm"]
19
+ identity.save
20
+ ma_log "Password changed"
21
+ else
22
+ ma_log "Unauthorized access"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,2 @@
1
+ module AdminsHelper
2
+ end
@@ -0,0 +1,33 @@
1
+ module ApplicationHelper
2
+
3
+ def title(blog_title)
4
+ content_for(:title) { blog_title }
5
+ end
6
+
7
+ def meta_description(blog_text)
8
+ content_for(:meta_description) { blog_text }
9
+ end
10
+
11
+ require 'redcarpet'
12
+ require 'rouge'
13
+ require 'rouge/plugins/redcarpet'
14
+
15
+ class CodeRayify < Redcarpet::Render::HTML
16
+ def block_code(code, language)
17
+ CodeRay.scan(code, language).div
18
+ end
19
+ end
20
+
21
+ def markdown(text)
22
+ coderayified = CodeRayify.new(:filter_html => true,
23
+ :hard_wrap => true)
24
+ options = {
25
+ :fenced_code_blocks => true,
26
+ :no_intra_emphasis => true,
27
+ :autolink => true,
28
+ :lax_html_blocks => true,
29
+ }
30
+ markdown_to_html = Redcarpet::Markdown.new(coderayified, options)
31
+ markdown_to_html.render(text).html_safe
32
+ end
33
+ end
@@ -0,0 +1,2 @@
1
+ module ArticlesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module BasicHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module CommentsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module CtrsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module DevsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module PicturesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module SitemapHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module UsersHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ class ApplicationJob < ActiveJob::Base
2
+ end
@@ -0,0 +1,4 @@
1
+ class ApplicationMailer < ActionMailer::Base
2
+ default from: 'from@example.com'
3
+ layout 'mailer'
4
+ end
@@ -0,0 +1,7 @@
1
+ class MindappMailer < ActionMailer::Base
2
+ default from: "from@example.com"
3
+ def gmail(ui, to="", subject="", from="")
4
+ @ui = ui
5
+ mail(:to => to, :subject => subject, :from => from)
6
+ end
7
+ end