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,196 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MindmapConverter
4
+ class << self
5
+ # Convert FreeMind XML to jsMind JSON format
6
+ def xml_to_jsmind(xml_string)
7
+ require 'rexml/document'
8
+
9
+ doc = REXML::Document.new(xml_string)
10
+ root_node = doc.elements['//node[@TEXT="Jinda"]'] || doc.elements['//node'].first
11
+
12
+ unless root_node
13
+ return default_mindmap
14
+ end
15
+
16
+ {
17
+ meta: {
18
+ name: 'Jinda Mindmap',
19
+ author: 'Jinda Generator',
20
+ version: '1.0'
21
+ },
22
+ format: 'node_tree',
23
+ data: parse_node(root_node)
24
+ }
25
+ end
26
+
27
+ # Convert jsMind JSON to FreeMind XML format
28
+ def jsmind_to_xml(json_hash)
29
+ require 'rexml/document'
30
+
31
+ doc = REXML::Document.new
32
+ doc << REXML::XMLDecl.new('1.0', 'UTF-8')
33
+
34
+ map = doc.add_element('map', { 'version' => '1.0.1' })
35
+
36
+ # Build the tree from JSON data
37
+ data = json_hash.is_a?(String) ? JSON.parse(json_hash) : json_hash
38
+ build_node(map, data['data'] || data[:data])
39
+
40
+ # Format output
41
+ formatter = REXML::Formatters::Pretty.new(2)
42
+ formatter.compact = true
43
+ output = String.new
44
+ formatter.write(doc, output)
45
+ output
46
+ end
47
+
48
+ private
49
+
50
+ # Parse XML node recursively to jsMind format
51
+ def parse_node(xml_node)
52
+ text = xml_node.attributes['TEXT'].to_s
53
+ node_id = xml_node.attributes['ID'] || generate_id
54
+ position = xml_node.attributes['POSITION']
55
+
56
+ # Extract icon if present
57
+ icon_elem = xml_node.elements['icon']
58
+ icon = icon_elem&.attributes&.[]('BUILTIN')
59
+
60
+ # Build node data
61
+ node_data = {
62
+ id: node_id,
63
+ topic: text
64
+ }
65
+
66
+ # Add position for main branches
67
+ node_data[:direction] = position if position
68
+
69
+ # Extract custom data (icon, role, rule, etc.)
70
+ custom_data = {}
71
+ custom_data[:icon] = icon if icon
72
+
73
+ # Collect option nodes (role, rule, confirm, display)
74
+ option_nodes = []
75
+
76
+ # Parse children
77
+ children = []
78
+ xml_node.each_element('node') do |child_node|
79
+ child_text = child_node.attributes['TEXT']
80
+
81
+ # Check if it's an option node
82
+ if child_text =~ /^(role|rule|confirm|display):\s*(.+)/i
83
+ option_type = $1.downcase
84
+ option_value = $2.strip
85
+ custom_data[option_type.to_sym] = option_value
86
+ option_nodes << child_node
87
+ else
88
+ # Regular child node
89
+ children << parse_node(child_node)
90
+ end
91
+ end
92
+
93
+ # Add custom data if present
94
+ node_data[:data] = custom_data unless custom_data.empty?
95
+
96
+ # Add children if present
97
+ node_data[:children] = children unless children.empty?
98
+
99
+ node_data
100
+ end
101
+
102
+ # Build XML node recursively from jsMind data
103
+ def build_node(parent_xml, node_data)
104
+ return unless node_data
105
+
106
+ # Create node attributes
107
+ attrs = {
108
+ 'TEXT' => node_data['topic'] || node_data[:topic],
109
+ 'ID' => node_data['id'] || node_data[:id] || generate_id
110
+ }
111
+
112
+ # Add position if present
113
+ if node_data['direction'] || node_data[:direction]
114
+ attrs['POSITION'] = node_data['direction'] || node_data[:direction]
115
+ end
116
+
117
+ # Add CREATED and MODIFIED timestamps
118
+ timestamp = (Time.now.to_f * 1000).to_i
119
+ attrs['CREATED'] = timestamp.to_s
120
+ attrs['MODIFIED'] = timestamp.to_s
121
+
122
+ # Create the node element
123
+ node_elem = parent_xml.add_element('node', attrs)
124
+
125
+ # Add icon if present in custom data
126
+ custom_data = node_data['data'] || node_data[:data]
127
+ if custom_data
128
+ if custom_data['icon'] || custom_data[:icon]
129
+ icon_elem = node_elem.add_element('icon')
130
+ icon_elem.attributes['BUILTIN'] = custom_data['icon'] || custom_data[:icon]
131
+ end
132
+
133
+ # Add option nodes (role, rule, etc.) as child nodes
134
+ %w[role rule confirm display].each do |opt|
135
+ value = custom_data[opt] || custom_data[opt.to_sym]
136
+ if value
137
+ option_attrs = {
138
+ 'TEXT' => "#{opt}: #{value}",
139
+ 'ID' => generate_id,
140
+ 'CREATED' => timestamp.to_s,
141
+ 'MODIFIED' => timestamp.to_s
142
+ }
143
+ node_elem.add_element('node', option_attrs)
144
+ end
145
+ end
146
+ end
147
+
148
+ # Add children recursively
149
+ children = node_data['children'] || node_data[:children]
150
+ if children && children.is_a?(Array)
151
+ children.each do |child|
152
+ build_node(node_elem, child)
153
+ end
154
+ end
155
+ end
156
+
157
+ def generate_id
158
+ "ID_#{rand(100000000..999999999)}"
159
+ end
160
+
161
+ def default_mindmap
162
+ {
163
+ meta: {
164
+ name: 'Jinda Mindmap',
165
+ author: 'Jinda Generator',
166
+ version: '1.0'
167
+ },
168
+ format: 'node_tree',
169
+ data: {
170
+ id: 'root',
171
+ topic: 'Jinda',
172
+ children: [
173
+ {
174
+ id: 'models',
175
+ topic: 'models',
176
+ direction: 'left',
177
+ children: []
178
+ },
179
+ {
180
+ id: 'services',
181
+ topic: 'services',
182
+ direction: 'right',
183
+ children: []
184
+ },
185
+ {
186
+ id: 'roles',
187
+ topic: 'roles',
188
+ direction: 'right',
189
+ children: []
190
+ }
191
+ ]
192
+ }
193
+ }
194
+ end
195
+ end
196
+ end
data/lib/jinda/railtie.rb CHANGED
@@ -1,12 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'jinda'
2
4
  require 'jinda/helpers'
3
5
 
4
6
  module Jinda
5
7
  require 'rails'
6
8
  class Railtie < Rails::Railtie
7
- initializer 'testing' do |app|
8
- ActionController::Base.send :include, Jinda::Helpers
9
+ initializer 'testing' do |_app|
10
+ ActiveSupport.on_load(:action_controller) { include Jinda::Helpers }
11
+ end
12
+
13
+ initializer 'jinda.omniauth', after: :load_config_initializers do |_app|
14
+ # Ensure OmniAuth allows both GET and POST for callback routes
15
+ OmniAuth.config.allowed_request_methods = [:post, :get] if defined?(OmniAuth)
9
16
  end
17
+
10
18
  rake_tasks do
11
19
  load 'tasks/jinda.rake'
12
20
  end
@@ -1,63 +1,64 @@
1
- ########################################################################
2
- # Jinda Rake Task #
3
- ########################################################################
4
-
5
- def gen_views(prefix="")
6
- @prefix = prefix.empty? ? "" : (prefix+"/")
7
- t = ["*** generate ui ***"]
8
-
9
- # create array of files to be tested
10
- $afile = Array.new
11
-
12
- Jinda::Module.all.each do |m|
13
- m.services.each do |s|
14
- dir = @prefix + "app/views/#{s.module.code}"
15
- unless gen_view_file_exist?(dir)
16
- gen_view_mkdir(dir,t)
17
- end
18
-
19
- if s.code=='link'
20
- f= @prefix+"app/views/#{s.module.code}/index.haml"
21
- $afile << f
22
- unless gen_view_file_exist?(f)
23
- # check if test (@prefix)
24
- # sv = "app/jinda/template/linkview.haml"
25
- sv = @prefix.blank? ? "app/jinda/template/linkview.haml" : "lib/generators/jinda/templates/app/jinda/template/linkview.haml"
26
- f= @prefix+"app/views/#{s.module.code}/index.haml"
27
- gen_view_createfile(sv,f,t)
28
- end
29
- next
30
- end
31
-
32
- dir = @prefix+"app/views/#{s.module.code}/#{s.code}"
33
- unless gen_view_file_exist?(dir)
34
- gen_view_mkdir(dir,t)
35
- end
36
-
37
- xml= REXML::Document.new(s.xml)
38
- xml.elements.each('*/node') do |activity|
39
- icon = activity.elements['icon']
40
- next unless icon
41
- action= freemind2action(icon.attributes['BUILTIN'])
42
- next unless ui_action?(action)
43
- code_name = activity.attributes["TEXT"].to_s
44
- next if code_name.comment?
45
- code= name2code(code_name)
46
- if action=="pdf"
47
- f= @prefix + "app/views/#{s.module.code}/#{s.code}/#{code}.pdf.prawn"
48
- else
49
- f= @prefix + "app/views/#{s.module.code}/#{s.code}/#{code}.html.erb"
50
- end
51
- $afile << f
52
- unless gen_view_file_exist?(f)
53
- # sv = "app/jinda/template/view.html.erb"
54
- sv = @prefix.blank? ? "app/jinda/template/linkview.haml" : "lib/generators/jinda/templates/app/jinda/template/linkview.haml"
55
- gen_view_createfile(sv,f,t)
56
- end
57
- end
1
+ # frozen_string_literal: true
2
+
3
+ ########################################################################
4
+ # Jinda Rake Task #
5
+ ########################################################################
6
+
7
+ def gen_views(prefix = "")
8
+ @prefix = prefix.empty? ? "" : "#{prefix}/"
9
+ t = ["*** generate ui ***"]
10
+
11
+ # create array of files to be tested
12
+ $afile = []
13
+
14
+ Jinda::Module.all.each do |m|
15
+ m.services.each do |s|
16
+ dir = @prefix + "app/views/#{s.module.code}"
17
+ gen_view_mkdir(dir, t) unless gen_view_file_exist?(dir)
18
+
19
+ if s.code == "link"
20
+ f = @prefix + "app/views/#{s.module.code}/index.haml"
21
+ $afile << f
22
+ unless gen_view_file_exist?(f)
23
+ # check if test (@prefix)
24
+ # sv = "app/jinda/template/linkview.haml"
25
+ sv = @prefix.blank? ? "app/jinda/template/linkview.haml" : "lib/generators/jinda/templates/app/jinda/template/linkview.haml"
26
+ f = @prefix + "app/views/#{s.module.code}/index.haml"
27
+ gen_view_createfile(sv, f, t)
58
28
  end
29
+ next
30
+ end
31
+
32
+ dir = @prefix + "app/views/#{s.module.code}/#{s.code}"
33
+ gen_view_mkdir(dir, t) unless gen_view_file_exist?(dir)
34
+
35
+ xml = REXML::Document.new(s.xml)
36
+ xml.elements.each("*/node") do |activity|
37
+ icon = activity.elements["icon"]
38
+ next unless icon
39
+
40
+ action = freemind2action(icon.attributes["BUILTIN"])
41
+ next unless ui_action?(action)
42
+
43
+ code_name = activity.attributes["TEXT"].to_s
44
+ next if code_name.comment?
45
+
46
+ code = name2code(code_name)
47
+ f = if action == "pdf"
48
+ @prefix + "app/views/#{s.module.code}/#{s.code}/#{code}.pdf.prawn"
49
+ else
50
+ @prefix + "app/views/#{s.module.code}/#{s.code}/#{code}.html.erb"
51
+ end
52
+ $afile << f
53
+ next if gen_view_file_exist?(f)
54
+
55
+ # sv = "app/jinda/template/view.html.erb"
56
+ sv = @prefix.blank? ? "app/jinda/template/linkview.haml" : "lib/generators/jinda/templates/app/jinda/template/linkview.haml"
57
+ gen_view_createfile(sv, f, t)
59
58
  end
60
- puts $afile.join("\n")
61
- puts t.join("\n")
62
- return $afile
63
59
  end
60
+ end
61
+ Rails.logger.debug $afile.join("\n")
62
+ Rails.logger.debug t.join("\n")
63
+ $afile
64
+ end
data/lib/jinda/refresh.rb CHANGED
@@ -1,67 +1,73 @@
1
- def b(s)
2
- "<b>#{s}</b>".html_safe
3
- end
4
- def link_to_blank(body, url_options = {}, html_options = {})
5
- link_to(body, url_options, html_options.merge(target: "_blank"))
6
- end
7
- def code_text(s) # old def code(s)
8
- "<pre style='background-color: #efffef;'><code class='ruby' lang='ruby'>#{s}</code></pre>".html_safe
9
- end
1
+ # frozen_string_literal: true
10
2
 
11
- def refresh_to(url='/', option={})
12
- if option[:alert]
13
- ma_log option[:alert]
14
- end
15
- # skip #
16
- # Rails 5.2 not allow to use js inline call
17
- render inline: "<script>window.location.replace('#{url}')</script>"
18
- # redirect_to url
19
- # render js: "window.location.replace(\'#{url}\')"
20
- end
3
+ def b(s)
4
+ "<b>#{s}</b>".html_safe
5
+ end
21
6
 
22
- # def refresh_to
23
- # respond_to do |format|
24
- # format.js { render :js => "refresh();" }
25
- # end
26
- # end
7
+ def link_to_blank(body, url_options = {}, html_options = {})
8
+ link_to(body, url_options, html_options.merge(target: '_blank'))
9
+ end
27
10
 
28
- def read_binary(path)
29
- File.open path, "rb" do |f| f.read end
30
- end
31
- def redirect_to_root
32
- redirect_to root_path
33
- end
11
+ # old def code(s)
12
+ def code_text(s)
13
+ "<pre style='background-color: #efffef;'><code class='ruby' lang='ruby'>#{s}</code></pre>".html_safe
14
+ end
34
15
 
35
- # Todo refactor code
36
- def get_option(opt, runseq=@runseq)
37
- xml= REXML::Document.new(runseq.xml).root
38
- url=''
39
- # get option from second element of node using '//node'
40
- xml.each_element('//node') do |n|
41
- if n.attributes['TEXT']
42
- text = n.attributes['TEXT']
43
- url= text if text =~ /^#{opt}:\s*/
44
- end
45
- end
46
- return nil if url.blank?
47
- c, h= url.split(':', 2)
48
- opt= h ? h.strip : false
49
- end
50
- def ma_comment?(s)
51
- s[0]==35
52
- end
53
- def get_ip
54
- request.env['HTTP_X_FORWARDED_FOR'] || request.env['REMOTE_ADDR']
55
- end
56
- def get_default_role
57
- default_role= Jinda::Role.where(:code =>'default').first
58
- return default_role ? default_role.name.to_s : ''
59
- end
16
+ def refresh_to(url = '/', option = {})
17
+ ma_log option[:alert] if option[:alert]
18
+ # skip #
19
+ # Rails 5.2 not allow to use js inline call
20
+ render inline: "<script>window.location.replace('#{url}')</script>"
21
+ # redirect_to url
22
+ # render js: "window.location.replace(\'#{url}\')"
23
+ end
60
24
 
61
- def sign_in?
62
- if current_ma_user.present?
63
- return true
64
- else
65
- return false
66
- end
25
+ # def refresh_to
26
+ # respond_to do |format|
27
+ # format.js { render :js => "refresh();" }
28
+ # end
29
+ # end
30
+
31
+ def read_binary(path)
32
+ File.binread(path)
33
+ end
34
+
35
+ def redirect_to_root
36
+ redirect_to root_path
37
+ end
38
+
39
+ # Todo refactor code
40
+ def get_option(opt, runseq = @runseq)
41
+ xml = REXML::Document.new(runseq.xml).root
42
+ url = ''
43
+ # get option from second element of node using '//node'
44
+ xml.each_element('//node') do |n|
45
+ if n.attributes['TEXT']
46
+ text = n.attributes['TEXT']
47
+ url = text if /^#{opt}:\s*/.match?(text)
67
48
  end
49
+ end
50
+ return nil if url.blank?
51
+
52
+ _, h = url.split(':', 2)
53
+ opt = h ? h.strip : false
54
+ end
55
+
56
+ def ma_comment?(s)
57
+ s[0] == 35
58
+ end
59
+
60
+ def get_ip
61
+ request.env['HTTP_X_FORWARDED_FOR'] || request.env['REMOTE_ADDR']
62
+ end
63
+
64
+ def get_default_role
65
+ default_role = Jinda::Role.where(code: 'default').first
66
+ default_role ? default_role.name.to_s : ''
67
+ end
68
+
69
+ def sign_in?
70
+ return true if current_ma_user.present?
71
+
72
+ false
73
+ end