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.
- checksums.yaml +4 -4
- data/README.md +46 -29
- data/Rakefile +103 -1
- data/app/assets/config/manifest.js +4 -1
- data/app/assets/javascripts/jinda_bootstrap.js +20 -0
- data/app/assets/stylesheets/_jinda_bootstrap_theme.scss +190 -0
- data/{lib/generators/jinda/templates/app/assets/stylesheets/jinda_jqm.css.scss → app/assets/stylesheets/jinda_bootstrap.css.scss} +12 -10
- data/app/config/routes.rb +38 -28
- data/app/controllers/concerns/jinda_general_concern.rb +86 -87
- data/app/controllers/concerns/jinda_run_concern.rb +184 -184
- data/app/controllers/jinda_controller.rb +23 -22
- data/bin/lint_modified +21 -0
- data/config/routes.rb +41 -22
- data/lib/generators/jinda/config_generator.rb +102 -81
- data/lib/generators/jinda/install_generator.rb +305 -148
- data/lib/generators/jinda/install_generator.rb.bak2 +268 -0
- data/lib/generators/jinda/installer/gems_install.rb +125 -127
- data/lib/generators/jinda/minitest_generator.rb +19 -18
- data/lib/generators/jinda/rspec_generator.rb +15 -14
- data/lib/generators/jinda/templates/DOCKER.md +188 -0
- data/lib/generators/jinda/templates/Dockerfile +15 -5
- data/lib/generators/jinda/templates/README.md +3 -3
- data/lib/generators/jinda/templates/app/assets/config/manifest.js +4 -0
- data/lib/generators/jinda/templates/app/assets/javascripts/application.js +8 -8
- data/lib/generators/jinda/templates/app/channels/application_cable/channel.rb +2 -0
- data/lib/generators/jinda/templates/app/channels/application_cable/connection.rb +2 -0
- data/{test/dummy → lib/generators/jinda/templates}/app/controllers/adminltes_controller.rb +1 -0
- data/lib/generators/jinda/templates/app/controllers/api/v1/notes_controller.rb +80 -78
- data/lib/generators/jinda/templates/app/controllers/jinda_org/admins_controller.rb +4 -2
- data/lib/generators/jinda/templates/app/controllers/jinda_org/application_controller.rb +11 -9
- data/lib/generators/jinda/templates/app/controllers/jinda_org/articles_controller.rb +40 -44
- data/lib/generators/jinda/templates/app/controllers/jinda_org/comments_controller.rb +10 -8
- data/lib/generators/jinda/templates/app/controllers/jinda_org/docs_controller.rb +23 -24
- data/lib/generators/jinda/templates/app/controllers/jinda_org/identities_controller.rb +3 -1
- data/lib/generators/jinda/templates/app/controllers/jinda_org/notes_controller.rb +25 -27
- data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets_controller.rb +16 -18
- data/lib/generators/jinda/templates/app/controllers/jinda_org/sessions_controller.rb +13 -14
- data/lib/generators/jinda/templates/app/controllers/jinda_org/sitemap_controller.rb +4 -4
- data/lib/generators/jinda/templates/app/controllers/jinda_org/users_controller.rb +14 -14
- data/lib/generators/jinda/templates/app/controllers/mindmap_editor_controller.rb +74 -0
- data/lib/generators/jinda/templates/app/helpers/admins_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/application_helper.rb +21 -20
- data/lib/generators/jinda/templates/app/helpers/articles_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/basic_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/comments_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/ctrs_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/devs_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/mindmap_editor_helper.rb +3 -0
- data/lib/generators/jinda/templates/app/helpers/pictures_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/sitemap_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/users_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/jinda/index.mm +276 -298
- data/lib/generators/jinda/templates/app/jinda/template/index.mm +1 -0
- data/lib/generators/jinda/templates/app/mailers/jinda_mailer.rb +5 -3
- data/lib/generators/jinda/templates/app/mailers/note_mailer.rb +6 -4
- data/lib/generators/jinda/templates/app/mailers/user_mailer.rb +5 -5
- data/lib/generators/jinda/templates/app/models/address.rb +10 -8
- data/lib/generators/jinda/templates/app/models/article.rb +8 -6
- data/lib/generators/jinda/templates/app/models/comment.rb +10 -8
- data/lib/generators/jinda/templates/app/models/identity.rb +11 -10
- data/lib/generators/jinda/templates/app/models/jinda/doc.rb +36 -33
- data/lib/generators/jinda/templates/app/models/jinda/jinda_module.rb +15 -0
- data/lib/generators/jinda/templates/app/models/jinda/module.rb +14 -10
- data/lib/generators/jinda/templates/app/models/jinda/notice.rb +15 -11
- data/lib/generators/jinda/templates/app/models/jinda/role.rb +11 -7
- data/lib/generators/jinda/templates/app/models/jinda/runseq.rb +23 -20
- data/lib/generators/jinda/templates/app/models/jinda/service.rb +19 -15
- data/lib/generators/jinda/templates/app/models/jinda/xmain.rb +42 -36
- data/lib/generators/jinda/templates/app/models/note.rb +14 -10
- data/lib/generators/jinda/templates/app/models/param.rb +23 -20
- data/lib/generators/jinda/templates/app/models/person.rb +9 -7
- data/lib/generators/jinda/templates/app/models/user.rb +42 -41
- data/lib/generators/jinda/templates/app/views/articles/show.html.haml +2 -2
- data/lib/generators/jinda/templates/app/views/identities/new.html.haml +13 -0
- data/lib/generators/jinda/templates/app/views/jinda/_static_bootstrap.haml +23 -0
- data/lib/generators/jinda/templates/app/views/jinda/feed.rss.builder +15 -13
- data/lib/generators/jinda/templates/app/views/jinda/index.html.haml +3 -2
- data/lib/generators/jinda/templates/app/views/layouts/application.haml +31 -4
- data/lib/generators/jinda/templates/app/views/layouts/lte/_header.haml +54 -0
- data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_sidebar.haml +1 -1
- data/lib/generators/jinda/templates/app/views/mindmap_editor/edit.html.haml +126 -0
- data/lib/generators/jinda/templates/app/views/mindmap_editor/save.html.haml +2 -0
- data/lib/generators/jinda/templates/app/views/sessions/new.html.haml +13 -0
- data/lib/generators/jinda/templates/bin/lint_modified +21 -0
- data/lib/generators/jinda/templates/config/mongoid.yml +3 -3
- data/lib/generators/jinda/templates/config/mongoid.yml-docker +3 -3
- data/lib/generators/jinda/templates/config/mongoid.yml-localhost +3 -3
- data/lib/generators/jinda/templates/docker-compose-mongodb.yml +13 -0
- data/lib/generators/jinda/templates/docker-compose-web.yml +36 -0
- data/lib/generators/jinda/templates/docker-compose.yml +10 -14
- data/lib/generators/jinda/templates/spec/controllers/api/v1_get_index_spec.rb +15 -14
- data/lib/generators/jinda/templates/spec/controllers/api/v1_get_my_spec.rb +9 -4
- data/lib/generators/jinda/templates/spec/controllers/api/v1_post_spec.rb +4 -3
- data/lib/generators/jinda/templates/spec/controllers/sessions_controller_spec.rb +82 -90
- data/lib/generators/jinda/templates/spec/features/userlogins_spec.rb +12 -15
- data/lib/generators/jinda/templates/spec/mailers/note_spec.rb +5 -8
- data/lib/generators/jinda/templates/spec/mailers/previews/note_preview.rb +3 -5
- data/lib/generators/jinda/templates/spec/models/note_spec.rb +36 -35
- data/lib/generators/jinda/templates/spec/models/user_spec.rb +10 -8
- data/lib/generators/jinda/templates/spec/rails_helper.rb +29 -31
- data/lib/generators/jinda/templates/spec/spec_helper.rb +19 -17
- data/lib/generators/jinda/templates/spec/support/authentication_helper.rb +8 -7
- data/lib/generators/jinda/templates/spec/support/databasecleaner.rb +3 -1
- data/lib/generators/jinda/templates/spec/support/factory_bot.rb +7 -5
- data/lib/generators/jinda/templates/spec/support/omniauth_macros.rb +14 -19
- data/lib/generators/jinda/templates/spec/support/request_spec_helper.rb +3 -1
- data/lib/generators/jinda/templates/spec/views/articles/_article.html.erb_spec.rbx +9 -8
- data/lib/generators/jinda/templates/test/application_system_test_case.rb +3 -1
- data/lib/generators/jinda/templates/test/integration/jinda_routes_test.rb +16 -21
- data/lib/generators/jinda/templates/test/test_helper.rb +7 -3
- data/lib/jinda/date_helpers.rb +50 -41
- data/lib/jinda/gem_helpers.rb +10 -8
- data/lib/jinda/gen_class.rb +14 -12
- data/lib/jinda/gen_controller.rb +9 -8
- data/lib/jinda/gen_freemind.rb +33 -32
- data/lib/jinda/gen_helpers.rb +146 -139
- data/lib/jinda/gen_models.rb +125 -131
- data/lib/jinda/gen_modules.rb +21 -16
- data/lib/jinda/gen_runseq.rb +71 -67
- data/lib/jinda/gen_services.rb +74 -80
- data/lib/jinda/gen_xmain.rb +38 -36
- data/lib/jinda/get_app.rb +31 -29
- data/lib/jinda/helpers.rb +4 -4
- data/lib/jinda/init_vars.rb +41 -36
- data/lib/jinda/mindmap_converter.rb +196 -0
- data/lib/jinda/railtie.rb +10 -2
- data/lib/jinda/rake_views.rb +61 -60
- data/lib/jinda/refresh.rb +67 -61
- data/lib/jinda/themes.rb +80 -60
- data/lib/jinda/version.rb +3 -1
- data/lib/jinda.rb +2 -0
- data/lib/tasks/jinda.rake +25 -22
- data/test/INTEGRATION_TEST_README.md +374 -0
- data/test/LOCAL_DEVELOPMENT.md +345 -0
- data/test/README.md +243 -0
- data/test/TEST_INFRASTRUCTURE.md +412 -0
- data/test/TEST_INSTALLATION_SH_FIXES.md +205 -0
- data/test/UNIT_TESTS_README.md +366 -0
- data/test/api_notes_controller_test.rb +231 -0
- data/test/dummy/DOCKER.md +188 -0
- data/test/dummy/Dockerfile +15 -7
- data/test/dummy/Gemfile +38 -29
- data/test/dummy/Gemfile.lock +671 -292
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/channels/application_cable/channel.rb +2 -0
- data/test/dummy/app/channels/application_cable/connection.rb +2 -0
- data/test/dummy/app/controllers/admins_controller.rb +4 -2
- data/test/dummy/app/controllers/api/v1/notes_controller.rb +80 -78
- data/test/dummy/app/controllers/application_controller.rb +11 -9
- data/test/dummy/app/controllers/articles_controller.rb +40 -44
- data/test/dummy/app/controllers/comments_controller.rb +10 -8
- data/test/dummy/app/controllers/ctrs_controller.rb +2 -0
- data/test/dummy/app/controllers/devs_controller.rb +2 -0
- data/test/dummy/app/controllers/docs_controller.rb +23 -24
- data/test/dummy/app/controllers/identities_controller.rb +3 -1
- data/test/dummy/app/controllers/mindmap_editor_controller.rb +74 -0
- data/test/dummy/app/controllers/notes_controller.rb +25 -27
- data/test/dummy/app/controllers/password_resets_controller.rb +16 -18
- data/test/dummy/app/controllers/sessions_controller.rb +13 -14
- data/test/dummy/app/controllers/sitemap_controller.rb +4 -4
- data/test/dummy/app/controllers/users_controller.rb +14 -14
- data/test/dummy/app/helpers/admins_helper.rb +2 -0
- data/test/dummy/app/helpers/application_helper.rb +21 -20
- data/test/dummy/app/helpers/articles_helper.rb +2 -0
- data/test/dummy/app/helpers/basic_helper.rb +2 -0
- data/test/dummy/app/helpers/comments_helper.rb +2 -0
- data/test/dummy/app/helpers/ctrs_helper.rb +2 -0
- data/test/dummy/app/helpers/devs_helper.rb +2 -0
- data/test/dummy/app/helpers/mindmap_editor_helper.rb +3 -0
- data/test/dummy/app/helpers/pictures_helper.rb +2 -0
- data/test/dummy/app/helpers/sitemap_helper.rb +2 -0
- data/test/dummy/app/helpers/users_helper.rb +2 -0
- data/test/dummy/app/jinda/index.mm +384 -486
- data/test/dummy/app/jinda/template/index.mm +1 -0
- data/test/dummy/app/mailers/application_mailer.rb +2 -2
- data/test/dummy/app/mailers/application_mailer.rb-org +4 -0
- data/test/dummy/app/mailers/jinda_mailer.rb +5 -3
- data/test/dummy/app/mailers/note_mailer.rb +6 -4
- data/test/dummy/app/mailers/user_mailer.rb +5 -5
- data/test/dummy/app/models/address.rb +2 -0
- data/test/dummy/app/models/article.rb +2 -0
- data/test/dummy/app/models/comment.rb +3 -2
- data/test/dummy/app/models/identity.rb +11 -10
- data/test/dummy/app/models/jinda/doc.rb +36 -33
- data/test/dummy/app/models/jinda/jinda_module.rb +15 -0
- data/test/dummy/app/models/jinda/module.rb +14 -10
- data/test/dummy/app/models/jinda/notice.rb +15 -11
- data/test/dummy/app/models/jinda/role.rb +11 -7
- data/test/dummy/app/models/jinda/runseq.rb +23 -20
- data/test/dummy/app/models/jinda/service.rb +19 -15
- data/test/dummy/app/models/jinda/xmain.rb +42 -36
- data/test/dummy/app/models/note.rb +3 -8
- data/test/dummy/app/models/param.rb +23 -20
- data/test/dummy/app/models/person.rb +2 -0
- data/test/dummy/app/models/picture.rb +11 -0
- data/test/dummy/app/models/user.rb +42 -41
- data/test/dummy/app/views/admins/index.haml +21 -0
- data/test/dummy/app/views/api/v1/notes/delete/select_note.html.erb +21 -0
- data/test/dummy/app/views/api/v1/notes/edit/edit_note.html.erb +21 -0
- data/test/dummy/app/views/api/v1/notes/index.haml +21 -0
- data/test/dummy/app/views/api/v1/notes/new/new_note.html.erb +21 -0
- data/test/dummy/app/views/articles/show.html.haml +2 -2
- data/test/dummy/app/views/devs/index.haml +21 -0
- data/test/dummy/app/views/jinda/feed.rss.builder +15 -13
- data/test/dummy/app/views/jinda/index.html.haml +3 -2
- data/test/dummy/app/views/layouts/application.haml +2 -2
- data/test/dummy/app/views/mindmap_editor/edit.html.haml +126 -0
- data/test/dummy/app/views/mindmap_editor/save.html.haml +2 -0
- data/test/dummy/bin/docker-entrypoint +3 -0
- data/test/dummy/bin/lint_modified +21 -0
- data/test/dummy/bin/setup +1 -1
- data/test/dummy/config/application.rb +7 -2
- data/test/dummy/config/boot.rb +2 -1
- data/test/dummy/config/cable.yml +1 -1
- data/test/dummy/config/credentials.yml.enc +1 -1
- data/test/dummy/config/environments/development.rb +7 -1
- data/test/dummy/config/environments/production.rb +30 -26
- data/test/dummy/config/environments/test.rb +12 -8
- data/test/dummy/config/initializers/content_security_policy.rb +2 -2
- data/test/dummy/config/initializers/filter_parameter_logging.rb +3 -3
- data/test/dummy/config/initializers/mindmap_converter.rb +5 -0
- data/test/dummy/config/initializers/mongoid.rb +24 -9
- data/test/dummy/config/initializers/omniauth.rb +5 -0
- data/test/dummy/config/initializers/permissions_policy.rb +11 -9
- data/test/dummy/config/locales/en.yml +11 -13
- data/test/dummy/config/mongoid.yml +172 -53
- data/test/dummy/config/mongoid.yml-docker +3 -3
- data/test/dummy/config/mongoid.yml-localhost +3 -3
- data/test/dummy/config/puma.rb +21 -20
- data/test/dummy/config/routes.rb +7 -1
- data/test/dummy/docker-compose-mongodb.yml +13 -0
- data/test/dummy/docker-compose-web.yml +36 -0
- data/test/dummy/docker-compose.yml +10 -18
- data/test/dummy/log/development.log +5834 -2261
- data/test/dummy/spec/controllers/api/v1_get_index_spec.rb +15 -14
- data/test/dummy/spec/controllers/api/v1_get_my_spec.rb +9 -4
- data/test/dummy/spec/controllers/api/v1_post_spec.rb +4 -3
- data/test/dummy/spec/controllers/sessions_controller_spec.rb +82 -90
- data/test/dummy/spec/factories/pictures.rb +5 -0
- data/test/dummy/spec/features/userlogins_spec.rb +12 -15
- data/test/dummy/spec/mailers/note_spec.rb +5 -8
- data/test/dummy/spec/mailers/previews/note_preview.rb +3 -5
- data/test/dummy/spec/models/note_spec.rb +36 -35
- data/test/dummy/spec/models/picture_spec.rb +5 -0
- data/test/dummy/spec/models/user_spec.rb +10 -8
- data/test/dummy/spec/rails_helper.rb +29 -31
- data/test/dummy/spec/requests/ctrs_spec.rb +7 -0
- data/test/dummy/spec/requests/devs_spec.rb +7 -0
- data/test/dummy/spec/spec_helper.rb +19 -17
- data/test/dummy/spec/support/authentication_helper.rb +8 -7
- data/test/dummy/spec/support/databasecleaner.rb +3 -1
- data/test/dummy/spec/support/factory_bot.rb +7 -5
- data/test/dummy/spec/support/omniauth_macros.rb +14 -19
- data/test/dummy/spec/support/request_spec_helper.rb +3 -1
- data/test/dummy/spec/views/articles/_article.html.erb_spec.rbx +9 -8
- data/test/generated_app_test.rb +261 -0
- data/test/installation_test.rb +368 -0
- data/test/integration_test.rb +398 -0
- data/test/jenkins_stage_test.rb +182 -0
- data/test/note_model_test.rb +224 -0
- data/test/note_validation_integration_test.rb +292 -0
- data/test/run_unit_tests.sh +91 -0
- data/test/test_helper.rb +8 -16
- metadata +188 -60
- data/lib/generators/jinda/templates/app/assets/stylesheets/application.css.scss +0 -15
- data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets.rb +0 -28
- data/lib/generators/jinda/templates/app/views/layouts/_head.html.erb +0 -10
- data/lib/generators/jinda/templates/app/views/layouts/_meta_tag.html.erb +0 -19
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_footer.haml +0 -7
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_header.haml +0 -147
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu.haml +0 -47
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu_mm.haml +0 -34
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_sidebar.haml +0 -155
- data/lib/generators/jinda/templates/app/views/layouts/bsb/application.haml-bsb +0 -47
- data/lib/generators/jinda/templates/app/views/layouts/gmail.html.erb +0 -9
- data/lib/generators/jinda/templates/app/views/layouts/jqm/_full.haml +0 -33
- data/lib/generators/jinda/templates/app/views/layouts/jqm/_page.haml +0 -16
- data/lib/generators/jinda/templates/app/views/layouts/jqm/application.haml-jqm +0 -4
- data/lib/generators/jinda/templates/app/views/layouts/mailer.html.erb +0 -13
- data/lib/generators/jinda/templates/app/views/layouts/mailer.html.haml +0 -3
- data/lib/generators/jinda/templates/app/views/layouts/mailer.text.erb +0 -1
- data/lib/generators/jinda/templates/app/views/layouts/mailer.text.haml +0 -1
- data/lib/generators/jinda/templates/app/views/layouts/mobile.html.erb +0 -13
- data/lib/generators/jinda/templates/app/views/layouts/mobilejq.html.erb +0 -31
- data/lib/generators/jinda/templates/app/views/layouts/print.html.erb +0 -22
- data/lib/generators/jinda/templates/app/views/layouts/utf8.html.erb +0 -22
- data/lib/generators/jinda/templates/config/initializers/fix_mongoid_generator.rb-org +0 -14
- data/test/dummy/Guardfile +0 -96
- data/test/dummy/app/controllers/application_controller.rb.bak +0 -2
- data/test/dummy/app/controllers/password_resets.rb +0 -28
- data/test/dummy/app/helpers/application_helper.rb.bak +0 -2
- data/test/dummy/app/views/identities/new-bak.html.haml +0 -32
- data/test/dummy/app/views/layouts/application.haml.bak +0 -4
- data/test/dummy/app/views/layouts/application.html.erb.bak +0 -15
- data/test/dummy/app/views/layouts/lte/_header.haml +0 -111
- data/test/dummy/app/views/layouts/lte/_rightbar.haml +0 -123
- data/test/dummy/app/views/sessions/new-bak.html.haml +0 -22
- data/test/dummy/config/initializers/fix_mongoid_generator.rb-org +0 -14
- data/test/dummy/tmp/development_secret.txt +0 -1
- data/test/integration/navigation_test.rb +0 -7
- data/test/jinda_test.rb +0 -7
- /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/application.scss +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/jinda.scss +0 -0
- /data/lib/generators/jinda/templates/app/mailers/{application_mailer.rb → application_mailer.rb-org} +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard1.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard2.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_flash.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_footer.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu_mm.haml +0 -0
- /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 |
|
|
8
|
-
|
|
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
|
data/lib/jinda/rake_views.rb
CHANGED
|
@@ -1,63 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|