lesli 5.0.13 → 5.0.14
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/app/assets/config/lesli_manifest.js +3 -6
- data/app/assets/images/lesli/brand/app-icon.svg +45 -39
- data/app/assets/javascripts/lesli/application.js +1 -0
- data/app/controllers/lesli/abouts_controller.rb +16 -14
- data/app/controllers/lesli/application_controller.rb +13 -0
- data/app/controllers/lesli/application_devise_controller.rb +10 -12
- data/app/controllers/lesli/application_lesli_controller.rb +12 -11
- data/app/controllers/lesli/apps_controller.rb +6 -0
- data/app/controllers/lesli/roles_controller.rb +2 -2
- data/app/helpers/lesli/general_helper.rb +18 -5
- data/app/helpers/lesli/html_helper.rb +8 -0
- data/app/helpers/lesli/navigation_helper.rb +30 -11
- data/app/helpers/lesli/system_helper.rb +2 -2
- data/app/helpers/lesli/turbo_helper.rb +58 -0
- data/app/interfaces/lesli/customization_interface.rb +42 -0
- data/app/interfaces/lesli/requester_interface.rb +103 -0
- data/app/interfaces/lesli/responder_interface.rb +127 -0
- data/app/lib/date2.rb +1 -199
- data/app/lib/lesli/courier.rb +54 -0
- data/app/mailers/lesli/application_lesli_mailer.rb +32 -59
- data/app/mailers/lesli/devise_mailer.rb +16 -8
- data/app/models/concerns/account_initializer.rb +27 -68
- data/app/models/concerns/lesli/has_activities.rb +29 -0
- data/app/models/concerns/user_extensions.rb +34 -19
- data/app/models/concerns/user_security.rb +4 -4
- data/app/models/lesli/account.rb +13 -20
- data/{lib/scss/layouts/application-container.scss → app/models/lesli/item/activity.rb} +11 -8
- data/app/models/lesli/role/{power.rb → action.rb} +6 -4
- data/app/models/lesli/role.rb +7 -15
- data/app/models/lesli/shared/catalog.rb +20 -0
- data/app/models/lesli/shared/dashboard.rb +1 -1
- data/app/models/lesli/user/activity.rb +5 -0
- data/app/models/lesli/user/detail.rb +5 -5
- data/app/models/lesli/user/{log.rb → journal.rb} +3 -3
- data/app/models/lesli/user/{power.rb → role.rb} +2 -3
- data/app/models/lesli/user/session.rb +3 -4
- data/app/models/lesli/user.rb +50 -46
- data/app/operators/lesli/controller_operator.rb +3 -1
- data/app/operators/lesli/{role_descriptor_operator.rb → role_operator.rb} +51 -28
- data/app/operators/lesli/user_registration_operator.rb +3 -2
- data/app/services/lesli/application_lesli_service.rb +8 -4
- data/app/services/lesli/role/action_service.rb +58 -0
- data/app/services/lesli/role_service.rb +232 -0
- data/app/services/lesli/{user_session_service.rb → user/session_service.rb} +23 -14
- data/app/services/lesli/user_service.rb +85 -1
- data/app/views/lesli/apps/show.html.erb +52 -0
- data/app/views/lesli/layouts/application-devise.html.erb +5 -7
- data/app/views/lesli/layouts/application-lesli.html.erb +18 -24
- data/app/views/lesli/partials/_application-analytics.html.erb +2 -2
- data/app/views/lesli/partials/_application-data.html.erb +3 -77
- data/app/views/lesli/partials/_application-head.html.erb +7 -4
- data/app/views/lesli/partials/_application-lesli-annoouncements.html.erb +49 -0
- data/app/views/lesli/partials/_application-lesli-header.html.erb +73 -49
- data/app/views/lesli/partials/_application-lesli-javascript.html.erb +3 -16
- data/app/views/lesli/partials/_application-lesli-navigation.html.erb +12 -9
- data/app/views/lesli/partials/{_application-lesli-notices.html.erb → _application-lesli-notifications.html.erb} +10 -8
- data/app/views/lesli/partials/_application-lesli-scss.html.erb +1 -1
- data/app/views/lesli/partials/_application-lesli-sidebar.html.erb +1 -1
- data/app/views/lesli/partials/_application-public-javascript.html.erb +1 -4
- data/app/views/lesli/shared/dashboards/_show.html.erb +63 -0
- data/app/views/lesli/wrappers/_application-devise.html.erb +4 -6
- data/config/importmap.rb +14 -0
- data/config/initializers/lesli.rb +20 -12
- data/config/initializers/lesli_migration_helpers.rb +61 -0
- data/config/locales/translations.en.yml +1 -26
- data/config/locales/translations.es.yml +1 -26
- data/config/locales/translations.fr.yml +1 -26
- data/config/locales/translations.it.yml +1 -26
- data/config/locales/translations.pt.yml +1 -26
- data/config/routes.rb +3 -1
- data/db/migrate/v1/{0010000110_create_lesli_accounts.rb → 0000000110_create_lesli_accounts.rb} +13 -12
- data/db/migrate/v1/0000000210_create_lesli_roles.rb +65 -0
- data/db/migrate/v1/0000000310_create_lesli_users.rb +99 -0
- data/db/migrate/v1/{0010000610_create_lesli_system_controllers.rb → 0000100110_create_lesli_system_controllers.rb} +3 -3
- data/db/migrate/v1/{0010000710_create_lesli_system_controller_actions.rb → 0000100210_create_lesli_system_controller_actions.rb} +3 -4
- data/{lib/scss/layouts/application-content.scss → db/migrate/v1/0000110310_create_lesli_account_settings.rb} +8 -6
- data/{app/models/lesli/user/agent.rb → db/migrate/v1/0000110410_create_lesli_account_activities.rb} +3 -3
- data/db/migrate/v1/0000120210_create_lesli_role_actions.rb +45 -0
- data/db/migrate/v1/{0010001410_create_lesli_account_logs.rb → 0000120310_create_lesli_role_privileges.rb} +8 -8
- data/db/{tables/0010003810_create_user_shortcuts.rb → migrate/v1/0000130210_create_lesli_user_roles.rb} +9 -12
- data/db/migrate/v1/0000130310_create_lesli_user_sessions.rb +56 -0
- data/db/{seed/production.rb → migrate/v1/0000130410_create_lesli_user_activities.rb} +7 -4
- data/db/{tables/0010001110_create_account_locations.rb → migrate2/0000100510_create_lesli_account_locations.rb} +6 -6
- data/db/{tables/0010001510_create_account_currencies.rb → migrate2/0000100610_create_lesli_account_currencies.rb} +4 -4
- data/db/seed/{development/accounts.rb → accounts.rb} +6 -2
- data/db/seed/{production/users.rb → users.rb} +4 -10
- data/db/seed/{tools.rb → xyz.rb} +2 -7
- data/db/seeds.rb +3 -2
- data/db/structure/00000020_catalogs.json +0 -0
- data/lib/generators/{application_lesli_generator.rb → application_lesli_generator_base.rb} +4 -4
- data/lib/generators/lesli/spec/spec_generator.rb +2 -2
- data/lib/generators/lesli/view/USAGE +8 -0
- data/lib/generators/lesli/view/templates/spec-factory.template +17 -0
- data/lib/generators/lesli/view/templates/spec-model.template +70 -0
- data/lib/generators/lesli/view/view_generator.rb +25 -0
- data/lib/lesli/configuration.rb +7 -10
- data/lib/lesli/engine.rb +22 -3
- data/lib/lesli/r_spec.rb +5 -2
- data/lib/lesli/routing.rb +42 -9
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +11 -0
- data/lib/migrate/common.rb +94 -0
- data/lib/migrate/items/action_structure.rb +51 -0
- data/{db/migrate/v1/0010001210_create_lesli_account_activities.rb → lib/migrate/items/activity_structure.rb} +18 -16
- data/lib/migrate/items/attachment_structure.rb +62 -0
- data/{app/views/lesli/partials/_application-lesli-engines.html.erb → lib/migrate/items/discussion_structure.rb} +19 -27
- data/lib/migrate/items/subscriber_structure.rb +49 -0
- data/lib/migrate/items/version_structure.rb +53 -0
- data/lib/migrate/shared/account_structure.rb +21 -0
- data/lib/migrate/shared/catalog_structure.rb +30 -0
- data/lib/migrate/shared/dashboard_structure.rb +54 -0
- data/lib/migrate/shared/setting_structure.rb +20 -0
- data/lib/rspec/config/spec_coverage.rb +95 -0
- data/{db/migrate/v1/0010001110_create_lesli_account_settings.rb → lib/rspec/factories/lesli_account.rb} +10 -7
- data/{db/seed/development.rb → lib/rspec/factories/lesli_role.rb} +30 -3
- data/{db/seed/test.rb → lib/rspec/factories/lesli_user.rb} +32 -3
- data/lib/rspec/fixtures/files/lesli-icon.png +0 -0
- data/lib/rspec/fixtures/files/test_file_1.docx +0 -0
- data/{db/tables/0010001610_create_account_currency_exchange_rates.rb → lib/rspec/helpers/lesli_helper.rb} +21 -21
- data/lib/rspec/helpers/rails_helper.rb +134 -0
- data/lib/rspec/helpers/response_request_helper.rb +214 -0
- data/lib/rspec/helpers/response_service_helper.rb +66 -0
- data/lib/rspec/helpers/spec_helper.rb +99 -0
- data/lib/rspec/lesli_api_tester.rb +133 -0
- data/lib/rspec/lesli_service_tester.rb +46 -0
- data/{db/tables/0010001410_create_account_files.rb → lib/rspec/testers/controller.rb} +31 -20
- data/lib/rspec/testers/model.rb +36 -0
- data/lib/rspec/testers/request.rb +84 -0
- data/lib/tasks/lesli/db.rake +5 -3
- data/lib/tasks/lesli/git.rake +28 -32
- data/lib/tasks/lesli/github.rake +89 -0
- data/lib/tasks/lesli_tasks.rake +3 -3
- data/readme.md +28 -17
- metadata +134 -394
- data/app/assets/fonts/lesli/Domine/Domine-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/Domine/OFL.txt +0 -97
- data/app/assets/fonts/lesli/MaterialDesign/icons.woff2 +0 -0
- data/app/assets/fonts/lesli/Montserrat/Montserrat-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/OpenSans/OpenSans-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.eot +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.glyph.json +0 -1
- data/app/assets/fonts/lesli/Remix/remixicon.svg +0 -7633
- data/app/assets/fonts/lesli/Remix/remixicon.symbol.svg +0 -11
- data/app/assets/fonts/lesli/Remix/remixicon.ttf +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.woff +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.woff2 +0 -0
- data/app/assets/fonts/lesli/Roboto/LICENSE.txt +0 -202
- data/app/assets/fonts/lesli/Roboto/Roboto-Black.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-BlackItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Bold.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-BoldItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Italic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Light.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-LightItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Medium.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-MediumItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Regular.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Thin.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-ThinItalic.ttf +0 -0
- data/app/assets/icons/lesli/engine-admin.svg +0 -1
- data/app/assets/icons/lesli/engine-audit.svg +0 -1
- data/app/assets/icons/lesli/engine-babel.svg +0 -1
- data/app/assets/icons/lesli/engine-bell.svg +0 -1
- data/app/assets/icons/lesli/engine-books.svg +0 -1
- data/app/assets/icons/lesli/engine-calendar.svg +0 -1
- data/app/assets/icons/lesli/engine-dashboard.svg +0 -1
- data/app/assets/icons/lesli/engine-dispatcher.svg +0 -1
- data/app/assets/icons/lesli/engine-focus.svg +0 -1
- data/app/assets/icons/lesli/engine-kb.svg +0 -1
- data/app/assets/icons/lesli/engine-leaf.svg +0 -1
- data/app/assets/icons/lesli/engine-lesli.svg +0 -1
- data/app/assets/icons/lesli/engine-letter.svg +0 -1
- data/app/assets/icons/lesli/engine-mailer.svg +0 -1
- data/app/assets/icons/lesli/engine-one.svg +0 -1
- data/app/assets/icons/lesli/engine-profile.svg +0 -1
- data/app/assets/icons/lesli/engine-proposal.svg +0 -1
- data/app/assets/icons/lesli/engine-scraper.svg +0 -1
- data/app/assets/icons/lesli/engine-security.svg +0 -1
- data/app/assets/icons/lesli/engine-shared.svg +0 -1
- data/app/assets/icons/lesli/engine-shield.svg +0 -1
- data/app/assets/icons/lesli/engine-storage.svg +0 -1
- data/app/assets/icons/lesli/engine-support.svg +0 -1
- data/app/assets/icons/lesli/engine-talk.svg +0 -1
- data/app/assets/icons/lesli/engine-team.svg +0 -1
- data/app/assets/icons/lesli/engine-time.svg +0 -1
- data/app/assets/icons/lesli/locale-en.svg +0 -1
- data/app/assets/icons/lesli/locale-es.svg +0 -1
- data/app/assets/icons/lesli/locale-fr.svg +0 -1
- data/app/assets/icons/lesli/locale-it.svg +0 -1
- data/app/assets/icons/lesli/locale-pt.svg +0 -1
- data/app/assets/icons/readme.md +0 -10
- data/app/assets/javascripts/lesli/templates/application.js +0 -14
- data/app/assets/javascripts/lesli/templates/public.js +0 -14
- data/app/assets/stylesheets/lesli/templates/application.css +0 -2918
- data/app/assets/stylesheets/lesli/templates/public.css +0 -1
- data/app/controllers/lesli/interfaces/application/authorization.rb +0 -107
- data/app/controllers/lesli/interfaces/application/customization.rb +0 -46
- data/app/controllers/lesli/interfaces/application/logger.rb +0 -134
- data/app/controllers/lesli/interfaces/application/requester.rb +0 -84
- data/app/controllers/lesli/interfaces/application/responder.rb +0 -132
- data/app/controllers/lesli/interfaces/controllers/actions.rb +0 -250
- data/app/controllers/lesli/interfaces/controllers/activities.rb +0 -215
- data/app/controllers/lesli/interfaces/controllers/discussions.rb +0 -270
- data/app/controllers/lesli/interfaces/controllers/files.rb +0 -467
- data/app/controllers/lesli/interfaces/controllers/subscribers.rb +0 -234
- data/app/lib/lesli/system.rb +0 -110
- data/app/models/lesli/cloud_object/action.rb +0 -70
- data/app/models/lesli/cloud_object/activity.rb +0 -311
- data/app/models/lesli/cloud_object/custom_field.rb +0 -158
- data/app/models/lesli/cloud_object/discussion.rb +0 -219
- data/app/models/lesli/cloud_object/subscriber.rb +0 -186
- data/app/operators/lesli/descriptor_privilege_operator.rb +0 -75
- data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +0 -23
- data/app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb +0 -23
- data/app/views/lesli/partials/_application-lesli-icons.html.erb +0 -1
- data/config/initializers/devise.rb +0 -336
- data/db/seed/development/users.rb +0 -52
- data/db/seed/production/accounts.rb +0 -50
- data/db/structure/00000000_people.json +0 -34
- data/db/structure/00000003_actions.json +0 -14
- data/db/structure/00000004_activities.json +0 -20
- data/db/structure/00000005_discussions.json +0 -8
- data/db/structure/00000006_files.json +0 -32
- data/db/structure/00000007_subscribers.json +0 -11
- data/db/structure/00000501_dashboards.json +0 -14
- data/db/structure/00000502_dashboard_components.json +0 -23
- data/db/tables/0010003410_create_user_activities.rb +0 -51
- data/db/tables/0010003710_create_user_codes.rb +0 -43
- data/db/tables/0010004110_create_user_tokens.rb +0 -45
- data/db/tables/0010005610_create_role_activities.rb +0 -50
- data/db/tables/0010009010_create_feedbacks.rb +0 -56
- data/lib/mailer_previews/devise_mailer_preview.rb +0 -49
- data/lib/scss/cloud-objects/discussion.scss +0 -80
- data/lib/scss/cloud-objects/file.scss +0 -138
- data/lib/scss/components/keypad.scss +0 -109
- data/lib/scss/elements/autocomplete.scss +0 -72
- data/lib/scss/elements/card.scss +0 -37
- data/lib/scss/elements/empty.scss +0 -43
- data/lib/scss/elements/file-uploader.scss +0 -74
- data/lib/scss/elements/gallery.scss +0 -98
- data/lib/scss/elements/input-tag.scss +0 -73
- data/lib/scss/elements/loading.scss +0 -63
- data/lib/scss/elements/map.scss +0 -107
- data/lib/scss/elements/navbar.scss +0 -115
- data/lib/scss/elements/table.scss +0 -118
- data/lib/scss/elements/toolbar.scss +0 -66
- data/lib/scss/fonts/families.scss +0 -47
- data/lib/scss/fonts/mdicons.scss +0 -82
- data/lib/scss/fonts/remixicons.scss +0 -2602
- data/lib/scss/helpers/display.scss +0 -44
- data/lib/scss/helpers/tooltip.scss +0 -91
- data/lib/scss/layouts/application-announcements.scss +0 -40
- data/lib/scss/layouts/application-component.scss +0 -39
- data/lib/scss/layouts/application-engines.scss +0 -125
- data/lib/scss/layouts/application-footer.scss +0 -102
- data/lib/scss/layouts/application-header.scss +0 -91
- data/lib/scss/layouts/application-navigation.scss +0 -79
- data/lib/scss/layouts/application-search.scss +0 -71
- data/lib/scss/layouts/application-sidebar.scss +0 -219
- data/lib/scss/overrides/notification.scss +0 -75
- data/lib/scss/overrides/sweetalert.scss +0 -106
- data/lib/scss/pages/devise-simple.scss +0 -89
- data/lib/scss/pages/devise.scss +0 -179
- data/lib/scss/pages/invites.scss +0 -81
- data/lib/scss/panels/panel-announcements.scss +0 -56
- data/lib/scss/panels/panel-notification.scss +0 -67
- data/lib/scss/panels/panel-profile.scss +0 -62
- data/lib/scss/panels/panel-support-ticket.scss +0 -56
- data/lib/scss/panels/panel-tasks.scss +0 -41
- data/lib/scss/settings/variables.scss +0 -148
- data/lib/scss/shared/workflow-status-progress.scss +0 -135
- data/lib/scss/templates/application.scss +0 -127
- data/lib/scss/templates/component.scss +0 -39
- data/lib/scss/templates/dashboards.scss +0 -53
- data/lib/scss/templates/empty.scss +0 -42
- data/lib/scss/templates/pdf.scss +0 -45
- data/lib/scss/templates/public.scss +0 -72
- data/lib/vue/application.js +0 -285
- data/lib/vue/cloudobjects/discussion/content.vue +0 -62
- data/lib/vue/cloudobjects/discussion/element.vue +0 -170
- data/lib/vue/cloudobjects/discussion/filters.vue +0 -108
- data/lib/vue/cloudobjects/discussion/new.vue +0 -134
- data/lib/vue/cloudobjects/discussion.vue +0 -99
- data/lib/vue/cloudobjects/stores/discussion.js +0 -212
- data/lib/vue/layouts/application-announcements.vue +0 -78
- data/lib/vue/layouts/application-component.vue +0 -38
- data/lib/vue/layouts/application-container.vue +0 -48
- data/lib/vue/layouts/application-engines.vue +0 -66
- data/lib/vue/layouts/application-footer.vue +0 -123
- data/lib/vue/layouts/application-header.vue +0 -252
- data/lib/vue/layouts/application-navbar.vue +0 -110
- data/lib/vue/layouts/application-search.vue +0 -86
- data/lib/vue/layouts/application-sidebar.vue +0 -63
- data/lib/vue/pages/errors/app.js +0 -32
- data/lib/vue/pages/invites/app.js +0 -76
- data/lib/vue/pages/mfas/application.js +0 -77
- data/lib/vue/pages/onboarding/application.js +0 -45
- data/lib/vue/pages/onboarding/components/address.vue +0 -120
- data/lib/vue/pages/onboarding/components/buttons.vue +0 -67
- data/lib/vue/pages/onboarding/components/contact.vue +0 -148
- data/lib/vue/pages/onboarding/components/date-time.vue +0 -265
- data/lib/vue/pages/onboarding/components/finish.vue +0 -62
- data/lib/vue/pages/onboarding/components/general-info.vue +0 -93
- data/lib/vue/pages/onboarding/components/indicators.vue +0 -78
- data/lib/vue/pages/onboarding/components/welcome.vue +0 -66
- data/lib/vue/pages/onboarding/show.vue +0 -67
- data/lib/vue/pages/onboarding/store.js +0 -165
- data/lib/vue/pages/otps/application.js +0 -90
- data/lib/vue/pages/passes/application.js +0 -80
- data/lib/vue/pages/websites/application.js +0 -34
- data/lib/vue/panels/panel-announcements.vue +0 -248
- data/lib/vue/panels/panel-bell-notifications.vue +0 -102
- data/lib/vue/panels/panel-files.vue +0 -281
- data/lib/vue/panels/panel-profile.vue +0 -76
- data/lib/vue/panels/panel-support-tickets.vue +0 -163
- data/lib/vue/panels/panel-tasks.vue +0 -124
- data/lib/vue/panels/stores/bell-notifications.js +0 -46
- data/lib/vue/panels/stores/support-tickets.js +0 -103
- data/lib/vue/public.js +0 -83
- data/lib/vue/refactor/shared/cloudobjects/action.vue +0 -193
- data/lib/vue/refactor/shared/cloudobjects/file/grid.vue +0 -215
- data/lib/vue/refactor/shared/cloudobjects/file/list.vue +0 -106
- data/lib/vue/refactor/shared/cloudobjects/file.vue +0 -145
- data/lib/vue/refactor/shared/workflows2/apps/actions/form.vue +0 -232
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/chatroom-form.vue +0 -103
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-clone-form.vue +0 -125
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-file-form.vue +0 -102
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/email-form.vue +0 -190
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/notification-form.vue +0 -124
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/send-cloud-object-file.vue +0 -170
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/task-form.vue +0 -258
- data/lib/vue/refactor/shared/workflows2/apps/actions/index.vue +0 -146
- data/lib/vue/refactor/shared/workflows2/apps/checks/form.vue +0 -200
- data/lib/vue/refactor/shared/workflows2/apps/checks/index.vue +0 -160
- data/lib/vue/refactor/shared/workflows2/apps/index.vue +0 -177
- data/lib/vue/refactor/shared/workflows2/apps/new.vue +0 -97
- data/lib/vue/refactor/shared/workflows2/apps/show.vue +0 -146
- data/lib/vue/refactor/shared/workflows2/components/associations.vue +0 -215
- data/lib/vue/refactor/shared/workflows2/components/chart.vue +0 -91
- data/lib/vue/refactor/shared/workflows2/components/workflow-form.vue +0 -466
- data/lib/vue/refactor/shared/workflows2/components/workflow-status-dropdown.vue +0 -129
- data/lib/vue/refactor/stores/cloudobjects/action.js +0 -181
- data/lib/vue/refactor/stores/cloudobjects/file.js +0 -205
- data/lib/vue/refactor/stores/entities/announcements.js +0 -75
- data/lib/vue/refactor/stores/entities/dashboard.js +0 -251
- data/lib/vue/refactor/stores/entities/workflow.js +0 -185
- data/lib/vue/refactor/stores/panels/announcements.js +0 -153
- data/lib/vue/refactor/stores/panels/notification.js +0 -114
- data/lib/vue/refactor/stores/panels/task.js +0 -66
- data/lib/vue/refactor/stores/panels/tickets.js +0 -129
- data/lib/vue/refactor/stores/role.js +0 -243
- data/lib/vue/refactor/stores/translations.json +0 -60
- data/lib/vue/refactor/stores/users.js +0 -98
- data/lib/vue/shared/dashboards/apps/edit.vue +0 -215
- data/lib/vue/shared/dashboards/apps/index.vue +0 -112
- data/lib/vue/shared/dashboards/apps/new.vue +0 -89
- data/lib/vue/shared/dashboards/apps/show.vue +0 -88
- data/lib/vue/shared/dashboards/components/form.vue +0 -246
- data/lib/vue/shared/services/firebase.js +0 -163
- data/lib/vue/shared/services/translator.js +0 -87
- data/lib/vue/shared/stores/command.js +0 -154
- data/lib/vue/shared/stores/dashboard.js +0 -253
- data/lib/vue/shared/stores/layout.js +0 -61
- data/lib/vue/shared/stores/systemController.js +0 -67
- data/lib/vue/shared/stores/users.js +0 -57
- data/lib/vue/stores/translations.json +0 -177
- data/lib/vue/translation.js +0 -45
- data/lib/webpack/base.js +0 -191
- data/lib/webpack/core.js +0 -93
- data/lib/webpack/engines.js +0 -167
- data/lib/webpack/root.js +0 -105
- data/lib/webpack/version.js +0 -78
- data/vendor/bulma/LICENSE +0 -21
- data/vendor/bulma/bulma.sass +0 -10
- data/vendor/bulma/css/bulma-rtl.css +0 -11851
- data/vendor/bulma/css/bulma-rtl.min.css +0 -1
- data/vendor/bulma/css/bulma.css +0 -11851
- data/vendor/bulma/css/bulma.min.css +0 -1
- data/vendor/bulma/sass/base/_all.sass +0 -6
- data/vendor/bulma/sass/base/animations.sass +0 -5
- data/vendor/bulma/sass/base/generic.sass +0 -145
- data/vendor/bulma/sass/base/helpers.sass +0 -1
- data/vendor/bulma/sass/base/minireset.sass +0 -79
- data/vendor/bulma/sass/components/_all.sass +0 -15
- data/vendor/bulma/sass/components/breadcrumb.sass +0 -77
- data/vendor/bulma/sass/components/card.sass +0 -103
- data/vendor/bulma/sass/components/dropdown.sass +0 -83
- data/vendor/bulma/sass/components/level.sass +0 -79
- data/vendor/bulma/sass/components/media.sass +0 -59
- data/vendor/bulma/sass/components/menu.sass +0 -59
- data/vendor/bulma/sass/components/message.sass +0 -101
- data/vendor/bulma/sass/components/modal.sass +0 -117
- data/vendor/bulma/sass/components/navbar.sass +0 -446
- data/vendor/bulma/sass/components/pagination.sass +0 -167
- data/vendor/bulma/sass/components/panel.sass +0 -121
- data/vendor/bulma/sass/components/tabs.sass +0 -176
- data/vendor/bulma/sass/elements/_all.sass +0 -16
- data/vendor/bulma/sass/elements/box.sass +0 -26
- data/vendor/bulma/sass/elements/button.sass +0 -357
- data/vendor/bulma/sass/elements/container.sass +0 -29
- data/vendor/bulma/sass/elements/content.sass +0 -162
- data/vendor/bulma/sass/elements/form.sass +0 -1
- data/vendor/bulma/sass/elements/icon.sass +0 -46
- data/vendor/bulma/sass/elements/image.sass +0 -73
- data/vendor/bulma/sass/elements/notification.sass +0 -52
- data/vendor/bulma/sass/elements/other.sass +0 -31
- data/vendor/bulma/sass/elements/progress.sass +0 -73
- data/vendor/bulma/sass/elements/table.sass +0 -134
- data/vendor/bulma/sass/elements/tag.sass +0 -140
- data/vendor/bulma/sass/elements/title.sass +0 -70
- data/vendor/bulma/sass/form/_all.sass +0 -9
- data/vendor/bulma/sass/form/checkbox-radio.sass +0 -22
- data/vendor/bulma/sass/form/file.sass +0 -184
- data/vendor/bulma/sass/form/input-textarea.sass +0 -66
- data/vendor/bulma/sass/form/select.sass +0 -88
- data/vendor/bulma/sass/form/shared.sass +0 -60
- data/vendor/bulma/sass/form/tools.sass +0 -215
- data/vendor/bulma/sass/grid/_all.sass +0 -5
- data/vendor/bulma/sass/grid/columns.sass +0 -513
- data/vendor/bulma/sass/grid/tiles.sass +0 -36
- data/vendor/bulma/sass/helpers/_all.sass +0 -12
- data/vendor/bulma/sass/helpers/color.sass +0 -39
- data/vendor/bulma/sass/helpers/flexbox.sass +0 -35
- data/vendor/bulma/sass/helpers/float.sass +0 -10
- data/vendor/bulma/sass/helpers/other.sass +0 -14
- data/vendor/bulma/sass/helpers/overflow.sass +0 -2
- data/vendor/bulma/sass/helpers/position.sass +0 -7
- data/vendor/bulma/sass/helpers/spacing.sass +0 -31
- data/vendor/bulma/sass/helpers/typography.sass +0 -103
- data/vendor/bulma/sass/helpers/visibility.sass +0 -122
- data/vendor/bulma/sass/layout/_all.sass +0 -6
- data/vendor/bulma/sass/layout/footer.sass +0 -11
- data/vendor/bulma/sass/layout/hero.sass +0 -153
- data/vendor/bulma/sass/layout/section.sass +0 -17
- data/vendor/bulma/sass/utilities/_all.sass +0 -9
- data/vendor/bulma/sass/utilities/animations.sass +0 -1
- data/vendor/bulma/sass/utilities/controls.sass +0 -49
- data/vendor/bulma/sass/utilities/derived-variables.sass +0 -114
- data/vendor/bulma/sass/utilities/extends.sass +0 -25
- data/vendor/bulma/sass/utilities/functions.sass +0 -135
- data/vendor/bulma/sass/utilities/initial-variables.sass +0 -79
- data/vendor/bulma/sass/utilities/mixins.sass +0 -303
- data/vendor/lesli-css/_index.scss +0 -34
- data/vendor/lesli-css/lesli.scss +0 -51
- data/vendor/lesli-css/license +0 -28
- data/vendor/lesli-css/src/base/fonts.scss +0 -50
- data/vendor/lesli-css/src/base/normalize.scss +0 -118
- data/vendor/lesli-css/src/components/blockquote.scss +0 -61
- data/vendor/lesli-css/src/components/columns.scss +0 -92
- data/vendor/lesli-css/src/components/container.scss +0 -47
- data/vendor/lesli-css/src/components/navigation.scss +0 -59
- data/vendor/lesli-css/src/functions/colors.scss +0 -184
- data/vendor/lesli-css/src/helpers/units.scss +0 -44
- data/vendor/lesli-css/src/mixins/breakpoint.scss +0 -184
- data/vendor/lesli-css/src/mixins/flex.scss +0 -80
- data/vendor/lesli-css/src/mixins/scrollbar.scss +0 -46
- data/vendor/lesli-css/src/settings/variables.scss +0 -26
- data/vendor/lesli-css/tests/base/normalize.spec.scss +0 -125
- data/vendor/lesli-css/tests/functions/colors.spec.scss +0 -117
- data/vendor/lesli-css/tests/mixins/breakpoint.spec.scss +0 -429
- data/vendor/lesli-css/tests/mixins/scrollbar.spec.scss +0 -82
- data/vendor/lesli-css/vendor/normalize.scss +0 -351
- data/vendor/remixicon/License +0 -201
- data/vendor/remixicon/fonts/remixicon.css +0 -2583
- /data/{vendor/lesli-css/src/components/grid.scss → app/assets/stylesheets/lesli/application.css} +0 -0
- /data/db/migrate/v1/{0010001010_create_lesli_account_details.rb → 0000110210_create_lesli_account_details.rb} +0 -0
- /data/db/structure/{00000008_custom_fields.json → 00000300_custom_fields.json} +0 -0
- /data/lib/assets/javascripts/lesli/{i18n.js → i18n_js} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e263589d96d2eba1edcd75463c595ec8862626c6ca044f418bba462fe681e17f
|
4
|
+
data.tar.gz: 255ea3108a0a2c8102f89808aa9fd560becd962e85cdbcd3e938e8e9df50fd84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f63e07db9f952946a3c78833125b4c432d920ea0c6e5d0800ea93f2104463f31b843c052d47b7b8ae707e93348df7605d43cd4900b5ed0073cda37ed7575e2e
|
7
|
+
data.tar.gz: 802ab7f0cccd22808fd648c2f9468b9980db314ada31b4e2972047ea475be6257d63d67c521f0e3cb1533d1b9c73383a23e61bdd3ae515624abd95ef804c5559
|
@@ -36,10 +36,7 @@ Building a better future, one line of code at a time.
|
|
36
36
|
//= link_tree ../images/lesli .jpg
|
37
37
|
//= link_tree ../images/lesli .svg
|
38
38
|
|
39
|
-
|
40
|
-
// · Framework asssets
|
39
|
+
// ·
|
41
40
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
42
|
-
//= link lesli/
|
43
|
-
//= link lesli/
|
44
|
-
|
45
|
-
//= link lesli/i18n.js
|
41
|
+
//= link lesli/application.css
|
42
|
+
//= link lesli/application.js
|
@@ -1,42 +1,48 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
2
|
<svg
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
inkscape:
|
20
|
-
inkscape:
|
21
|
-
inkscape:
|
22
|
-
inkscape:
|
23
|
-
|
24
|
-
|
25
|
-
inkscape:
|
26
|
-
|
27
|
-
|
28
|
-
inkscape:
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
<defs
|
39
|
-
|
40
|
-
|
41
|
-
|
3
|
+
inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
|
4
|
+
height="792.88586"
|
5
|
+
width="913.88531"
|
6
|
+
sodipodi:docname="app-icon.svg"
|
7
|
+
version="1.1"
|
8
|
+
viewBox="0 0 913.88531 792.88586"
|
9
|
+
data-name="Layer 1"
|
10
|
+
id="Layer_1"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
13
|
+
xmlns="http://www.w3.org/2000/svg"
|
14
|
+
xmlns:svg="http://www.w3.org/2000/svg">
|
15
|
+
<sodipodi:namedview
|
16
|
+
inkscape:current-layer="Layer_1"
|
17
|
+
inkscape:window-maximized="0"
|
18
|
+
inkscape:window-y="25"
|
19
|
+
inkscape:window-x="0"
|
20
|
+
inkscape:cy="396.13491"
|
21
|
+
inkscape:cx="457.9763"
|
22
|
+
inkscape:zoom="0.85703125"
|
23
|
+
showgrid="false"
|
24
|
+
id="namedview19"
|
25
|
+
inkscape:window-height="996"
|
26
|
+
inkscape:window-width="1792"
|
27
|
+
inkscape:pageshadow="2"
|
28
|
+
inkscape:pageopacity="0"
|
29
|
+
guidetolerance="10"
|
30
|
+
gridtolerance="10"
|
31
|
+
objecttolerance="10"
|
32
|
+
borderopacity="1"
|
33
|
+
bordercolor="#666666"
|
34
|
+
pagecolor="#ffffff"
|
35
|
+
inkscape:showpageshadow="2"
|
36
|
+
inkscape:pagecheckerboard="0"
|
37
|
+
inkscape:deskcolor="#d1d1d1" />
|
38
|
+
<defs
|
39
|
+
id="defs12">
|
40
|
+
<style
|
41
|
+
id="style10">.cls-1{fill:#214FBD;}</style>
|
42
|
+
</defs>
|
43
|
+
<path
|
44
|
+
style="stroke-width:1.32288"
|
45
|
+
id="path16"
|
46
|
+
d="M 820.53981,396.44304 A 143.16576,140.81379 0 0 0 702.2777,257.84649 143.1124,140.76129 0 0 0 456.54962,120.56192 143.07239,140.72194 0 0 0 210.86154,257.95145 a 143.1124,140.76129 0 0 0 0,276.98318 A 143.1124,140.76129 0 0 0 456.54962,672.32416 143.07239,140.72194 0 0 0 702.2777,535.03958 143.16576,140.81379 0 0 0 820.53981,396.44304 Z M 465.64669,508.53778 v 24.44202 h -44.01816 v -93.64846 a 25.984058,25.557183 0 0 0 -26.03741,-25.55718 h -95.21263 v -43.29502 h 95.21263 a 25.997396,25.570302 0 0 0 25.98405,-25.5703 v -93.6878 h 44.01816 v 93.63533 a 26.010735,25.583422 0 0 0 26.03742,25.5703 h 95.1993 v 43.29502 h -95.1993 a 25.997396,25.570302 0 0 0 -25.9974,25.55718 v 69.20644 z"
|
47
|
+
class="cls-1" />
|
42
48
|
</svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
import "@hotwired/turbo-rails";
|
@@ -33,26 +33,28 @@ Building a better future, one line of code at a time.
|
|
33
33
|
module Lesli
|
34
34
|
class AboutsController < ApplicationLesliController
|
35
35
|
|
36
|
+
# def status
|
37
|
+
# respond_with_successful({ :Lesli => "Ruby on Rails SaaS Development Framework." })
|
38
|
+
# end
|
39
|
+
|
36
40
|
# GET /status
|
37
41
|
def show
|
38
42
|
respond_to do |format|
|
39
43
|
format.html {}
|
40
44
|
format.json {
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
:version => engine_info[:version]
|
52
|
-
}
|
45
|
+
|
46
|
+
# get installed engines
|
47
|
+
@lesli_engines = LesliSystem.engines.map { |engine, engine_info|
|
48
|
+
{
|
49
|
+
:name => engine_info[:name],
|
50
|
+
:code => engine_info[:code],
|
51
|
+
:path => engine_info[:path],
|
52
|
+
:build => engine_info[:build],
|
53
|
+
:version => engine_info[:version],
|
54
|
+
:description => engine_info[:description]
|
53
55
|
}
|
54
|
-
|
55
|
-
|
56
|
+
}
|
57
|
+
respond_with_successful(@lesli_engines)
|
56
58
|
}
|
57
59
|
end
|
58
60
|
end
|
@@ -34,6 +34,8 @@ module Lesli
|
|
34
34
|
class ApplicationController < ActionController::Base
|
35
35
|
layout "lesli/layouts/application-public"
|
36
36
|
|
37
|
+
add_flash_types(:info, :danger, :success, :warning)
|
38
|
+
|
37
39
|
attr_reader :query
|
38
40
|
attr_reader :engine_path
|
39
41
|
|
@@ -42,6 +44,17 @@ module Lesli
|
|
42
44
|
@lesli = {}
|
43
45
|
end
|
44
46
|
|
47
|
+
# Meta-programming to define flash setter methods dynamically
|
48
|
+
# success("Everything worked!")
|
49
|
+
# danger("Oops, there was an error.")
|
50
|
+
# info("Just an informational message.")
|
51
|
+
# warning("This is a warning.")
|
52
|
+
[:success, :danger, :warning, :info].each do |flash_type|
|
53
|
+
define_method(flash_type) do |message|
|
54
|
+
flash[flash_type] = message
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
45
58
|
def language
|
46
59
|
|
47
60
|
# check if param locale was sent by the user
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Lesli
|
4
4
|
|
5
|
-
Copyright (c)
|
5
|
+
Copyright (c) 2025, Lesli Technologies, S. A.
|
6
6
|
|
7
7
|
This program is free software: you can redistribute it and/or modify
|
8
8
|
it under the terms of the GNU General Public License as published by
|
@@ -17,25 +17,24 @@ GNU General Public License for more details.
|
|
17
17
|
You should have received a copy of the GNU General Public License
|
18
18
|
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
19
|
|
20
|
-
Lesli ·
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
21
|
|
22
|
-
Made with ♥ by
|
22
|
+
Made with ♥ by LesliTech
|
23
23
|
Building a better future, one line of code at a time.
|
24
24
|
|
25
25
|
@contact hello@lesli.tech
|
26
|
-
@website https://lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
27
|
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
28
|
|
29
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
-
// ·
|
31
|
-
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
32
31
|
=end
|
33
32
|
|
34
33
|
module Lesli
|
35
|
-
class ApplicationDeviseController <
|
36
|
-
include
|
37
|
-
include
|
38
|
-
include
|
34
|
+
class ApplicationDeviseController < ApplicationController
|
35
|
+
include Lesli::ResponderInterface
|
36
|
+
include Lesli::RequesterInterface
|
37
|
+
include LesliAudit::LoggerInterface if defined?(LesliAudit)
|
39
38
|
|
40
39
|
layout "lesli/layouts/application-devise"
|
41
40
|
|
@@ -49,6 +48,5 @@ module Lesli
|
|
49
48
|
}
|
50
49
|
super
|
51
50
|
end
|
52
|
-
|
53
51
|
end
|
54
52
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Lesli
|
4
4
|
|
5
|
-
Copyright (c)
|
5
|
+
Copyright (c) 2025, Lesli Technologies, S. A.
|
6
6
|
|
7
7
|
This program is free software: you can redistribute it and/or modify
|
8
8
|
it under the terms of the GNU General Public License as published by
|
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
|
|
19
19
|
|
20
20
|
Lesli · Ruby on Rails SaaS Development Framework.
|
21
21
|
|
22
|
-
Made with ♥ by
|
22
|
+
Made with ♥ by LesliTech
|
23
23
|
Building a better future, one line of code at a time.
|
24
24
|
|
25
25
|
@contact hello@lesli.tech
|
@@ -31,27 +31,28 @@ Building a better future, one line of code at a time.
|
|
31
31
|
=end
|
32
32
|
|
33
33
|
module Lesli
|
34
|
-
class ApplicationLesliController < ApplicationController
|
35
|
-
|
36
|
-
include
|
37
|
-
include
|
38
|
-
include
|
39
|
-
include
|
34
|
+
class ApplicationLesliController < ApplicationController
|
35
|
+
|
36
|
+
include Lesli::ResponderInterface
|
37
|
+
include Lesli::RequesterInterface
|
38
|
+
include Lesli::CustomizationInterface
|
39
|
+
include LesliAudit::LoggerInterface if defined?(LesliAudit)
|
40
|
+
include LesliShield::AuthenticationInterface if defined?(LesliShield)
|
41
|
+
include LesliShield::AuthorizationInterface if defined?(LesliShield)
|
40
42
|
|
41
43
|
protect_from_forgery with: :exception
|
42
44
|
|
43
45
|
before_action :set_path
|
44
46
|
before_action :set_locale
|
47
|
+
before_action :authenticate_request if defined?(LesliShield)
|
45
48
|
before_action :authorize_request if defined?(LesliShield)
|
46
|
-
before_action :authorize_privilege if defined?(LesliSecurity)
|
47
49
|
before_action :set_customizer
|
48
50
|
before_action :set_requester
|
49
51
|
after_action :log_requests if defined?(LesliAudit)
|
50
52
|
|
51
53
|
layout "lesli/layouts/application-lesli"
|
52
54
|
|
53
|
-
# Rescue from "ParameterMissing" when using required params
|
54
|
-
# in controllers
|
55
|
+
# Rescue from "ParameterMissing" when using required params in controllers
|
55
56
|
rescue_from ActionController::ParameterMissing do |_e|
|
56
57
|
respond_with_error("Missing params")
|
57
58
|
end
|
@@ -32,12 +32,12 @@ Building a better future, one line of code at a time.
|
|
32
32
|
|
33
33
|
module Lesli
|
34
34
|
class RolesController < ApplicationLesliController
|
35
|
-
before_action :set_role, only: [
|
35
|
+
before_action :set_role, only: []
|
36
36
|
|
37
37
|
def list
|
38
38
|
respond_to do |format|
|
39
39
|
format.json {
|
40
|
-
respond_with_successful(
|
40
|
+
respond_with_successful(RoleService.new(current_user, query).list(params))
|
41
41
|
}
|
42
42
|
end
|
43
43
|
end
|
@@ -59,17 +59,22 @@ module Lesli
|
|
59
59
|
# return a string with a css class to identify the body
|
60
60
|
# example: builder engine-controller action
|
61
61
|
def application_body_class
|
62
|
-
[lesli_instance_code, controller_path.
|
62
|
+
[lesli_instance_code, controller_path.sub("_","-").split("/"), action_name].join(" ")
|
63
63
|
end
|
64
64
|
|
65
65
|
# build the text for the html document title
|
66
66
|
# this helper works only for rails pages, for vue apps the title must be handled with JS
|
67
67
|
def website_title
|
68
|
-
|
68
|
+
# Use instance variable if set, otherwise construct a dynamic title
|
69
|
+
title = @application_html_title || controller_path.delete_prefix("lesli_")
|
69
70
|
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
# Append action name unless it's "index"
|
72
|
+
title += "/#{action_name}" unless action_name == "index"
|
73
|
+
|
74
|
+
# Append company name if present
|
75
|
+
title += " · #{Lesli.config.company.dig(:name)}"
|
76
|
+
|
77
|
+
title
|
73
78
|
end
|
74
79
|
|
75
80
|
# build description using custom data from controller or engine gem description
|
@@ -79,5 +84,13 @@ module Lesli
|
|
79
84
|
# Gem::Specification.find_by_name(engine_name).summary
|
80
85
|
@application_html_description || ""
|
81
86
|
end
|
87
|
+
|
88
|
+
def dd object
|
89
|
+
content_tag(:pre) do
|
90
|
+
content_tag(:code) do
|
91
|
+
h JSON.pretty_generate(object.as_json)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
82
95
|
end
|
83
96
|
end
|
@@ -42,15 +42,30 @@ module Lesli
|
|
42
42
|
|
43
43
|
# Prints a html link inside a list item
|
44
44
|
def navigation_item(path, label, icon = nil, reload: false)
|
45
|
-
content_tag(:li) do
|
45
|
+
content_tag(:li, { class: "navbar-item"}) do
|
46
46
|
navigation_link(path, label, icon, reload:reload)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
def navigation_link(path, label, icon = nil, reload: false)
|
51
|
+
|
52
|
+
#content_tag(html_element, html_options) do
|
53
|
+
link_to path, data: { turbo_frame: '_top' } do
|
54
|
+
# print a simple menu item (without icon)
|
55
|
+
concat content_tag(:span, label, class: "text iconless") unless icon
|
56
|
+
|
57
|
+
# print a full menu item if icon was requested
|
58
|
+
if icon
|
59
|
+
concat content_tag(:span, nil, class: icon)
|
60
|
+
concat content_tag(:span, label, class: "text")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def navigation_link_vue(path, label, icon = nil, reload: false)
|
51
66
|
# default vue router links for single page applications
|
52
67
|
html_element = "router-link"
|
53
|
-
html_options = { to: path,
|
68
|
+
html_options = { to: path, 'active-class': "navigation-link-active" }
|
54
69
|
|
55
70
|
# if reload is nedeed, we use a standard "a" tag
|
56
71
|
if reload
|
@@ -94,8 +109,8 @@ module Lesli
|
|
94
109
|
|
95
110
|
# 02.05 Mailer engine
|
96
111
|
def navigation_engine_mailer(title: "Mailer", subtitle: "Email automation system")
|
97
|
-
return unless defined?
|
98
|
-
navigation_engine_item(title,subtitle,"mailer",
|
112
|
+
return unless defined? LesliMailer
|
113
|
+
navigation_engine_item(title,subtitle,"mailer", lesli_mailer.root_path,controller_path.include?("lesli_mailer"))
|
99
114
|
end
|
100
115
|
|
101
116
|
# 02.08 Proposal engine
|
@@ -160,6 +175,12 @@ module Lesli
|
|
160
175
|
navigation_engine_item(title,subtitle,"storage",cloud_storage.root_path,controller_path.include?("cloud_storage"))
|
161
176
|
end
|
162
177
|
|
178
|
+
# 03.12 Papers engine
|
179
|
+
def navigation_engine_papers(title: "Papers", subtitle: "Smart Document Management")
|
180
|
+
return unless defined? LesliPapers
|
181
|
+
navigation_engine_item(title,subtitle,"papers",lesli_papers.root_path,controller_path.include?("lesli_papers"))
|
182
|
+
end
|
183
|
+
|
163
184
|
# FINANCE
|
164
185
|
|
165
186
|
# 04.01 Books engine
|
@@ -217,9 +238,7 @@ module Lesli
|
|
217
238
|
# 07.02 Help engine
|
218
239
|
def navigation_engine_support(title: "Support", subtitle: "Support Ticket System")
|
219
240
|
return unless defined? LesliSupport
|
220
|
-
|
221
|
-
navigation_engine_item(title, subtitle, "support", lesli_support.root_path,
|
222
|
-
controller_path.include?("lesli_support"))
|
241
|
+
navigation_engine_item(title, subtitle, "support", lesli_support.root_path, controller_path.include?("lesli_support"))
|
223
242
|
end
|
224
243
|
|
225
244
|
# 07.03 Portal engine
|
@@ -241,13 +260,13 @@ module Lesli
|
|
241
260
|
# SECURITY & PRIVACY
|
242
261
|
|
243
262
|
# 08.01 Shield engine
|
244
|
-
def navigation_engine_shield(title: "Shield", subtitle: "Authentication & Authorization
|
263
|
+
def navigation_engine_shield(title: "Shield", subtitle: "Authentication & Authorization")
|
245
264
|
return unless defined? LesliShield
|
246
265
|
navigation_engine_item(title, subtitle, "shield", lesli_shield.root_path, controller_path.include?("lesli_shield"))
|
247
266
|
end
|
248
267
|
|
249
268
|
# 08.02 Security engine
|
250
|
-
def navigation_engine_security(title: "Security", subtitle: "Users
|
269
|
+
def navigation_engine_security(title: "Security", subtitle: "Users Authorization Management.")
|
251
270
|
return unless defined? LesliSecurity
|
252
271
|
navigation_engine_item(title, subtitle, "security", lesli_security.root_path, controller_path.include?("lesli_security"))
|
253
272
|
end
|
@@ -256,7 +275,7 @@ module Lesli
|
|
256
275
|
# INTEGRATIONS
|
257
276
|
|
258
277
|
# 09.01 Babel engine
|
259
|
-
def navigation_engine_babel(title: "Babel", subtitle: "
|
278
|
+
def navigation_engine_babel(title: "Babel", subtitle: "Translation Management System")
|
260
279
|
return unless defined? LesliBabel
|
261
280
|
|
262
281
|
navigation_engine_item(title, subtitle, "babel", lesli_babel.root_path,
|
@@ -306,7 +325,7 @@ module Lesli
|
|
306
325
|
return nil if modules_hidden.include?(path)
|
307
326
|
|
308
327
|
# render module navigation item :)
|
309
|
-
content_tag(:a, href: path, class: is_active ? "is-active" : nil) do
|
328
|
+
content_tag(:a, id: path.gsub("/",""), href: path, class: is_active ? "is-active" : nil, data: { turbo: false }) do
|
310
329
|
lesli_svg("engine-#{icon}") << content_tag(:div) do
|
311
330
|
content_tag(:span, title) << content_tag(:p, subtitle)
|
312
331
|
end
|
@@ -41,12 +41,12 @@ module Lesli
|
|
41
41
|
# example: lesli_cloud, deutsche_leibrenten, mitwerken_cloud
|
42
42
|
def lesli_instance_code
|
43
43
|
return "lesli"
|
44
|
-
|
44
|
+
#LesliSystem.instance[:code]
|
45
45
|
end
|
46
46
|
|
47
47
|
# return the information about the current engine
|
48
48
|
def lesli_engine(property = nil)
|
49
|
-
|
49
|
+
LesliSystem.engine(lesli_controller, property)
|
50
50
|
end
|
51
51
|
|
52
52
|
# return true if the controller requested belongs to the administration area
|
@@ -0,0 +1,58 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by LesliTech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
=end
|
32
|
+
|
33
|
+
module Lesli
|
34
|
+
module TurboHelper
|
35
|
+
def render_notifications_stream
|
36
|
+
turbo_stream.replace("application-lesli-notifications") do
|
37
|
+
render("lesli/partials/application-lesli-notifications")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def render_form_stream(partial_path, locals = {})
|
42
|
+
|
43
|
+
# Detect the current engine's namespace
|
44
|
+
engine_name = controller.class.module_parent_name.underscore
|
45
|
+
|
46
|
+
# Ensure the correct namespace is applied (only if not already present)
|
47
|
+
partial_path = "#{engine_name}/#{partial_path}"
|
48
|
+
|
49
|
+
# Convert the partial path to a valid DOM ID
|
50
|
+
partial_id = partial_path.tr("/", "-").tr("_", "-")
|
51
|
+
|
52
|
+
# Renders the stream to update the partial
|
53
|
+
turbo_stream.replace(partial_id) do
|
54
|
+
render(partial_path, locals)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Lesli
|
2
|
+
module CustomizationInterface
|
3
|
+
|
4
|
+
# set customization only for lesli_cloud instance
|
5
|
+
def set_customizer
|
6
|
+
=begin
|
7
|
+
# @account is only for html and pdf requests
|
8
|
+
return unless request.format.html? || request.format.pdf?
|
9
|
+
|
10
|
+
# return unless Lesli.instance[:code] == "lesli_cloud"
|
11
|
+
|
12
|
+
@lesli[:customization] = {}
|
13
|
+
|
14
|
+
logos = {}
|
15
|
+
# logo_identifiers = Account::File.file_types.keys
|
16
|
+
# custom_logos = current_user.account.files.where("file_type in (?)", logo_identifiers).order(id: :desc).all
|
17
|
+
# logo_identifiers.each do |logo_identifier|
|
18
|
+
# custom_logo = custom_logos.find { |logo| logo.file_type == logo_identifier}
|
19
|
+
# next unless custom_logo
|
20
|
+
|
21
|
+
# custom_logo_url = "/administration/account/files/#{custom_logo.id}"
|
22
|
+
# custo_logo_url = custom_logo.attachment_url if custom_logo.attachment_identifier
|
23
|
+
# custom_logo_url = custom_logo.attachment_public_url if custom_logo.attachment_public_identifier
|
24
|
+
|
25
|
+
# logos[logo_identifier.to_sym] = custom_logo_url
|
26
|
+
# end
|
27
|
+
@lesli[:customization][:logos] = logos
|
28
|
+
|
29
|
+
colors = {}
|
30
|
+
# color_identifiers = ::Account::Setting.theme_settings_keys
|
31
|
+
# custom_colors = current_user.account.settings.where("name in (?)", color_identifiers).all
|
32
|
+
# color_identifiers.each do |color_identifier|
|
33
|
+
# custom_color = custom_colors.find { |color| color.name == color_identifier}
|
34
|
+
# next unless custom_color
|
35
|
+
|
36
|
+
# colors[color_identifier.to_sym] = custom_color.value
|
37
|
+
# end
|
38
|
+
@lesli[:customization][:colors] = colors
|
39
|
+
=end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|