jinda_mind 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +4 -0
  4. data/Rakefile +3 -0
  5. data/app/assets/config/manifest.js +4 -0
  6. data/app/assets/images/4dcity-old.ico +0 -0
  7. data/app/assets/images/4dcity.ico +0 -0
  8. data/app/assets/images/account.png +0 -0
  9. data/app/assets/images/add.png +0 -0
  10. data/app/assets/images/ajax-loader-circle.gif +0 -0
  11. data/app/assets/images/ajax-loader.gif +0 -0
  12. data/app/assets/images/anchor.png +0 -0
  13. data/app/assets/images/application_double.png +0 -0
  14. data/app/assets/images/application_form_edit.png +0 -0
  15. data/app/assets/images/arrow_left.png +0 -0
  16. data/app/assets/images/arrow_right.png +0 -0
  17. data/app/assets/images/arrow_turn_left.png +0 -0
  18. data/app/assets/images/arrow_turn_right.png +0 -0
  19. data/app/assets/images/calendar.png +0 -0
  20. data/app/assets/images/cancel.png +0 -0
  21. data/app/assets/images/chart_bar.png +0 -0
  22. data/app/assets/images/clock.png +0 -0
  23. data/app/assets/images/cog.png +0 -0
  24. data/app/assets/images/control_fastforward.png +0 -0
  25. data/app/assets/images/control_play.png +0 -0
  26. data/app/assets/images/cross.png +0 -0
  27. data/app/assets/images/delete.png +0 -0
  28. data/app/assets/images/external-link.png +0 -0
  29. data/app/assets/images/facebook-continue-button.png +0 -0
  30. data/app/assets/images/facebooksmall.png +0 -0
  31. data/app/assets/images/favicon.ico +0 -0
  32. data/app/assets/images/freemind(mm).png +0 -0
  33. data/app/assets/images/google-continue-button.png +0 -0
  34. data/app/assets/images/help.png +0 -0
  35. data/app/assets/images/highway-menu.png +0 -0
  36. data/app/assets/images/highway.png +0 -0
  37. data/app/assets/images/house.png +0 -0
  38. data/app/assets/images/icons-18-black.png +0 -0
  39. data/app/assets/images/icons-18-white.png +0 -0
  40. data/app/assets/images/icons-36-black.png +0 -0
  41. data/app/assets/images/icons-36-white.png +0 -0
  42. data/app/assets/images/logo.png +0 -0
  43. data/app/assets/images/logo_jinda.png +0 -0
  44. data/app/assets/images/logout.png +0 -0
  45. data/app/assets/images/new.gif +0 -0
  46. data/app/assets/images/new.png +0 -0
  47. data/app/assets/images/page.png +0 -0
  48. data/app/assets/images/page_attach.png +0 -0
  49. data/app/assets/images/page_green.png +0 -0
  50. data/app/assets/images/page_output.png +0 -0
  51. data/app/assets/images/page_pdf.png +0 -0
  52. data/app/assets/images/pencil.png +0 -0
  53. data/app/assets/images/printer.png +0 -0
  54. data/app/assets/images/refresh.png +0 -0
  55. data/app/assets/images/report.png +0 -0
  56. data/app/assets/images/rssmall.png +0 -0
  57. data/app/assets/images/tick.png +0 -0
  58. data/app/assets/images/twittersmall.png +0 -0
  59. data/app/assets/images/user.png +0 -0
  60. data/app/assets/images/user_admin_gear.png +0 -0
  61. data/app/assets/images/view_code.png +0 -0
  62. data/app/assets/javascripts/application.js-org +24 -0
  63. data/app/assets/javascripts/cable.js +13 -0
  64. data/app/assets/javascripts/disable_enter_key.js +10 -0
  65. data/app/assets/javascripts/iscroll-wrapper.js +32 -0
  66. data/app/assets/javascripts/iscroll.js +1084 -0
  67. data/app/assets/javascripts/jinda.js +14 -0
  68. data/app/assets/javascripts/jinda_jqm.js +24 -0
  69. data/app/assets/javascripts/jquery.mobile-1.2.1.js +9272 -0
  70. data/app/assets/javascripts/jquery.mobile.datebox.js +1778 -0
  71. data/app/assets/javascripts/jquery.mobile.splitview.js +695 -0
  72. data/app/assets/stylesheets/app.scss +90 -0
  73. data/app/assets/stylesheets/articles.scss +94 -0
  74. data/app/assets/stylesheets/fonts/sarabun.eot +0 -0
  75. data/app/assets/stylesheets/fonts/sarabun.ttf +0 -0
  76. data/app/assets/stylesheets/fonts/sarabun.woff +0 -0
  77. data/app/assets/stylesheets/fonts/sarabun_bold.ttf +0 -0
  78. data/app/assets/stylesheets/fonts/sarabun_bolditalic.ttf +0 -0
  79. data/app/assets/stylesheets/fonts/sarabun_italic.ttf +0 -0
  80. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.eot +0 -0
  81. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.ttf +0 -0
  82. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.woff +0 -0
  83. data/app/assets/stylesheets/fonts/thsarabunnew.css +47 -0
  84. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.eot +0 -0
  85. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.ttf +0 -0
  86. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.woff +0 -0
  87. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.eot +0 -0
  88. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.ttf +0 -0
  89. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.woff +0 -0
  90. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.eot +0 -0
  91. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.ttf +0 -0
  92. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.woff +0 -0
  93. data/app/assets/stylesheets/images/ajax-loader.gif +0 -0
  94. data/app/assets/stylesheets/images/button_black.png +0 -0
  95. data/app/assets/stylesheets/images/button_blue.png +0 -0
  96. data/app/assets/stylesheets/images/button_red.png +0 -0
  97. data/app/assets/stylesheets/images/gears.png +0 -0
  98. data/app/assets/stylesheets/images/icons-18-black.png +0 -0
  99. data/app/assets/stylesheets/images/icons-18-white.png +0 -0
  100. data/app/assets/stylesheets/images/icons-36-black.png +0 -0
  101. data/app/assets/stylesheets/images/icons-36-white.png +0 -0
  102. data/app/assets/stylesheets/images/indicator.gif +0 -0
  103. data/app/assets/stylesheets/jinda.scss +185 -0
  104. data/app/assets/stylesheets/jinda_jqm.css.scss +32 -0
  105. data/app/assets/stylesheets/jquery.mobile-1.2.1.css +2339 -0
  106. data/app/assets/stylesheets/jquery.mobile.datebox.css +65 -0
  107. data/app/assets/stylesheets/jquery.mobile.grids.collapsible.css +122 -0
  108. data/app/assets/stylesheets/jquery.mobile.splitview.css +128 -0
  109. data/app/assets/stylesheets/kul-4.2.css +1516 -0
  110. data/app/assets/stylesheets/kul-4.2.min.css +11 -0
  111. data/app/assets/stylesheets/modules.scss +84 -0
  112. data/app/assets/stylesheets/sarabun.css +37 -0
  113. data/app/assets/stylesheets/social.scss +133 -0
  114. data/app/controllers/concerns/jinda_general_concern.rb +179 -0
  115. data/app/controllers/concerns/jinda_run_concern.rb +368 -0
  116. data/app/controllers/jinda_controller.rb +66 -0
  117. data/bin/console +14 -0
  118. data/bin/setup +8 -0
  119. data/config/mongoid.yml +19 -0
  120. data/config/routes.rb +44 -0
  121. data/lib/generators/jinda/USAGE +2 -0
  122. data/lib/generators/jinda/config_generator.rb +102 -0
  123. data/lib/generators/jinda/install_generator.rb +269 -0
  124. data/lib/generators/jinda/installer/gems_install.rb +132 -0
  125. data/lib/generators/jinda/installer/test.rb +6 -0
  126. data/lib/generators/jinda/minitest_generator.rb +30 -0
  127. data/lib/generators/jinda/rspec_generator.rb +30 -0
  128. data/lib/generators/jinda/templates/Dockerfile +26 -0
  129. data/lib/generators/jinda/templates/README.md +173 -0
  130. data/lib/generators/jinda/templates/app/assets/config/manifest.js +4 -0
  131. data/lib/generators/jinda/templates/app/assets/javascripts/application.js +15 -0
  132. data/lib/generators/jinda/templates/app/assets/stylesheets/application.css.scss +15 -0
  133. data/lib/generators/jinda/templates/app/channels/application_cable/channel.rb +4 -0
  134. data/lib/generators/jinda/templates/app/channels/application_cable/connection.rb +4 -0
  135. data/lib/generators/jinda/templates/app/controllers/api/v1/notes_controller.rb +81 -0
  136. data/lib/generators/jinda/templates/app/controllers/jinda_org/admins_controller.rb +6 -0
  137. data/lib/generators/jinda/templates/app/controllers/jinda_org/application_controller.rb +41 -0
  138. data/lib/generators/jinda/templates/app/controllers/jinda_org/articles_controller.rb +110 -0
  139. data/lib/generators/jinda/templates/app/controllers/jinda_org/comments_controller.rb +31 -0
  140. data/lib/generators/jinda/templates/app/controllers/jinda_org/docs_controller.rb +56 -0
  141. data/lib/generators/jinda/templates/app/controllers/jinda_org/identities_controller.rb +5 -0
  142. data/lib/generators/jinda/templates/app/controllers/jinda_org/notes_controller.rb +84 -0
  143. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets.rb +28 -0
  144. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets_controller.rb +34 -0
  145. data/lib/generators/jinda/templates/app/controllers/jinda_org/sessions_controller.rb +44 -0
  146. data/lib/generators/jinda/templates/app/controllers/jinda_org/sitemap_controller.rb +12 -0
  147. data/lib/generators/jinda/templates/app/controllers/jinda_org/users_controller.rb +35 -0
  148. data/lib/generators/jinda/templates/app/helpers/admins_helper.rb +2 -0
  149. data/lib/generators/jinda/templates/app/helpers/application_helper.rb +33 -0
  150. data/lib/generators/jinda/templates/app/helpers/articles_helper.rb +2 -0
  151. data/lib/generators/jinda/templates/app/helpers/basic_helper.rb +2 -0
  152. data/lib/generators/jinda/templates/app/helpers/comments_helper.rb +2 -0
  153. data/lib/generators/jinda/templates/app/helpers/ctrs_helper.rb +2 -0
  154. data/lib/generators/jinda/templates/app/helpers/devs_helper.rb +2 -0
  155. data/lib/generators/jinda/templates/app/helpers/pictures_helper.rb +2 -0
  156. data/lib/generators/jinda/templates/app/helpers/sitemap_helper.rb +2 -0
  157. data/lib/generators/jinda/templates/app/helpers/users_helper.rb +2 -0
  158. data/lib/generators/jinda/templates/app/jinda/index.mm +486 -0
  159. data/lib/generators/jinda/templates/app/jinda/template/index.mm +366 -0
  160. data/lib/generators/jinda/templates/app/jinda/template/linkview.haml +21 -0
  161. data/lib/generators/jinda/templates/app/jinda/template/view.html.erb +34 -0
  162. data/lib/generators/jinda/templates/app/mailers/application_mailer.rb +4 -0
  163. data/lib/generators/jinda/templates/app/mailers/jinda_mailer.rb +7 -0
  164. data/lib/generators/jinda/templates/app/mailers/note_mailer.rb +10 -0
  165. data/lib/generators/jinda/templates/app/mailers/user_mailer.rb +15 -0
  166. data/lib/generators/jinda/templates/app/models/address.rb +14 -0
  167. data/lib/generators/jinda/templates/app/models/article.rb +14 -0
  168. data/lib/generators/jinda/templates/app/models/comment.rb +14 -0
  169. data/lib/generators/jinda/templates/app/models/identity.rb +18 -0
  170. data/lib/generators/jinda/templates/app/models/jinda/doc.rb +36 -0
  171. data/lib/generators/jinda/templates/app/models/jinda/module.rb +11 -0
  172. data/lib/generators/jinda/templates/app/models/jinda/notice.rb +14 -0
  173. data/lib/generators/jinda/templates/app/models/jinda/role.rb +8 -0
  174. data/lib/generators/jinda/templates/app/models/jinda/runseq.rb +24 -0
  175. data/lib/generators/jinda/templates/app/models/jinda/service.rb +17 -0
  176. data/lib/generators/jinda/templates/app/models/jinda/xmain.rb +38 -0
  177. data/lib/generators/jinda/templates/app/models/note.rb +22 -0
  178. data/lib/generators/jinda/templates/app/models/param.rb +41 -0
  179. data/lib/generators/jinda/templates/app/models/person.rb +14 -0
  180. data/lib/generators/jinda/templates/app/models/user.rb +66 -0
  181. data/lib/generators/jinda/templates/app/views/adminbsbs/content.haml +241 -0
  182. data/lib/generators/jinda/templates/app/views/admins/edit_role/edit_role.html.erb +7 -0
  183. data/lib/generators/jinda/templates/app/views/admins/edit_role/select_user.html.erb +4 -0
  184. data/lib/generators/jinda/templates/app/views/api/v1/note.haml +0 -0
  185. data/lib/generators/jinda/templates/app/views/articles/_report.haml +35 -0
  186. data/lib/generators/jinda/templates/app/views/articles/edit.haml +23 -0
  187. data/lib/generators/jinda/templates/app/views/articles/edit_article/edit_article.html.erb +15 -0
  188. data/lib/generators/jinda/templates/app/views/articles/edit_article/select_article.html.erb +12 -0
  189. data/lib/generators/jinda/templates/app/views/articles/index.haml +5 -0
  190. data/lib/generators/jinda/templates/app/views/articles/my.haml +5 -0
  191. data/lib/generators/jinda/templates/app/views/articles/new_article/form_article.html.erb +16 -0
  192. data/lib/generators/jinda/templates/app/views/articles/show.html.haml +58 -0
  193. data/lib/generators/jinda/templates/app/views/articles/xedit_article/edit_article.html.erb +13 -0
  194. data/lib/generators/jinda/templates/app/views/ctrs/vfolder1/viewfile1.html.erb +23 -0
  195. data/lib/generators/jinda/templates/app/views/ctrs/vfolder1/viewfile2.html.erb +23 -0
  196. data/lib/generators/jinda/templates/app/views/ctrs/vfolder2/viewfile2.html.erb +23 -0
  197. data/lib/generators/jinda/templates/app/views/custom/_adsense.haml +6 -0
  198. data/lib/generators/jinda/templates/app/views/docs/doc_edit/doc_edit.html.erb +21 -0
  199. data/lib/generators/jinda/templates/app/views/docs/doc_edit/doc_select.html.erb +14 -0
  200. data/lib/generators/jinda/templates/app/views/docs/doc_new/doc_form.html.erb +32 -0
  201. data/lib/generators/jinda/templates/app/views/docs/doc_new/doc_form.md +36 -0
  202. data/lib/generators/jinda/templates/app/views/docs/doc_xedit/doc_edit.html.erb +21 -0
  203. data/lib/generators/jinda/templates/app/views/docs/edit/select_note.html.erb +14 -0
  204. data/lib/generators/jinda/templates/app/views/docs/index.haml +21 -0
  205. data/lib/generators/jinda/templates/app/views/docs/my.haml +27 -0
  206. data/lib/generators/jinda/templates/app/views/identities/new.html.haml +32 -0
  207. data/lib/generators/jinda/templates/app/views/jinda/_activity.md +10 -0
  208. data/lib/generators/jinda/templates/app/views/jinda/_menu.haml +27 -0
  209. data/lib/generators/jinda/templates/app/views/jinda/_menu_mm.haml +44 -0
  210. data/lib/generators/jinda/templates/app/views/jinda/_model.md +5 -0
  211. data/lib/generators/jinda/templates/app/views/jinda/_modul.md +9 -0
  212. data/lib/generators/jinda/templates/app/views/jinda/_pending_home.haml +5 -0
  213. data/lib/generators/jinda/templates/app/views/jinda/_pending_page.haml +24 -0
  214. data/lib/generators/jinda/templates/app/views/jinda/_service.md +24 -0
  215. data/lib/generators/jinda/templates/app/views/jinda/_static.haml +13 -0
  216. data/lib/generators/jinda/templates/app/views/jinda/doc-thai.md +37 -0
  217. data/lib/generators/jinda/templates/app/views/jinda/doc.md +36 -0
  218. data/lib/generators/jinda/templates/app/views/jinda/error_logs.haml +22 -0
  219. data/lib/generators/jinda/templates/app/views/jinda/feed.rss.builder +27 -0
  220. data/lib/generators/jinda/templates/app/views/jinda/help.haml +20 -0
  221. data/lib/generators/jinda/templates/app/views/jinda/index.html.haml +53 -0
  222. data/lib/generators/jinda/templates/app/views/jinda/logs.haml +22 -0
  223. data/lib/generators/jinda/templates/app/views/jinda/notice_logs.haml +18 -0
  224. data/lib/generators/jinda/templates/app/views/jinda/pending.haml +1 -0
  225. data/lib/generators/jinda/templates/app/views/jinda/run_form.haml +42 -0
  226. data/lib/generators/jinda/templates/app/views/jinda/run_output.haml +38 -0
  227. data/lib/generators/jinda/templates/app/views/jinda/search.haml +20 -0
  228. data/lib/generators/jinda/templates/app/views/jinda/status.haml +61 -0
  229. data/lib/generators/jinda/templates/app/views/jinda_mailer/gmail.html.erb +9 -0
  230. data/lib/generators/jinda/templates/app/views/layouts/_head.html.erb +10 -0
  231. data/lib/generators/jinda/templates/app/views/layouts/_meta_tag.html.erb +19 -0
  232. data/lib/generators/jinda/templates/app/views/layouts/application.haml +4 -0
  233. data/lib/generators/jinda/templates/app/views/layouts/bsb/_footer.haml +7 -0
  234. data/lib/generators/jinda/templates/app/views/layouts/bsb/_header.haml +147 -0
  235. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu.haml +47 -0
  236. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu_mm.haml +34 -0
  237. data/lib/generators/jinda/templates/app/views/layouts/bsb/_rightbar.haml +123 -0
  238. data/lib/generators/jinda/templates/app/views/layouts/bsb/_sidebar.haml +155 -0
  239. data/lib/generators/jinda/templates/app/views/layouts/bsb/application.haml-bsb +47 -0
  240. data/lib/generators/jinda/templates/app/views/layouts/gmail.html.erb +9 -0
  241. data/lib/generators/jinda/templates/app/views/layouts/jqm/_full.haml +33 -0
  242. data/lib/generators/jinda/templates/app/views/layouts/jqm/_page.haml +16 -0
  243. data/lib/generators/jinda/templates/app/views/layouts/jqm/application.haml-jqm +4 -0
  244. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.erb +13 -0
  245. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.haml +3 -0
  246. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.erb +1 -0
  247. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.haml +1 -0
  248. data/lib/generators/jinda/templates/app/views/layouts/mobile.html.erb +13 -0
  249. data/lib/generators/jinda/templates/app/views/layouts/mobilejq.html.erb +31 -0
  250. data/lib/generators/jinda/templates/app/views/layouts/print.html.erb +22 -0
  251. data/lib/generators/jinda/templates/app/views/layouts/utf8.html.erb +22 -0
  252. data/lib/generators/jinda/templates/app/views/note_mailer/gmail.html.haml +7 -0
  253. data/lib/generators/jinda/templates/app/views/note_mailer/gmail.text.haml +8 -0
  254. data/lib/generators/jinda/templates/app/views/notes/delete/select_note.html.erb +14 -0
  255. data/lib/generators/jinda/templates/app/views/notes/edit/edit_note.html.erb +10 -0
  256. data/lib/generators/jinda/templates/app/views/notes/edit/select_note.html.erb +14 -0
  257. data/lib/generators/jinda/templates/app/views/notes/index.haml +71 -0
  258. data/lib/generators/jinda/templates/app/views/notes/mail/display_mail.html.erb +20 -0
  259. data/lib/generators/jinda/templates/app/views/notes/mail/select_note.html.erb +19 -0
  260. data/lib/generators/jinda/templates/app/views/notes/mail/show.html.haml +13 -0
  261. data/lib/generators/jinda/templates/app/views/notes/my.haml +21 -0
  262. data/lib/generators/jinda/templates/app/views/notes/new/new_note.html.erb +13 -0
  263. data/lib/generators/jinda/templates/app/views/notes/show.haml +10 -0
  264. data/lib/generators/jinda/templates/app/views/notes/xedit/edit_note.html.erb +10 -0
  265. data/lib/generators/jinda/templates/app/views/password_resets/edit.html.erb +21 -0
  266. data/lib/generators/jinda/templates/app/views/password_resets/new.html.haml +11 -0
  267. data/lib/generators/jinda/templates/app/views/sessions/new.html.haml +22 -0
  268. data/lib/generators/jinda/templates/app/views/sitemap/index.xml.haml +10 -0
  269. data/lib/generators/jinda/templates/app/views/user_mailer/password_reset.html.haml +3 -0
  270. data/lib/generators/jinda/templates/app/views/user_mailer/password_reset.text.erb +3 -0
  271. data/lib/generators/jinda/templates/app/views/user_mailer/password_reset.text.haml +3 -0
  272. data/lib/generators/jinda/templates/app/views/users/index.haml +13 -0
  273. data/lib/generators/jinda/templates/app/views/users/pwd/enter.html.erb +6 -0
  274. data/lib/generators/jinda/templates/app/views/users/user/enter_user.html.erb +10 -0
  275. data/lib/generators/jinda/templates/config/cloudinary.yml +9 -0
  276. data/lib/generators/jinda/templates/config/initializers/fix_mongoid_generator.rb-org +14 -0
  277. data/lib/generators/jinda/templates/config/mongoid.yml-docker +182 -0
  278. data/lib/generators/jinda/templates/config/mongoid.yml-localhost +182 -0
  279. data/lib/generators/jinda/templates/db/seeds.rb +6 -0
  280. data/lib/generators/jinda/templates/docker-compose.yml +17 -0
  281. data/lib/generators/jinda/templates/dot/dot.env +2 -0
  282. data/lib/generators/jinda/templates/dotrspec +3 -0
  283. data/lib/generators/jinda/templates/entrypoint.sh +13 -0
  284. data/lib/generators/jinda/templates/jinda.yml +10 -0
  285. data/lib/generators/jinda/templates/public/404.html +67 -0
  286. data/lib/generators/jinda/templates/public/422.html +67 -0
  287. data/lib/generators/jinda/templates/public/500.html +66 -0
  288. data/lib/generators/jinda/templates/public/assets/images/logo.png +0 -0
  289. data/lib/generators/jinda/templates/public/favicon.ico +0 -0
  290. data/lib/generators/jinda/templates/public/robots.txt +3 -0
  291. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_index_spec.rb +23 -0
  292. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_my_spec.rb +14 -0
  293. data/lib/generators/jinda/templates/spec/controllers/api/v1_post_spec.rb +19 -0
  294. data/lib/generators/jinda/templates/spec/controllers/sessions_controller_spec.rb +98 -0
  295. data/lib/generators/jinda/templates/spec/features/userlogins_spec.rb +23 -0
  296. data/lib/generators/jinda/templates/spec/mailers/note_spec.rb +24 -0
  297. data/lib/generators/jinda/templates/spec/mailers/previews/note_preview.rb +9 -0
  298. data/lib/generators/jinda/templates/spec/models/note_spec.rb +41 -0
  299. data/lib/generators/jinda/templates/spec/models/user_spec.rb +12 -0
  300. data/lib/generators/jinda/templates/spec/rails_helper.rb +42 -0
  301. data/lib/generators/jinda/templates/spec/spec_helper.rb +80 -0
  302. data/lib/generators/jinda/templates/spec/support/authentication_helper.rb +20 -0
  303. data/lib/generators/jinda/templates/spec/support/databasecleaner.rb +13 -0
  304. data/lib/generators/jinda/templates/spec/support/factory_bot.rb +12 -0
  305. data/lib/generators/jinda/templates/spec/support/omniauth_macros.rb +38 -0
  306. data/lib/generators/jinda/templates/spec/support/request_spec_helper.rb +8 -0
  307. data/lib/generators/jinda/templates/spec/views/articles/_article.html.erb_spec.rbx +14 -0
  308. data/lib/generators/jinda/templates/test/application_system_test_case.rb +5 -0
  309. data/lib/generators/jinda/templates/test/integration/jinda_routes_test.rb +42 -0
  310. data/lib/generators/jinda/templates/test/test_helper.rb +6 -0
  311. data/lib/jinda/date_helpers.rb +109 -0
  312. data/lib/jinda/gem_helpers.rb +11 -0
  313. data/lib/jinda/gen_class.rb +13 -0
  314. data/lib/jinda/gen_freemind.rb +33 -0
  315. data/lib/jinda/gen_helpers.rb +141 -0
  316. data/lib/jinda/gen_models.rb +137 -0
  317. data/lib/jinda/gen_modules.rb +17 -0
  318. data/lib/jinda/gen_runseq.rb +71 -0
  319. data/lib/jinda/gen_services.rb +90 -0
  320. data/lib/jinda/gen_xmain.rb +38 -0
  321. data/lib/jinda/get_app.rb +34 -0
  322. data/lib/jinda/helpers.rb +26 -0
  323. data/lib/jinda/init_vars.rb +36 -0
  324. data/lib/jinda/railtie.rb +18 -0
  325. data/lib/jinda/rake_views.rb +63 -0
  326. data/lib/jinda/refresh.rb +67 -0
  327. data/lib/jinda/themes.rb +175 -0
  328. data/lib/jinda.rb +7 -0
  329. data/lib/jquery.validate.js +1293 -0
  330. data/lib/tasks/jinda.rake +42 -0
  331. data/test/dummy/Rakefile +6 -0
  332. data/test/dummy/app/assets/config/manifest.js +3 -0
  333. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  334. data/test/dummy/app/channels/application_cable/channel.rb +4 -0
  335. data/test/dummy/app/channels/application_cable/connection.rb +4 -0
  336. data/test/dummy/app/controllers/application_controller.rb +2 -0
  337. data/test/dummy/app/helpers/application_helper.rb +2 -0
  338. data/test/dummy/app/javascript/packs/application.js +15 -0
  339. data/test/dummy/app/jobs/application_job.rb +7 -0
  340. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  341. data/test/dummy/app/models/application_record.rb +3 -0
  342. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  343. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  344. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  345. data/test/dummy/bin/rails +4 -0
  346. data/test/dummy/bin/rake +4 -0
  347. data/test/dummy/bin/setup +33 -0
  348. data/test/dummy/config/application.rb +19 -0
  349. data/test/dummy/config/boot.rb +5 -0
  350. data/test/dummy/config/cable.yml +10 -0
  351. data/test/dummy/config/database.yml +25 -0
  352. data/test/dummy/config/environment.rb +5 -0
  353. data/test/dummy/config/environments/development.rb +62 -0
  354. data/test/dummy/config/environments/production.rb +112 -0
  355. data/test/dummy/config/environments/test.rb +49 -0
  356. data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
  357. data/test/dummy/config/initializers/assets.rb +12 -0
  358. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  359. data/test/dummy/config/initializers/content_security_policy.rb +28 -0
  360. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  361. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  362. data/test/dummy/config/initializers/inflections.rb +16 -0
  363. data/test/dummy/config/initializers/mime_types.rb +4 -0
  364. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  365. data/test/dummy/config/locales/en.yml +33 -0
  366. data/test/dummy/config/puma.rb +38 -0
  367. data/test/dummy/config/routes.rb +3 -0
  368. data/test/dummy/config/spring.rb +6 -0
  369. data/test/dummy/config/storage.yml +34 -0
  370. data/test/dummy/config.ru +5 -0
  371. data/test/dummy/db/development.sqlite3 +0 -0
  372. data/test/dummy/log/development.log +8 -0
  373. data/test/dummy/public/404.html +67 -0
  374. data/test/dummy/public/422.html +67 -0
  375. data/test/dummy/public/500.html +66 -0
  376. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  377. data/test/dummy/public/apple-touch-icon.png +0 -0
  378. data/test/dummy/public/favicon.ico +0 -0
  379. data/test/dummy/tmp/development_secret.txt +1 -0
  380. data/test/integration/navigation_test.rb +7 -0
  381. data/test/jinda_test.rb +7 -0
  382. data/test/test_helper.rb +19 -0
  383. metadata +466 -0
@@ -0,0 +1,368 @@
1
+ module JindaRunConcern
2
+ extend ActiveSupport::Concern
3
+
4
+ def run_form
5
+ init_vars(params[:id])
6
+ if authorize?
7
+ if ['F', 'X'].include? @xmain.status
8
+ redirect_to_root
9
+ else
10
+ service= @xmain.service
11
+ ###############################################################################################
12
+ # Run View Form f created template by jinda rake follow freemind mm file
13
+ ###############################################################################################
14
+ if service
15
+ @title= "Transaction ID #{@xmain.xid}: #{@xmain.name} / #{@runseq.name}"
16
+ fhelp= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.md"
17
+ ###############################################################################################
18
+ # Check if help file available for this form
19
+ ###############################################################################################
20
+ @help = File.read(fhelp) if File.exists?(fhelp)
21
+ f1= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
22
+ f2= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.haml"
23
+ if File.file?(f1)
24
+ @ui= File.read(f1)
25
+ elsif File.file?(f2)
26
+ @ui= File.read(f2)
27
+ else
28
+ # flash[:notice]= "Error: Can not find the view file for this controller"
29
+ ma_log "Error: Can not find the view file for this controller"
30
+ redirect_to_root
31
+ end
32
+ end
33
+ init_vars(params[:id])
34
+ end
35
+ else
36
+ redirect_to_root
37
+ end
38
+ end
39
+
40
+ def run_if
41
+ init_vars(params[:id])
42
+ condition= eval(@runseq.code).to_s
43
+ match_found= false
44
+ if condition
45
+ xml= REXML::Document.new(@runseq.xml).root
46
+ next_runseq= nil
47
+ text = xml.elements['//node/node'].attributes['TEXT']
48
+ match, name= text.split(':',2)
49
+ label= name2code(name.strip)
50
+ if condition==match
51
+ if label=="end"
52
+ @end_job= true
53
+ else
54
+ next_runseq= @xmain.runseqs.where(:code=> label, :action.ne=>'redirect').first
55
+ match_found= true if next_runseq
56
+ @runseq_not_f= false
57
+ end
58
+ end
59
+ end
60
+ unless match_found || @end_job
61
+ next_runseq= @xmain.runseqs.where( rstep:(@xvars['current_step']+1) ).first
62
+ end
63
+ end_action(next_runseq)
64
+ end
65
+
66
+ # redirect when finish last runseq
67
+ # eg: http://localhost:3000/notes/my
68
+ def run_direct_to
69
+ init_vars(params[:id])
70
+ next_runseq= @xmain.runseqs.where(:id.ne=>@runseq.id, :code=>@runseq.code).first
71
+ if !@runseq.code.blank?
72
+ @xvars['p']['return'] = @runseq.code
73
+ else
74
+ flash[:notice]= "Error: missing required forward path in Freemind"
75
+ ma_log "Error: require forward path in Freemind"
76
+ end
77
+ end_action(next_runseq)
78
+ end
79
+
80
+ def run_redirect
81
+ init_vars(params[:id])
82
+ # next_runseq= @xmain.runseqs.first :conditions=>["id != ? AND code = ?",@runseq.id, @runseq.code]
83
+ next_runseq= @xmain.runseqs.where(:id.ne=>@runseq.id, :code=>@runseq.code).first
84
+ @xmain.current_runseq= next_runseq.id
85
+ end_action(next_runseq)
86
+ end
87
+
88
+ # call controller to do the freemind task using Star symbol eg: Update
89
+ # not for run_form
90
+ def run_do
91
+ init_vars(params[:id])
92
+ @runseq.start ||= Time.now
93
+ @runseq.status= 'R' # running
94
+ $runseq_id= @runseq.id
95
+ $user_id= current_ma_user.try(:id)
96
+ # $xmain, $runseq, $user, $xvars, $ip from local
97
+ set_global
98
+ controller = Kernel.const_get(@xvars['custom_controller']).new
99
+ result = controller.send(@runseq.code)
100
+ # save local var to database
101
+ init_vars_by_runseq($runseq_id)
102
+ @xvars = $xvars
103
+ @xvars[@runseq.code.to_sym]= result.to_s
104
+ @xvars['current_step']= @runseq.rstep
105
+ @runseq.status= 'F' #finish
106
+ @runseq.stop= Time.now
107
+ @runseq.save
108
+ end_action
109
+ rescue => e
110
+ @xmain.status='E'
111
+ @xvars['error']= e.to_s+e.backtrace.to_s
112
+ @xmain.xvars= $xvars
113
+ @xmain.save
114
+ @runseq.status= 'F' #finish
115
+ @runseq.stop= Time.now
116
+ @runseq.save
117
+ refresh_to "/", :alert => "Sorry opeation error at #{@xmain.id} #{@xvars['error']}"
118
+ end
119
+
120
+ def run_list
121
+ init_vars(params[:id])
122
+ service= @xmain.service
123
+ # disp= get_option("display")
124
+ # disp = Nil or :"??????"
125
+ # get option from last node: rule, role, display
126
+ disp= get_option("display")
127
+ # change from Nil to false and string to true
128
+ ma_display = (disp && !affirm(disp)) ? false : true
129
+ # Todo check if file is available
130
+ # if service and file exist
131
+ # ma_display from disp of 3rd level node as rule, role, display
132
+ if service && !@runseq.code.blank?
133
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
134
+ @ui= File.read(f)
135
+ if Jinda::Doc.where(:runseq_id=>@runseq.id).exists?
136
+ @doc= Jinda::Doc.where(:runseq_id=>@runseq.id).first
137
+ @doc.update_attributes :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
138
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
139
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
140
+ :ma_secured => @xmain.service.ma_secured,
141
+ :filename => "#{@runseq.code}.html.erb"
142
+ else
143
+ @doc= Jinda::Doc.create :name=> @runseq.name,
144
+ :content_type=>"output", :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
145
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
146
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
147
+ :ma_secured => @xmain.service.ma_secured,
148
+ :filename => "#{@runseq.code}.html.erb"
149
+ end
150
+ # @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >"
151
+ @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >>"
152
+ @message = "Finish" if @runseq.end
153
+ ma_log("Todo defined?(NSG_NEXT : Next >>)")
154
+ eval "@xvars[@runseq.code] = url_for(:controller=>'jinda', :action=>'document', :id=>@doc.id)"
155
+ else
156
+ flash[:notice]= "Error: Can not find the view file for this controller"
157
+ ma_log "Error: Can not find the view file for this controller"
158
+ redirect_to_root
159
+ end
160
+ # Check if ma_display available
161
+ # ma_display= get_option("display")
162
+ # if not ma_display then no display both controller-view and content then end back to root
163
+ unless ma_display
164
+ end_action
165
+ end
166
+ # controller display from @ui
167
+ end
168
+
169
+ def run_folder
170
+ init_vars(params[:id])
171
+ service= @xmain.service
172
+ # disp= get_option("display")
173
+ # disp = Nil or :"??????"
174
+ disp= get_option("display")
175
+ ma_display = (disp && !affirm(disp)) ? false : true
176
+ # Todo check if file is available
177
+ # if service and file exist
178
+ if service && !@runseq.code.blank?
179
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
180
+ @ui= File.read(f)
181
+ if Jinda::Doc.where(:runseq_id=>@runseq.id).exists?
182
+ @doc= Jinda::Doc.where(:runseq_id=>@runseq.id).first
183
+ @doc.update_attributes :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
184
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
185
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
186
+ :ma_secured => @xmain.service.ma_secured,
187
+ :filename => "#{@runseq.code}.html.erb"
188
+ else
189
+ @doc= Jinda::Doc.create :name=> @runseq.name,
190
+ :content_type=>"output", :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
191
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
192
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
193
+ :ma_secured => @xmain.service.ma_secured,
194
+ :filename => "#{@runseq.code}.html.erb"
195
+ end
196
+ # @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >"
197
+ @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >>"
198
+ @message = "Finish" if @runseq.end
199
+ ma_log("Todo defined?(NSG_NEXT : Next >>)")
200
+ eval "@xvars[@runseq.code] = url_for(:controller=>'jinda', :action=>'document', :id=>@doc.id)"
201
+ else
202
+ flash[:notice]= "Error: Can not find the view file for this controller"
203
+ ma_log "Error: Can not find the view file for this controller"
204
+ redirect_to_root
205
+ end
206
+ # Check if ma_display available
207
+ # ma_display= get_option("display")
208
+ unless ma_display
209
+ end_action
210
+ end
211
+ # controller display from @ui
212
+ end
213
+
214
+ def run_output
215
+ init_vars(params[:id])
216
+ service= @xmain.service
217
+ # disp= get_option("display")
218
+ # disp = Nil or :"??????"
219
+ disp= get_option("display")
220
+ ma_display = (disp && !affirm(disp)) ? false : true
221
+ # Todo check if file is available
222
+ # if service and file exist
223
+ if service && !@runseq.code.blank?
224
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
225
+ @ui= File.read(f)
226
+ if Jinda::Doc.where(:runseq_id=>@runseq.id).exists?
227
+ @doc= Jinda::Doc.where(:runseq_id=>@runseq.id).first
228
+ @doc.update_attributes :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
229
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
230
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
231
+ :ma_secured => @xmain.service.ma_secured,
232
+ :filename => "#{@runseq.code}.html.erb"
233
+ else
234
+ @doc= Jinda::Doc.create :name=> @runseq.name,
235
+ :content_type=>"output", :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
236
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
237
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
238
+ :ma_secured => @xmain.service.ma_secured,
239
+ :filename => "#{@runseq.code}.html.erb"
240
+ end
241
+ # @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >"
242
+ @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >>"
243
+ @message = "Finish" if @runseq.end
244
+ ma_log("Todo defined?(NSG_NEXT : Next >>)")
245
+ eval "@xvars[@runseq.code] = url_for(:controller=>'jinda', :action=>'document', :id=>@doc.id)"
246
+ else
247
+ flash[:notice]= "Error: Can not find the view file for this controller"
248
+ ma_log "Error: Can not find the view file for this controller"
249
+ redirect_to_root
250
+ end
251
+ # Check if ma_display available
252
+ # ma_display= get_option("display")
253
+ unless ma_display
254
+ end_action
255
+ end
256
+ # controller display from @ui
257
+ end
258
+
259
+ def run_mail
260
+ init_vars(params[:id])
261
+ service= @xmain.service
262
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
263
+ @ui= File.read(f).html_safe
264
+ @doc= Jinda::Doc.create :name=> @runseq.name,
265
+ :content_type=>"mail", :data_text=> render_to_string(:inline=>@ui, :layout=>false),
266
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
267
+ :ip=> get_ip, :service=>service, :ma_display=>false,
268
+ :ma_secured => @xmain.service.ma_secured
269
+ eval "@xvars[:#{@runseq.code}] = url_for(:controller=>'jinda', :action=>'document', :id=>@doc.id)"
270
+ mail_from = get_option('from')
271
+ # sender= render_to_string(:inline=>mail_from) if mail_from
272
+ mail_to = get_option('to')
273
+ recipients= render_to_string(:inline=>mail_to) if mail_to
274
+ mail_subject = get_option('subject')
275
+ subject= render_to_string(:inline=>mail_subject) || "#{@runseq.name}"
276
+ JindaMailer.gmail(@doc.data_text, recipients, subject).deliver unless DONT_SEND_MAIL
277
+ end_action
278
+ end
279
+
280
+ def end_output
281
+ init_vars(params[:xmain_id])
282
+ end_action
283
+ end
284
+
285
+ # Store params to @xvars[@runseq]
286
+ # Perform task from the form input eg: attach file
287
+ # replace end_action (for form)
288
+ # Store params attach file to @xvars to use in get_image
289
+ def end_form
290
+ if params[:xmain_id]
291
+ init_vars(params[:xmain_id])
292
+ else
293
+ ma_log "Known Bug : repeated end_form "
294
+ redirect_to_root and return
295
+ end
296
+ eval "@xvars[@runseq.code] = {} unless @xvars[@runseq.code]"
297
+ # Search for uploaded file name if exist
298
+ params.each { |k,v|
299
+ if params[k].respond_to? :original_filename
300
+ get_image(k, params[k])
301
+ # check if params of array in form eg: edit_article
302
+ elsif params[k].is_a?(ActionController::Parameters)
303
+ eval "@xvars[@runseq.code][k] = {} unless @xvars[@runseq.code][k]"
304
+ params[k].each { |k1,v1|
305
+ # eval "@xvars[@runseq.code][k1] = params.require(k1).permit(k1)"
306
+ eval "@xvars[@runseq.code][k][k1] = v1"
307
+ next unless v1.respond_to?(:original_filename)
308
+ doc = {}
309
+ get_image1(k, k1, params[k][k1])
310
+ }
311
+ else
312
+ # No file attached
313
+ #
314
+ # https://stackoverflow.com/questions/34949505/rails-5-unable-to- retrieve-hash-values-from-parameter # bug in to_unsalfe_h rails 5.1.6 https://github.com/getsentry/raven-ruby/issues/799
315
+ # Solution:
316
+ # https://stackoverflow.com/questions/34949505/rails-5-unable-to-retrieve-hash-values-from-parameter
317
+ # v = v.to_unsafe_h unless v.class == String
318
+ # v = params.require[k] unless v.class == String
319
+ v = v.to_s unless v.class == String
320
+ # Create @xvars[@runseq.code]
321
+ eval "@xvars[@runseq.code][k] = v"
322
+ end
323
+ }
324
+ end_action
325
+ rescue => e
326
+ @xmain.status='E'
327
+ @xvars['error']= e.to_s+e.backtrace.to_s
328
+ @xmain.xvars= $xvars
329
+ @xmain.save
330
+ @runseq.status= 'F' #finish
331
+ @runseq.stop= Time.now
332
+ @runseq.save
333
+ ma_log "Error:end_form "
334
+ refresh_to "/", :alert => "Sorry opeation error at #{@xmain.id} #{@xvars['error']}"
335
+ end
336
+
337
+ def end_action(next_runseq = nil)
338
+ # not for form
339
+ # @runseq.status='F' unless @runseq_not_f
340
+ @xmain.xvars= @xvars
341
+ @xmain.status= 'R' # running
342
+ @xmain.save!
343
+ @runseq.status='F'
344
+ @runseq.user= current_ma_user
345
+ @runseq.stop= Time.now
346
+ @runseq.save
347
+ next_runseq= @xmain.runseqs.where(:rstep=> @runseq.rstep+1).first unless next_runseq
348
+ if @end_job || !next_runseq # job finish
349
+ @xmain.xvars= @xvars
350
+ @xmain.status= 'F' unless @xmain.status== 'E' # finish
351
+ @xmain.stop= Time.now
352
+ @xmain.save
353
+ if @xvars['p']['return']
354
+ redirect_to @xvars['p']['return'] and return
355
+ else
356
+ if @user
357
+ redirect_to :action=>'index' and return
358
+ else
359
+ redirect_to_root and return
360
+ end
361
+ end
362
+ else
363
+ @xmain.update_attribute :current_runseq, next_runseq.id
364
+ redirect_to :action=>'run', :id=>@xmain.id and return
365
+ end
366
+ end
367
+
368
+ end
@@ -0,0 +1,66 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ class JindaController < ApplicationController
4
+ include JindaRunConcern
5
+ include JindaGeneralConcern
6
+ # view menu by user selected what service (module and code) to run (not all services like menu did
7
+ # Its only one service
8
+
9
+ def init
10
+ module_code, code = params[:s].split(":")
11
+ @service= Jinda::Service.where(:module_code=> module_code, :code=> code).first
12
+ if @service && authorize_init?
13
+ xmain = create_xmain(@service)
14
+ result = create_runseq(xmain)
15
+ unless result
16
+ message = "Node missing action icon: cannot find action for xmain #{xmain.id}, the node required action(icon) in freemind eg: form, list, method"
17
+ ma_log(message)
18
+ flash[:notice]= message
19
+ redirect_to "pending" and return
20
+ end
21
+ xmain.update_attribute(:xvars, @xvars)
22
+ xmain.runseqs.last.update_attribute(:end,true)
23
+ #Above line cause error update_attribute in heroku shown in logs and it was proposed to fixed in github:'kul1/g241502'
24
+ # Main action run with :id
25
+ redirect_to :action=>'run', :id=>xmain.id
26
+
27
+ else
28
+ refresh_to "/", :alert => "Error: cannot process"
29
+ error_run_xmain = "Error_run_xmain"
30
+ ma_log(error_run_xmain)
31
+ end
32
+ end
33
+
34
+ ########################################################################]
35
+ # run if, form, mail, output etc depend on icon in freemind
36
+ # action from @r.action == do, form, if, output
37
+ # Then will call def run_do, run_form, run_if, run_output
38
+ ########################################################################]
39
+ #
40
+ # run
41
+ # init_vars
42
+ # To get all var from global and runseq, action
43
+ # (@runseq.action)
44
+ #
45
+ # run_do, run_form, run_if, run_output
46
+ # run_do => controller => action eg: update, create, document
47
+ # run_form =>
48
+ # run_form.haml => - next step => def end_form
49
+ # - next_step = end_form
50
+ # run_if =>
51
+ # run_output =>
52
+ #
53
+ # end_action
54
+ # => save local var to database :current_runseq
55
+ # :current_runseq => next_runseq
56
+ #
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
+ end
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "jinda"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,19 @@
1
+ production:
2
+ clients:
3
+ default:
4
+ uri: <%= ENV['MONGOHQ_URL'] %>
5
+ options:
6
+ skip_version_check: true
7
+ safe: true
8
+ development:
9
+ clients:
10
+ default:
11
+ database: jinda
12
+ hosts:
13
+ - localhost:27017
14
+ test:
15
+ clients:
16
+ default:
17
+ database: jinda
18
+ hosts:
19
+ - localhost:27017
data/config/routes.rb ADDED
@@ -0,0 +1,44 @@
1
+ Rails.application.routes.draw do
2
+ # start jiinda method routes
3
+ jinda_methods = ['pending', 'status', 'search', 'doc', 'doc_print', 'logs', 'ajax_notice']
4
+ jinda_methods += ['init', 'run', 'run_mail', 'document', 'run_do', 'run_form', 'end_form']
5
+ jinda_methods += ['run_redirect', 'run_direct_to','run_if']
6
+ jinda_methods += ['error_logs', 'notice_logs', 'cancel', 'run_output', 'end_output']
7
+ jinda_methods.each do |aktion| get "/jinda/#{aktion}" => "jinda##{aktion}" end
8
+ post '/jinda/init' => 'jinda#init'
9
+ post '/jinda/pending' => 'jinda#index'
10
+ post '/jinda/end_form' => 'jinda#end_form'
11
+ post '/jinda/end_output' => 'jinda#end_output'
12
+ # end jinda method routes
13
+ post '/auth/:provider/callback' => 'sessions#create'
14
+ get '/auth/:provider/callback' => 'sessions#create'
15
+ get '/auth/failure' => 'sessions#failure'
16
+ get '/logout' => 'sessions#destroy', :as => 'logout'
17
+ get '/articles/my' => 'articles#my'
18
+ get '/articles/my/destroy' => 'articles#destroy'
19
+ get '/articles/show' => 'articles/show'
20
+ get '/articles/edit' => 'articles/edit'
21
+ get '/docs/my' => 'docs/my'
22
+ get '/notes/my' => 'notes/my'
23
+ get '/docs/my/destroy' => 'docs#destroy'
24
+ get '/notes/my/destroy/:id' => 'notes#destroy'
25
+ get '/notes/destroy/:id' => 'notes#destroy'
26
+ get '/jinda/document/:id' => 'jinda#document'
27
+ resources :articles do resources :comments end
28
+ resources :comments
29
+ resources :notes
30
+ resources :docs
31
+ resources :users
32
+ resources :identities
33
+ resources :sessions
34
+ resources :password_resets
35
+ resources :jinda, :only => [:index, :new]
36
+ # root :to => 'jinda#index'
37
+ # api
38
+ get '/api/v1/notes/my' => 'api/v1/notes#my'
39
+ post '/api/v1/notes' => 'api/v1/notes#create', as: 'api_v1_notes'
40
+ namespace :api do
41
+ namespace :v1 do resources :notes, :only => [:index] end
42
+ end
43
+ # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
44
+ end
@@ -0,0 +1,2 @@
1
+ Description:
2
+ Generate Jinda Rails Application
@@ -0,0 +1,102 @@
1
+ module Jinda
2
+ module Generators
3
+ class ConfigGenerator < Rails::Generators::Base
4
+ def self.source_root
5
+ File.dirname(__FILE__) + "/templates"
6
+ end
7
+ desc "Backup Files"
8
+ def backup_files
9
+ st=" "
10
+ # inside("config/initializers") {(File.file? "omniauth.rb") ? (FileUtils.mv "omniauth.rb", "omniauth.rb.bak") : (puts "new omniauth.rb created")}
11
+ # inside("config/initializers") {(File.file? "mongoid.rb") ? (FileUtils.mv "mongoid.rb", "omniauth.rb.bak") : (puts "new mongoid.rb created")}
12
+ (File.file? ".env") ? (FileUtils.mv ".env", ".env-bak") : (puts "backup .env")
13
+ end
14
+ desc "gen_image_store"
15
+ def gen_image_store
16
+ # FileUtils.cp "cloudinary.yml","config/cloudinary.yml"
17
+ # FileUtils.cp "dot.env",".env"
18
+ # FileUtils.cp "dot.rspec",".rspec"
19
+ empty_directory "upload" # create upload directory just in case
20
+ end
21
+ desc "Set up omniauth config"
22
+ def setup_omniauth
23
+ # gem 'bcrypt-ruby', '~> 3.0.0'
24
+ # gem 'omniauth-identity'
25
+ initializer "omniauth.rb" do
26
+ %q{
27
+ Rails.application.config.middleware.use OmniAuth::Builder do
28
+ provider :identity,
29
+ :fields => [:code, :email],
30
+ :on_failed_registration=> lambda { |env|
31
+ IdentitiesController.action(:new).call(env)
32
+ }
33
+ provider :facebook, ENV['FACEBOOK_API'], ENV['FACEBOOK_KEY']
34
+ provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], skip_jwt: true
35
+ end
36
+
37
+ # https://stackoverflow.com/questions/11461084/handle-omniautherror-invalid-credentials-for-identity-login
38
+ OmniAuth.config.on_failure = Proc.new { |env|
39
+ OmniAuth::FailureEndpoint.new(env).redirect_to_failure
40
+ }
41
+
42
+ }
43
+ end
44
+ end
45
+
46
+ desc "Set up mongoid config"
47
+ def setup_mongoid
48
+ generate "mongoid:config"
49
+ inject_into_file 'config/mongoid.yml', :after => ' # raise_not_found_error: true' do
50
+ "\n raise_not_found_error: false"
51
+ end
52
+
53
+ inject_into_file 'config/mongoid.yml', :after => ' # belongs_to_required_by_default: true' do
54
+ "\n belongs_to_required_by_default: false"
55
+ end
56
+ inject_into_file 'config/mongoid.yml', :after => ' # app_name: MyApplicationName' do
57
+ "\n\nproduction:" +
58
+ "\n clients:" +
59
+ "\n default:" +
60
+ "\n uri: <%= ENV['MONGODB_URI'] %>" +
61
+ "\n options:" +
62
+ "\n raise_not_found_error: false" +
63
+ "\n belongs_to_required_by_default: false\n"
64
+ end
65
+ end
66
+
67
+ desc "Setup Dockerfile"
68
+ def setup_docker
69
+ puts " Setup Docker files"
70
+ FileUtils.cp source_paths[0]+"/"+"Dockerfile", "Dockerfile"
71
+ FileUtils.cp source_paths[0]+"/"+"docker-compose.yml", "docker-compose.yml"
72
+ FileUtils.cp source_paths[0]+"/"+"entrypoint.sh", "entrypoint.sh"
73
+ end
74
+
75
+ def finish
76
+ puts " configured omniauth.\n"
77
+ puts " configured Mongoid.\n"
78
+ puts "\n"
79
+ puts " To set user/password as admin/secret run:\n"
80
+ puts "-----------------------------------------\n"
81
+ puts "rails jinda:seed\n"
82
+ puts "-----------------------------------------\n"
83
+ puts " To test with rspec run:"
84
+ puts "-----------------------------------------\n"
85
+ puts "rspec\n"
86
+ puts "-----------------------------------------\n"
87
+ puts " To config rspec run:"
88
+ puts "rails g jinda:rspec\n"
89
+ puts "run $chromediver for Capybara & Chrome\n"
90
+ puts "-----------------------------------------\n"
91
+ puts " To config minitest run:"
92
+ puts "-----------------------------------------\n"
93
+ puts "rails g jinda:minitest\n"
94
+ puts "-----------------------------------------\n"
95
+ puts " To login with facebook"
96
+ puts "-----------------------------------------\n"
97
+ puts "Please config. in .env or restore from .env-bak \n"
98
+ puts "-----------------------------------------\n"
99
+ end
100
+ end
101
+ end
102
+ end