jinda 0.7.7.4 → 1.0.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 (311) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +46 -29
  3. data/Rakefile +103 -1
  4. data/app/assets/config/manifest.js +4 -1
  5. data/app/assets/javascripts/jinda_bootstrap.js +20 -0
  6. data/app/assets/stylesheets/_jinda_bootstrap_theme.scss +190 -0
  7. data/{lib/generators/jinda/templates/app/assets/stylesheets/jinda_jqm.css.scss → app/assets/stylesheets/jinda_bootstrap.css.scss} +12 -10
  8. data/app/config/routes.rb +38 -28
  9. data/app/controllers/concerns/jinda_general_concern.rb +86 -87
  10. data/app/controllers/concerns/jinda_run_concern.rb +184 -184
  11. data/app/controllers/jinda_controller.rb +23 -22
  12. data/bin/lint_modified +21 -0
  13. data/config/routes.rb +41 -22
  14. data/lib/generators/jinda/config_generator.rb +102 -81
  15. data/lib/generators/jinda/install_generator.rb +305 -148
  16. data/lib/generators/jinda/install_generator.rb.bak2 +268 -0
  17. data/lib/generators/jinda/installer/gems_install.rb +125 -127
  18. data/lib/generators/jinda/minitest_generator.rb +19 -18
  19. data/lib/generators/jinda/rspec_generator.rb +15 -14
  20. data/lib/generators/jinda/templates/DOCKER.md +188 -0
  21. data/lib/generators/jinda/templates/Dockerfile +15 -5
  22. data/lib/generators/jinda/templates/README.md +3 -3
  23. data/lib/generators/jinda/templates/app/assets/config/manifest.js +4 -0
  24. data/lib/generators/jinda/templates/app/assets/javascripts/application.js +8 -8
  25. data/lib/generators/jinda/templates/app/channels/application_cable/channel.rb +2 -0
  26. data/lib/generators/jinda/templates/app/channels/application_cable/connection.rb +2 -0
  27. data/{test/dummy → lib/generators/jinda/templates}/app/controllers/adminltes_controller.rb +1 -0
  28. data/lib/generators/jinda/templates/app/controllers/api/v1/notes_controller.rb +80 -78
  29. data/lib/generators/jinda/templates/app/controllers/jinda_org/admins_controller.rb +4 -2
  30. data/lib/generators/jinda/templates/app/controllers/jinda_org/application_controller.rb +11 -9
  31. data/lib/generators/jinda/templates/app/controllers/jinda_org/articles_controller.rb +40 -44
  32. data/lib/generators/jinda/templates/app/controllers/jinda_org/comments_controller.rb +10 -8
  33. data/lib/generators/jinda/templates/app/controllers/jinda_org/docs_controller.rb +23 -24
  34. data/lib/generators/jinda/templates/app/controllers/jinda_org/identities_controller.rb +3 -1
  35. data/lib/generators/jinda/templates/app/controllers/jinda_org/notes_controller.rb +25 -27
  36. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets_controller.rb +16 -18
  37. data/lib/generators/jinda/templates/app/controllers/jinda_org/sessions_controller.rb +13 -14
  38. data/lib/generators/jinda/templates/app/controllers/jinda_org/sitemap_controller.rb +4 -4
  39. data/lib/generators/jinda/templates/app/controllers/jinda_org/users_controller.rb +14 -14
  40. data/lib/generators/jinda/templates/app/controllers/mindmap_editor_controller.rb +74 -0
  41. data/lib/generators/jinda/templates/app/helpers/admins_helper.rb +2 -0
  42. data/lib/generators/jinda/templates/app/helpers/application_helper.rb +21 -20
  43. data/lib/generators/jinda/templates/app/helpers/articles_helper.rb +2 -0
  44. data/lib/generators/jinda/templates/app/helpers/basic_helper.rb +2 -0
  45. data/lib/generators/jinda/templates/app/helpers/comments_helper.rb +2 -0
  46. data/lib/generators/jinda/templates/app/helpers/ctrs_helper.rb +2 -0
  47. data/lib/generators/jinda/templates/app/helpers/devs_helper.rb +2 -0
  48. data/lib/generators/jinda/templates/app/helpers/mindmap_editor_helper.rb +3 -0
  49. data/lib/generators/jinda/templates/app/helpers/pictures_helper.rb +2 -0
  50. data/lib/generators/jinda/templates/app/helpers/sitemap_helper.rb +2 -0
  51. data/lib/generators/jinda/templates/app/helpers/users_helper.rb +2 -0
  52. data/lib/generators/jinda/templates/app/jinda/index.mm +276 -298
  53. data/lib/generators/jinda/templates/app/jinda/template/index.mm +1 -0
  54. data/lib/generators/jinda/templates/app/mailers/jinda_mailer.rb +5 -3
  55. data/lib/generators/jinda/templates/app/mailers/note_mailer.rb +6 -4
  56. data/lib/generators/jinda/templates/app/mailers/user_mailer.rb +5 -5
  57. data/lib/generators/jinda/templates/app/models/address.rb +10 -8
  58. data/lib/generators/jinda/templates/app/models/article.rb +8 -6
  59. data/lib/generators/jinda/templates/app/models/comment.rb +10 -8
  60. data/lib/generators/jinda/templates/app/models/identity.rb +11 -10
  61. data/lib/generators/jinda/templates/app/models/jinda/doc.rb +36 -33
  62. data/lib/generators/jinda/templates/app/models/jinda/jinda_module.rb +15 -0
  63. data/lib/generators/jinda/templates/app/models/jinda/module.rb +14 -10
  64. data/lib/generators/jinda/templates/app/models/jinda/notice.rb +15 -11
  65. data/lib/generators/jinda/templates/app/models/jinda/role.rb +11 -7
  66. data/lib/generators/jinda/templates/app/models/jinda/runseq.rb +23 -20
  67. data/lib/generators/jinda/templates/app/models/jinda/service.rb +19 -15
  68. data/lib/generators/jinda/templates/app/models/jinda/xmain.rb +42 -36
  69. data/lib/generators/jinda/templates/app/models/note.rb +14 -10
  70. data/lib/generators/jinda/templates/app/models/param.rb +23 -20
  71. data/lib/generators/jinda/templates/app/models/person.rb +9 -7
  72. data/lib/generators/jinda/templates/app/models/user.rb +42 -41
  73. data/lib/generators/jinda/templates/app/views/articles/show.html.haml +2 -2
  74. data/lib/generators/jinda/templates/app/views/identities/new.html.haml +13 -0
  75. data/lib/generators/jinda/templates/app/views/jinda/_static_bootstrap.haml +23 -0
  76. data/lib/generators/jinda/templates/app/views/jinda/feed.rss.builder +15 -13
  77. data/lib/generators/jinda/templates/app/views/jinda/index.html.haml +3 -2
  78. data/lib/generators/jinda/templates/app/views/layouts/application.haml +31 -4
  79. data/lib/generators/jinda/templates/app/views/layouts/lte/_header.haml +54 -0
  80. data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_sidebar.haml +1 -1
  81. data/lib/generators/jinda/templates/app/views/mindmap_editor/edit.html.haml +126 -0
  82. data/lib/generators/jinda/templates/app/views/mindmap_editor/save.html.haml +2 -0
  83. data/lib/generators/jinda/templates/app/views/sessions/new.html.haml +13 -0
  84. data/lib/generators/jinda/templates/bin/lint_modified +21 -0
  85. data/lib/generators/jinda/templates/config/mongoid.yml +3 -3
  86. data/lib/generators/jinda/templates/config/mongoid.yml-docker +3 -3
  87. data/lib/generators/jinda/templates/config/mongoid.yml-localhost +3 -3
  88. data/lib/generators/jinda/templates/docker-compose-mongodb.yml +13 -0
  89. data/lib/generators/jinda/templates/docker-compose-web.yml +36 -0
  90. data/lib/generators/jinda/templates/docker-compose.yml +10 -14
  91. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_index_spec.rb +15 -14
  92. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_my_spec.rb +9 -4
  93. data/lib/generators/jinda/templates/spec/controllers/api/v1_post_spec.rb +4 -3
  94. data/lib/generators/jinda/templates/spec/controllers/sessions_controller_spec.rb +82 -90
  95. data/lib/generators/jinda/templates/spec/features/userlogins_spec.rb +12 -15
  96. data/lib/generators/jinda/templates/spec/mailers/note_spec.rb +5 -8
  97. data/lib/generators/jinda/templates/spec/mailers/previews/note_preview.rb +3 -5
  98. data/lib/generators/jinda/templates/spec/models/note_spec.rb +36 -35
  99. data/lib/generators/jinda/templates/spec/models/user_spec.rb +10 -8
  100. data/lib/generators/jinda/templates/spec/rails_helper.rb +29 -31
  101. data/lib/generators/jinda/templates/spec/spec_helper.rb +19 -17
  102. data/lib/generators/jinda/templates/spec/support/authentication_helper.rb +8 -7
  103. data/lib/generators/jinda/templates/spec/support/databasecleaner.rb +3 -1
  104. data/lib/generators/jinda/templates/spec/support/factory_bot.rb +7 -5
  105. data/lib/generators/jinda/templates/spec/support/omniauth_macros.rb +14 -19
  106. data/lib/generators/jinda/templates/spec/support/request_spec_helper.rb +3 -1
  107. data/lib/generators/jinda/templates/spec/views/articles/_article.html.erb_spec.rbx +9 -8
  108. data/lib/generators/jinda/templates/test/application_system_test_case.rb +3 -1
  109. data/lib/generators/jinda/templates/test/integration/jinda_routes_test.rb +16 -21
  110. data/lib/generators/jinda/templates/test/test_helper.rb +7 -3
  111. data/lib/jinda/date_helpers.rb +50 -41
  112. data/lib/jinda/gem_helpers.rb +10 -8
  113. data/lib/jinda/gen_class.rb +14 -12
  114. data/lib/jinda/gen_controller.rb +9 -8
  115. data/lib/jinda/gen_freemind.rb +33 -32
  116. data/lib/jinda/gen_helpers.rb +146 -139
  117. data/lib/jinda/gen_models.rb +125 -131
  118. data/lib/jinda/gen_modules.rb +21 -16
  119. data/lib/jinda/gen_runseq.rb +71 -67
  120. data/lib/jinda/gen_services.rb +74 -80
  121. data/lib/jinda/gen_xmain.rb +38 -36
  122. data/lib/jinda/get_app.rb +31 -29
  123. data/lib/jinda/helpers.rb +4 -4
  124. data/lib/jinda/init_vars.rb +41 -36
  125. data/lib/jinda/mindmap_converter.rb +196 -0
  126. data/lib/jinda/railtie.rb +10 -2
  127. data/lib/jinda/rake_views.rb +61 -60
  128. data/lib/jinda/refresh.rb +67 -61
  129. data/lib/jinda/themes.rb +80 -60
  130. data/lib/jinda/version.rb +3 -1
  131. data/lib/jinda.rb +2 -0
  132. data/lib/tasks/jinda.rake +25 -22
  133. data/test/INTEGRATION_TEST_README.md +374 -0
  134. data/test/LOCAL_DEVELOPMENT.md +345 -0
  135. data/test/README.md +243 -0
  136. data/test/TEST_INFRASTRUCTURE.md +412 -0
  137. data/test/TEST_INSTALLATION_SH_FIXES.md +205 -0
  138. data/test/UNIT_TESTS_README.md +366 -0
  139. data/test/api_notes_controller_test.rb +231 -0
  140. data/test/dummy/DOCKER.md +188 -0
  141. data/test/dummy/Dockerfile +15 -7
  142. data/test/dummy/Gemfile +38 -29
  143. data/test/dummy/Gemfile.lock +671 -292
  144. data/test/dummy/app/assets/config/manifest.js +4 -0
  145. data/test/dummy/app/channels/application_cable/channel.rb +2 -0
  146. data/test/dummy/app/channels/application_cable/connection.rb +2 -0
  147. data/test/dummy/app/controllers/admins_controller.rb +4 -2
  148. data/test/dummy/app/controllers/api/v1/notes_controller.rb +80 -78
  149. data/test/dummy/app/controllers/application_controller.rb +11 -9
  150. data/test/dummy/app/controllers/articles_controller.rb +40 -44
  151. data/test/dummy/app/controllers/comments_controller.rb +10 -8
  152. data/test/dummy/app/controllers/ctrs_controller.rb +2 -0
  153. data/test/dummy/app/controllers/devs_controller.rb +2 -0
  154. data/test/dummy/app/controllers/docs_controller.rb +23 -24
  155. data/test/dummy/app/controllers/identities_controller.rb +3 -1
  156. data/test/dummy/app/controllers/mindmap_editor_controller.rb +74 -0
  157. data/test/dummy/app/controllers/notes_controller.rb +25 -27
  158. data/test/dummy/app/controllers/password_resets_controller.rb +16 -18
  159. data/test/dummy/app/controllers/sessions_controller.rb +13 -14
  160. data/test/dummy/app/controllers/sitemap_controller.rb +4 -4
  161. data/test/dummy/app/controllers/users_controller.rb +14 -14
  162. data/test/dummy/app/helpers/admins_helper.rb +2 -0
  163. data/test/dummy/app/helpers/application_helper.rb +21 -20
  164. data/test/dummy/app/helpers/articles_helper.rb +2 -0
  165. data/test/dummy/app/helpers/basic_helper.rb +2 -0
  166. data/test/dummy/app/helpers/comments_helper.rb +2 -0
  167. data/test/dummy/app/helpers/ctrs_helper.rb +2 -0
  168. data/test/dummy/app/helpers/devs_helper.rb +2 -0
  169. data/test/dummy/app/helpers/mindmap_editor_helper.rb +3 -0
  170. data/test/dummy/app/helpers/pictures_helper.rb +2 -0
  171. data/test/dummy/app/helpers/sitemap_helper.rb +2 -0
  172. data/test/dummy/app/helpers/users_helper.rb +2 -0
  173. data/test/dummy/app/jinda/index.mm +384 -486
  174. data/test/dummy/app/jinda/template/index.mm +1 -0
  175. data/test/dummy/app/mailers/application_mailer.rb +2 -2
  176. data/test/dummy/app/mailers/application_mailer.rb-org +4 -0
  177. data/test/dummy/app/mailers/jinda_mailer.rb +5 -3
  178. data/test/dummy/app/mailers/note_mailer.rb +6 -4
  179. data/test/dummy/app/mailers/user_mailer.rb +5 -5
  180. data/test/dummy/app/models/address.rb +2 -0
  181. data/test/dummy/app/models/article.rb +2 -0
  182. data/test/dummy/app/models/comment.rb +3 -2
  183. data/test/dummy/app/models/identity.rb +11 -10
  184. data/test/dummy/app/models/jinda/doc.rb +36 -33
  185. data/test/dummy/app/models/jinda/jinda_module.rb +15 -0
  186. data/test/dummy/app/models/jinda/module.rb +14 -10
  187. data/test/dummy/app/models/jinda/notice.rb +15 -11
  188. data/test/dummy/app/models/jinda/role.rb +11 -7
  189. data/test/dummy/app/models/jinda/runseq.rb +23 -20
  190. data/test/dummy/app/models/jinda/service.rb +19 -15
  191. data/test/dummy/app/models/jinda/xmain.rb +42 -36
  192. data/test/dummy/app/models/note.rb +3 -8
  193. data/test/dummy/app/models/param.rb +23 -20
  194. data/test/dummy/app/models/person.rb +2 -0
  195. data/test/dummy/app/models/picture.rb +11 -0
  196. data/test/dummy/app/models/user.rb +42 -41
  197. data/test/dummy/app/views/admins/index.haml +21 -0
  198. data/test/dummy/app/views/api/v1/notes/delete/select_note.html.erb +21 -0
  199. data/test/dummy/app/views/api/v1/notes/edit/edit_note.html.erb +21 -0
  200. data/test/dummy/app/views/api/v1/notes/index.haml +21 -0
  201. data/test/dummy/app/views/api/v1/notes/new/new_note.html.erb +21 -0
  202. data/test/dummy/app/views/articles/show.html.haml +2 -2
  203. data/test/dummy/app/views/devs/index.haml +21 -0
  204. data/test/dummy/app/views/jinda/feed.rss.builder +15 -13
  205. data/test/dummy/app/views/jinda/index.html.haml +3 -2
  206. data/test/dummy/app/views/layouts/application.haml +2 -2
  207. data/test/dummy/app/views/mindmap_editor/edit.html.haml +126 -0
  208. data/test/dummy/app/views/mindmap_editor/save.html.haml +2 -0
  209. data/test/dummy/bin/docker-entrypoint +3 -0
  210. data/test/dummy/bin/lint_modified +21 -0
  211. data/test/dummy/bin/setup +1 -1
  212. data/test/dummy/config/application.rb +7 -2
  213. data/test/dummy/config/boot.rb +2 -1
  214. data/test/dummy/config/cable.yml +1 -1
  215. data/test/dummy/config/credentials.yml.enc +1 -1
  216. data/test/dummy/config/environments/development.rb +7 -1
  217. data/test/dummy/config/environments/production.rb +30 -26
  218. data/test/dummy/config/environments/test.rb +12 -8
  219. data/test/dummy/config/initializers/content_security_policy.rb +2 -2
  220. data/test/dummy/config/initializers/filter_parameter_logging.rb +3 -3
  221. data/test/dummy/config/initializers/mindmap_converter.rb +5 -0
  222. data/test/dummy/config/initializers/mongoid.rb +24 -9
  223. data/test/dummy/config/initializers/omniauth.rb +5 -0
  224. data/test/dummy/config/initializers/permissions_policy.rb +11 -9
  225. data/test/dummy/config/locales/en.yml +11 -13
  226. data/test/dummy/config/mongoid.yml +172 -53
  227. data/test/dummy/config/mongoid.yml-docker +3 -3
  228. data/test/dummy/config/mongoid.yml-localhost +3 -3
  229. data/test/dummy/config/puma.rb +21 -20
  230. data/test/dummy/config/routes.rb +7 -1
  231. data/test/dummy/docker-compose-mongodb.yml +13 -0
  232. data/test/dummy/docker-compose-web.yml +36 -0
  233. data/test/dummy/docker-compose.yml +10 -18
  234. data/test/dummy/log/development.log +5834 -2261
  235. data/test/dummy/spec/controllers/api/v1_get_index_spec.rb +15 -14
  236. data/test/dummy/spec/controllers/api/v1_get_my_spec.rb +9 -4
  237. data/test/dummy/spec/controllers/api/v1_post_spec.rb +4 -3
  238. data/test/dummy/spec/controllers/sessions_controller_spec.rb +82 -90
  239. data/test/dummy/spec/factories/pictures.rb +5 -0
  240. data/test/dummy/spec/features/userlogins_spec.rb +12 -15
  241. data/test/dummy/spec/mailers/note_spec.rb +5 -8
  242. data/test/dummy/spec/mailers/previews/note_preview.rb +3 -5
  243. data/test/dummy/spec/models/note_spec.rb +36 -35
  244. data/test/dummy/spec/models/picture_spec.rb +5 -0
  245. data/test/dummy/spec/models/user_spec.rb +10 -8
  246. data/test/dummy/spec/rails_helper.rb +29 -31
  247. data/test/dummy/spec/requests/ctrs_spec.rb +7 -0
  248. data/test/dummy/spec/requests/devs_spec.rb +7 -0
  249. data/test/dummy/spec/spec_helper.rb +19 -17
  250. data/test/dummy/spec/support/authentication_helper.rb +8 -7
  251. data/test/dummy/spec/support/databasecleaner.rb +3 -1
  252. data/test/dummy/spec/support/factory_bot.rb +7 -5
  253. data/test/dummy/spec/support/omniauth_macros.rb +14 -19
  254. data/test/dummy/spec/support/request_spec_helper.rb +3 -1
  255. data/test/dummy/spec/views/articles/_article.html.erb_spec.rbx +9 -8
  256. data/test/generated_app_test.rb +261 -0
  257. data/test/installation_test.rb +368 -0
  258. data/test/integration_test.rb +398 -0
  259. data/test/jenkins_stage_test.rb +182 -0
  260. data/test/note_model_test.rb +224 -0
  261. data/test/note_validation_integration_test.rb +292 -0
  262. data/test/run_unit_tests.sh +91 -0
  263. data/test/test_helper.rb +8 -16
  264. metadata +188 -60
  265. data/lib/generators/jinda/templates/app/assets/stylesheets/application.css.scss +0 -15
  266. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets.rb +0 -28
  267. data/lib/generators/jinda/templates/app/views/layouts/_head.html.erb +0 -10
  268. data/lib/generators/jinda/templates/app/views/layouts/_meta_tag.html.erb +0 -19
  269. data/lib/generators/jinda/templates/app/views/layouts/bsb/_footer.haml +0 -7
  270. data/lib/generators/jinda/templates/app/views/layouts/bsb/_header.haml +0 -147
  271. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu.haml +0 -47
  272. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu_mm.haml +0 -34
  273. data/lib/generators/jinda/templates/app/views/layouts/bsb/_sidebar.haml +0 -155
  274. data/lib/generators/jinda/templates/app/views/layouts/bsb/application.haml-bsb +0 -47
  275. data/lib/generators/jinda/templates/app/views/layouts/gmail.html.erb +0 -9
  276. data/lib/generators/jinda/templates/app/views/layouts/jqm/_full.haml +0 -33
  277. data/lib/generators/jinda/templates/app/views/layouts/jqm/_page.haml +0 -16
  278. data/lib/generators/jinda/templates/app/views/layouts/jqm/application.haml-jqm +0 -4
  279. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.erb +0 -13
  280. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.haml +0 -3
  281. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.erb +0 -1
  282. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.haml +0 -1
  283. data/lib/generators/jinda/templates/app/views/layouts/mobile.html.erb +0 -13
  284. data/lib/generators/jinda/templates/app/views/layouts/mobilejq.html.erb +0 -31
  285. data/lib/generators/jinda/templates/app/views/layouts/print.html.erb +0 -22
  286. data/lib/generators/jinda/templates/app/views/layouts/utf8.html.erb +0 -22
  287. data/lib/generators/jinda/templates/config/initializers/fix_mongoid_generator.rb-org +0 -14
  288. data/test/dummy/Guardfile +0 -96
  289. data/test/dummy/app/controllers/application_controller.rb.bak +0 -2
  290. data/test/dummy/app/controllers/password_resets.rb +0 -28
  291. data/test/dummy/app/helpers/application_helper.rb.bak +0 -2
  292. data/test/dummy/app/views/identities/new-bak.html.haml +0 -32
  293. data/test/dummy/app/views/layouts/application.haml.bak +0 -4
  294. data/test/dummy/app/views/layouts/application.html.erb.bak +0 -15
  295. data/test/dummy/app/views/layouts/lte/_header.haml +0 -111
  296. data/test/dummy/app/views/layouts/lte/_rightbar.haml +0 -123
  297. data/test/dummy/app/views/sessions/new-bak.html.haml +0 -22
  298. data/test/dummy/config/initializers/fix_mongoid_generator.rb-org +0 -14
  299. data/test/dummy/tmp/development_secret.txt +0 -1
  300. data/test/integration/navigation_test.rb +0 -7
  301. data/test/jinda_test.rb +0 -7
  302. /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/application.scss +0 -0
  303. /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/jinda.scss +0 -0
  304. /data/lib/generators/jinda/templates/app/mailers/{application_mailer.rb → application_mailer.rb-org} +0 -0
  305. /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard1.haml +0 -0
  306. /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard2.haml +0 -0
  307. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_flash.haml +0 -0
  308. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_footer.haml +0 -0
  309. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu.haml +0 -0
  310. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu_mm.haml +0 -0
  311. /data/lib/generators/jinda/templates/app/views/layouts/{bsb → lte}/_rightbar.haml +0 -0
@@ -0,0 +1,188 @@
1
+ # Docker Setup for Jinda Application
2
+
3
+ This document explains the Docker configuration files and how to use them for development and deployment.
4
+
5
+ ## Docker Files Overview
6
+
7
+ Your Jinda application includes several Docker configuration files:
8
+
9
+ ### 1. `Dockerfile`
10
+ - **Purpose**: Builds the Rails application container
11
+ - **Usage**: Used with `docker-compose-web.yml` for full stack deployment
12
+ - **What it does**:
13
+ - Sets up Ruby 3.3.0 environment
14
+ - Installs dependencies from Gemfile
15
+ - Copies entire application
16
+ - Configures Rails server on port 3000
17
+
18
+ ### 2. `docker-compose-mongodb.yml` (Recommended for Development)
19
+ - **Purpose**: MongoDB only on standard port
20
+ - **Best for**: Local development, CI/CD testing
21
+ - **Port**: 27017 (standard MongoDB port)
22
+ - **Usage**:
23
+ ```bash
24
+ docker compose -f docker-compose-mongodb.yml up -d
25
+ ```
26
+ - **Why use this**:
27
+ - Minimal setup
28
+ - Run Rails app locally with `rails server`
29
+ - Works with standard MongoDB tools
30
+ - No volume mount configuration needed
31
+
32
+ ### 3. `docker-compose.yml`
33
+ - **Purpose**: Simple MongoDB container
34
+ - **Port**: 27017 (standard MongoDB port)
35
+ - **Usage**:
36
+ ```bash
37
+ docker compose up -d
38
+ ```
39
+
40
+ ### 4. `docker-compose-web.yml`
41
+ - **Purpose**: Full stack with web app and MongoDB in containers
42
+ - **Best for**: Production-like environment, full containerized development
43
+ - **Ports**:
44
+ - Rails: 3000
45
+ - MongoDB: 27017
46
+ - **Important**: Edit this file before using for development with local gem modifications
47
+ - **Usage**:
48
+ ```bash
49
+ docker compose -f docker-compose-web.yml up -d
50
+ ```
51
+
52
+ ## Getting Started
53
+
54
+ ### Option A: MongoDB Only (Recommended)
55
+
56
+ This is the simplest approach for development:
57
+
58
+ 1. **Start MongoDB**:
59
+ ```bash
60
+ docker compose -f docker-compose-mongodb.yml up -d
61
+ ```
62
+
63
+ 2. **Verify MongoDB is running**:
64
+ ```bash
65
+ docker ps
66
+ ```
67
+
68
+ 3. **Run your Rails app locally**:
69
+ ```bash
70
+ bundle install
71
+ rails jinda:seed
72
+ rails server
73
+ ```
74
+
75
+ 4. **Stop MongoDB when done**:
76
+ ```bash
77
+ docker compose -f docker-compose-mongodb.yml down
78
+ ```
79
+
80
+ ### Option B: Full Stack (Web + MongoDB)
81
+
82
+ Use this for containerized development or testing:
83
+
84
+ 1. **Edit `docker-compose-web.yml`** (optional, for local gem development):
85
+ ```yaml
86
+ services:
87
+ web:
88
+ volumes:
89
+ - .:/myapp
90
+ # Add your local gem paths:
91
+ - ~/mygem/jinda:/path/to/local/jinda
92
+ - ~/mygem/jinda_adminlte:/path/to/local/jinda_adminlte
93
+ ```
94
+
95
+ 2. **Start full stack**:
96
+ ```bash
97
+ docker compose -f docker-compose-web.yml up -d
98
+ ```
99
+
100
+ 3. **View logs**:
101
+ ```bash
102
+ docker compose -f docker-compose-web.yml logs -f web
103
+ ```
104
+
105
+ 4. **Access application**:
106
+ - Web: http://localhost:3000
107
+ - MongoDB: localhost:27017
108
+
109
+ 5. **Stop services**:
110
+ ```bash
111
+ docker compose -f docker-compose-web.yml down
112
+ ```
113
+
114
+ ## MongoDB Port Information
115
+
116
+ All Docker configurations use the **standard MongoDB port 27017**:
117
+ - Consistent with MongoDB defaults
118
+ - Works with standard MongoDB clients
119
+ - Compatible with CI/CD systems
120
+ - No special configuration needed in mongoid.yml
121
+
122
+ ## For CI/CD
123
+
124
+ Your CI pipeline should use `docker-compose-mongodb.yml`:
125
+
126
+ ```yaml
127
+ # GitHub Actions example
128
+ services:
129
+ mongodb:
130
+ image: mongo:latest
131
+ ports:
132
+ - 27017:27017
133
+ ```
134
+
135
+ Then run tests with:
136
+ ```bash
137
+ MONGODB_PORT=27017 rake test
138
+ ```
139
+
140
+ ## Troubleshooting
141
+
142
+ ### Port Already in Use
143
+ If port 27017 is already in use:
144
+ ```bash
145
+ # Check what's using the port
146
+ lsof -i :27017
147
+
148
+ # If it's an old container
149
+ docker ps -a | grep mongo
150
+ docker stop <container_name>
151
+ docker rm <container_name>
152
+ ```
153
+
154
+ ### Cannot Connect to MongoDB
155
+ 1. Verify MongoDB is running:
156
+ ```bash
157
+ docker ps | grep mongo
158
+ ```
159
+
160
+ 2. Check logs:
161
+ ```bash
162
+ docker logs <container_name>
163
+ ```
164
+
165
+ 3. Test connection:
166
+ ```bash
167
+ mongosh mongodb://localhost:27017
168
+ ```
169
+
170
+ ### Volume Data Persistence
171
+ To remove all data and start fresh:
172
+ ```bash
173
+ docker compose -f docker-compose-mongodb.yml down -v
174
+ ```
175
+
176
+ ## Best Practices
177
+
178
+ 1. **Development**: Use `docker-compose-mongodb.yml` and run Rails locally
179
+ 2. **Testing**: Use MongoDB-only containers with standard port 27017
180
+ 3. **Production**: Use appropriate production Docker configurations (not these dev files)
181
+ 4. **Local Gem Development**: Edit `docker-compose-web.yml` volume mounts as needed
182
+ 5. **CI/CD**: Always use standard port 27017 for consistency
183
+
184
+ ## Additional Resources
185
+
186
+ - [Docker Compose Documentation](https://docs.docker.com/compose/)
187
+ - [MongoDB Docker Hub](https://hub.docker.com/_/mongo)
188
+ - [Jinda Documentation](https://github.com/kul1/jinda)
@@ -1,14 +1,24 @@
1
- # https://docs.docker.com/compose/rails/
2
- FROM ruby:2.6.8
1
+ # Dockerfile for Jinda Rails Application
2
+ # This Dockerfile is used with docker-compose-web.yml for full stack deployment
3
+ # It copies the entire application and sets up the web container
4
+ # For CI/testing, use docker-compose-mongodb.yml for MongoDB only
5
+ # Reference: https://docs.docker.com/compose/rails/
6
+
7
+ FROM ruby:3.3.0
3
8
  RUN apt-get update -qq
4
9
  RUN mkdir /myapp
5
10
  WORKDIR /myapp
11
+
12
+ # Copy dependency files first for better layer caching
6
13
  COPY Gemfile /myapp/Gemfile
7
14
  COPY Gemfile.lock /myapp/Gemfile.lock
8
- # Fix from here
9
- RUN gem install bundler:2.2.27
10
- # Fix end here
15
+ COPY vendor /myapp/vendor
16
+
17
+ # Install bundler and dependencies
18
+ RUN gem install bundler:2.4.10
11
19
  RUN bundle install
20
+
21
+ # Copy entire application (for full deployment)
12
22
  COPY . /myapp
13
23
 
14
24
  # Set Rails environment to production
@@ -2,7 +2,7 @@
2
2
  Rails Application Generator using Freemind
3
3
 
4
4
  * [jinda](https://github.com/kul1/jinda)
5
- - ![jinda-screen](https://user-images.githubusercontent.com/3953832/41832753-0143339a-7813-11e8-9ef9-c1601443c604.png)
5
+ - ![jinda-screen](doc/images/intro_old.png)
6
6
 
7
7
  ## Additional Extension themes also available at
8
8
  * [jinda_adminlte](https://github.com/kul1/jinda_adminlte)
@@ -15,8 +15,8 @@ Rails Application Generator using Freemind
15
15
 
16
16
  These versions works for sure but others may do.
17
17
 
18
- * Ruby 2.7.0
19
- * Rails 6.0.3
18
+ * Ruby 3.3.0
19
+ * Rails 7.1.6
20
20
  * MongoDB 6
21
21
  - Username:
22
22
  - Password:
@@ -1,4 +1,8 @@
1
1
  //= link_tree ../images
2
2
  //= link_directory ../stylesheets .css
3
3
  //= link application.js
4
+ //= link logo_jinda.png
5
+ //= link favicon.ico
6
+ //= link jinda.css
7
+ //= link sarabun.css
4
8
 
@@ -1,15 +1,15 @@
1
1
  // This is a manifest file that'll be compiled into application.js, which will include all the files
2
2
  // listed below.
3
3
  //
4
- // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
- // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
5
+ // vendor/assets/javascripts directory can be referenced here using a relative path.
6
6
  //
7
7
  // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // the compiled file.
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
9
  //
10
- // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
- // GO AFTER THE REQUIRES BELOW.
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
12
  //
13
- //= require jinda_jqm
14
-
15
-
13
+ //= require rails-ujs
14
+ // require turbolinks
15
+ //= require jindalte.js
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ApplicationCable
2
4
  class Channel < ActionCable::Channel::Base
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ApplicationCable
2
4
  class Connection < ActionCable::Connection::Base
3
5
  end
@@ -1,2 +1,3 @@
1
+ # frozen_string_literal: true
1
2
  class AdminltesController < ApplicationController
2
3
  end
@@ -1,81 +1,83 @@
1
- class Api::V1::NotesController < ApplicationController
2
- before_action :load_note, only: [:show, :destroy]
3
- # before_action :xload_current_ma_user, only: [:destroy]
4
-
5
- def index
6
- @notes = Note.desc(:created_at).page(params[:page]).per(10)
7
- render json: @notes
8
- end
9
-
10
- def my
11
- @notes = Note.where(user_id: current_ma_user).desc(:created_at).page(params[:page]).per(10)
12
- render json: @notes
13
- end
14
-
15
- def show
16
- end
17
-
18
- def edit
19
- @note = Note.find(params[:id])
20
- @page_title = 'Edit Note'
21
- end
22
-
23
- def create
24
- @note = Note.new(
25
- title: params[:title],
26
- body: params[:body],
27
- user_id: params[:user])
28
-
29
- @note.save!
30
- render json: @note, status: :created
31
- end
32
-
33
-
34
- def update
35
- # $xvars["select_note"] and $xvars["edit_note"]
36
- # These are variables.
37
- # They contain everything that we get their forms select_note and edit_note
38
- note_id = $xvars["select_note"] ? $xvars["select_note"]["id"] : $xvars["p"]["note_id"]
39
- @note = Note.find(note_id)
40
- @note.update(title: $xvars["edit_note"]["title"],
41
- body: $xvars["edit_note"]["body"])
42
- redirect_to @note
43
-
44
- end
45
-
46
- def delete
47
- # called by freemind
48
- # Tobe called from other controller:jinda
49
- @note_id = $xvars["select_note"] ? $xvars["select_note"]["id"] : $xvars["p"]["note_id"]
50
- @note = Note.find(@note_id)
51
- @note.destroy
52
- end
53
-
54
- def destroy
55
- # called by rails menu my
56
- if current_ma_user.role.upcase.split(',').include?("A") || current_ma_user == @note.user
57
- @note.destroy
1
+ # frozen_string_literal: true
2
+
3
+ module Api
4
+ module V1
5
+ class NotesController < ApplicationController
6
+ before_action :load_note, only: %i[show destroy]
7
+ # before_action :xload_current_ma_user, only: [:destroy]
8
+
9
+ def index
10
+ @notes = Note.desc(:created_at).page(params[:page]).per(10)
11
+ render json: @notes
12
+ end
13
+
14
+ def my
15
+ @notes = Note.where(user_id: current_ma_user).desc(:created_at).page(params[:page]).per(10)
16
+ render json: @notes
17
+ end
18
+
19
+ def show; end
20
+
21
+ def edit
22
+ @note = Note.find(params[:id])
23
+ @page_title = 'Edit Note'
24
+ end
25
+
26
+ def create
27
+ @note = Note.new(
28
+ title: params[:title],
29
+ body: params[:body],
30
+ user_id: params[:user]
31
+ )
32
+
33
+ @note.save!
34
+ render json: @note, status: :created
35
+ end
36
+
37
+ def update
38
+ # $xvars["select_note"] and $xvars["edit_note"]
39
+ # These are variables.
40
+ # They contain everything that we get their forms select_note and edit_note
41
+ note_id = $xvars['select_note'] ? $xvars['select_note']['id'] : $xvars['p']['note_id']
42
+ @note = Note.find(note_id)
43
+ @note.update(title: $xvars['edit_note']['title'],
44
+ body: $xvars['edit_note']['body'])
45
+ redirect_to @note
46
+ end
47
+
48
+ def delete
49
+ # called by freemind
50
+ # Tobe called from other controller:jinda
51
+ @note_id = $xvars['select_note'] ? $xvars['select_note']['id'] : $xvars['p']['note_id']
52
+ @note = Note.find(@note_id)
53
+ @note.destroy
54
+ end
55
+
56
+ def destroy
57
+ # called by rails menu my
58
+ @note.destroy if current_ma_user.role.upcase.split(',').include?('A') || current_ma_user == @note.user
59
+ redirect_to action: 'my'
60
+ end
61
+
62
+ def mail
63
+ NoteMailer.gmail(
64
+ $xvars['display_mail']['body'],
65
+ $xvars['select_note']['email'],
66
+ $xvars['display_mail']['title'],
67
+ xload_current_ma_user.email
68
+ )
69
+ end
70
+
71
+ private
72
+
73
+ # Tobe called from other controller:jinda
74
+ def xload_current_ma_user
75
+ @current_ma_user = User.find($xvars['user_id'])
76
+ end
77
+
78
+ def load_note
79
+ @note = Note.find(params[:id])
80
+ end
58
81
  end
59
- redirect_to :action=>'my'
60
- end
61
-
62
- def mail
63
- NoteMailer.gmail(
64
- $xvars["display_mail"]["body"],
65
- $xvars["select_note"]["email"],
66
- $xvars["display_mail"]["title"],
67
- xload_current_ma_user.email)
68
82
  end
69
-
70
- private
71
-
72
- # Tobe called from other controller:jinda
73
- def xload_current_ma_user
74
- @current_ma_user = User.find($xvars["user_id"])
75
- end
76
-
77
- def load_note
78
- @note = Note.find(params[:id])
79
- end
80
-
81
83
  end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AdminsController < ApplicationController
2
4
  def update_role
3
- user = User.find_by :code=> $xvars["select_user"]["code"]
4
- user.update_attribute :role, $xvars["edit_role"]["role"]
5
+ user = User.find_by code: $xvars['select_user']['code']
6
+ user.update_attribute :role, $xvars['edit_role']['role']
5
7
  end
6
8
  end
@@ -1,22 +1,24 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ApplicationController < ActionController::Base
2
4
  before_action :prepare_meta_tags, if: -> { request.get? }
3
- # CSRF protection is turned on with the protect_from_forgery method.
5
+ # CSRF protection is turned on with the protect_from_forgery method.
4
6
  protect_from_forgery unless: -> { request.format.json? }
5
- def prepare_meta_tags(options={})
7
+ def prepare_meta_tags(options = {})
6
8
  site_name = DEFAULT_TITLE
7
- title = [controller_name, action_name].join(" ")
9
+ title = [controller_name, action_name].join(' ')
8
10
  description = DEFAULT_DESCRIPTION
9
- image = options[:image] || href="/assets/images/logo.png"
10
- keywords = DEFAULT_KEYWORDS
11
+ image = options[:image] || '/assets/images/logo.png'
12
+ keywords = DEFAULT_KEYWORDS
11
13
  current_url = request.url
12
14
 
13
15
  # Let's prepare a nice set of defaults
14
16
  defaults = {
15
- site: site_name,
16
- title: title,
17
- image: image,
17
+ site: site_name,
18
+ title: title,
19
+ image: image,
18
20
  description: description,
19
- keywords: keywords,
21
+ keywords: keywords,
20
22
  twitter: {
21
23
  site_name: site_name,
22
24
  site: site_name,
@@ -1,87 +1,84 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ArticlesController < ApplicationController
2
- before_action :load_articles, except: [:destroy]
3
- before_action :load_my_articles, only: [:my]
4
- before_action :load_article, only: [:destroy, :edit]
4
+ before_action :load_articles, except: [:destroy]
5
+ before_action :load_my_articles, only: [:my]
6
+ before_action :load_article, only: %i[destroy edit]
5
7
 
6
- def index
8
+ def index
7
9
  # before_action
8
- end
10
+ end
9
11
 
10
12
  def my
11
13
  # before_action
12
14
  end
13
15
 
14
16
  def show
15
- @article = Article.find(article_params)
17
+ @article = Article.find(article_params)
16
18
  @commentable = @article
17
- @comments = @commentable.comments.desc(:created_at).page(params[:page]).per(10)
18
- @user = User.find(@article.user_id)
19
- @show = Hash.new
20
- @show = {:article => @article, :comments => @comments, :user => @user}
19
+ @comments = @commentable.comments.desc(:created_at).page(params[:page]).per(10)
20
+ @user = User.find(@article.user_id)
21
+ @show = {}
22
+ @show = { article: @article, comments: @comments, user: @user }
21
23
  prepare_meta_tags(title: @article.title,
22
24
  description: @article.text,
23
25
  keywords: @article.keywords)
24
26
  end
25
27
 
26
28
  def edit
27
- @page_title = 'Edit Article'
29
+ @page_title = 'Edit Article'
28
30
  end
29
31
 
30
32
  def create
31
33
  # Use Jinda $xvars
32
34
  @article = Article.new(
33
- title: $xvars["form_article"]["title"],
34
- text: $xvars["form_article"]["text"],
35
- keywords: $xvars["form_article"]["keywords"],
36
- body: $xvars["form_article"]["body"],
37
- user_id: $xvars["user_id"])
35
+ title: $xvars['form_article']['title'],
36
+ text: $xvars['form_article']['text'],
37
+ keywords: $xvars['form_article']['keywords'],
38
+ body: $xvars['form_article']['body'],
39
+ user_id: $xvars['user_id']
40
+ )
38
41
  @article.save!
39
42
  end
40
43
 
41
44
  def update
42
45
  @article = Article.find(params[:id])
43
46
  @article.update(
44
- title: params["article"]["title"],
45
- text: params["article"]["text"],
46
- keywords: params["article"]["keywords"],
47
- body: params["article"]["body"]
48
- )
49
- redirect_to :action=> 'show', :article_id => @article.id
47
+ title: params['article']['title'],
48
+ text: params['article']['text'],
49
+ keywords: params['article']['keywords'],
50
+ body: params['article']['body']
51
+ )
52
+ redirect_to action: 'show', article_id: @article.id
50
53
  end
51
54
 
52
55
  def j_update
53
56
  # Use Jinda $xvars
54
- @article_id = $xvars["select_article"] ? $xvars["select_article"]["title"] : $xvars["p"]["article_id"]
55
- @article = Article.find_by :id => @article_id
56
- @article.update(title: $xvars["edit_article"]["article"]["title"],
57
- text: $xvars["edit_article"]["article"]["text"],
58
- keywords: $xvars["edit_article"]["article"]["keywords"],
59
- body: $xvars["edit_article"]["article"]["body"]
60
- )
57
+ @article_id = $xvars['select_article'] ? $xvars['select_article']['title'] : $xvars['p']['article_id']
58
+ @article = Article.find_by id: @article_id
59
+ @article.update(title: $xvars['edit_article']['article']['title'],
60
+ text: $xvars['edit_article']['article']['text'],
61
+ keywords: $xvars['edit_article']['article']['keywords'],
62
+ body: $xvars['edit_article']['article']['body'])
61
63
  end
62
64
 
63
65
  def destroy
64
- # Use Rails
66
+ # Use Rails
65
67
  # before_action
66
68
 
67
- if current_admin? || current_ma_user == @article.user
68
- @article.destroy
69
- end
69
+ @article.destroy if current_admin? || current_ma_user == @article.user
70
70
 
71
- action = (current_admin? ? 'index' : 'my')
72
- redirect_to :action=> (current_admin? ? 'index' : 'my')
71
+ (current_admin? ? 'index' : 'my')
72
+ redirect_to action: (current_admin? ? 'index' : 'my')
73
73
  end
74
74
 
75
75
  private
76
-
77
- def current_admin?
78
- if current_ma_user.role.upcase.split(',').include?("A")
79
- return true
80
- else
81
- return false
82
- end
83
- end
84
76
 
77
+ def current_admin?
78
+ return true if current_ma_user.role.upcase.split(',').include?('A')
79
+
80
+ false
81
+ end
85
82
 
86
83
  def load_articles
87
84
  @articles = Article.desc(:created_at).page(params[:page]).per(10)
@@ -106,5 +103,4 @@ class ArticlesController < ApplicationController
106
103
  def load_comments
107
104
  @comments = @article.comments.find_all
108
105
  end
109
-
110
106
  end