lesli 5.0.12 → 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/images/lesli/brand/app-logo.png +0 -0
- 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 +14 -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/assets_helper.rb +24 -6
- 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 +43 -20
- 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 -191
- 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 -13
- 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 +7 -2
- 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 +86 -2
- 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 -22
- data/app/views/lesli/partials/_application-analytics.html.erb +2 -2
- data/app/views/lesli/partials/_application-data.html.erb +5 -79
- 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 +88 -39
- data/app/views/lesli/partials/_application-lesli-javascript.html.erb +5 -18
- data/app/views/lesli/partials/_application-lesli-navigation.html.erb +17 -7
- 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 +3 -3
- 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-simple.erb +1 -1
- data/app/views/lesli/wrappers/_application-devise.html.erb +4 -6
- data/config/importmap.rb +14 -0
- data/config/initializers/lesli.rb +27 -13
- data/config/initializers/lesli_migration_helpers.rb +61 -0
- data/config/locales/translations.en.yml +1 -24
- data/config/locales/translations.es.yml +1 -24
- data/config/locales/translations.fr.yml +1 -24
- data/config/locales/translations.it.yml +1 -24
- data/config/locales/translations.pt.yml +1 -24
- 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/db/{seed/production.rb → migrate/v1/0000110310_create_lesli_account_settings.rb} +6 -3
- 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/migrate/v1/0000130410_create_lesli_user_activities.rb +37 -0
- 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_base.rb +164 -0
- data/lib/generators/lesli/spec/USAGE +8 -0
- data/lib/generators/lesli/spec/spec_generator.rb +25 -0
- data/lib/generators/lesli/spec/templates/spec-factory.template +17 -0
- data/lib/generators/lesli/spec/templates/spec-model.template +70 -0
- 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 +8 -11
- data/lib/lesli/engine.rb +24 -6
- data/lib/lesli/r_spec.rb +43 -0
- data/lib/lesli/routing.rb +90 -0
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +13 -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 +6 -6
- data/readme.md +28 -17
- metadata +132 -399
- 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/stylesheets/lesli/templates/application.css +0 -23499
- data/app/assets/stylesheets/lesli/templates/public.css +0 -19098
- data/app/assets/stylesheets/lesli/users/confirmations.css +0 -19219
- data/app/assets/stylesheets/lesli/users/passwords.css +0 -19202
- data/app/assets/stylesheets/lesli/users/registrations.css +0 -19594
- data/app/assets/stylesheets/lesli/users/sessions.css +0 -19594
- 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 -98
- 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/bulma/loader.scss +0 -92
- 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 -163
- data/lib/scss/layouts/application-navbar.scss +0 -62
- 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 -156
- 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 -70
- data/lib/vue/application.js +0 -283
- 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 -231
- 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 -161
- 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 -167
- data/lib/vue/translation.js +0 -45
- data/lib/webpack/base.js +0 -186
- data/lib/webpack/core.js +0 -91
- data/lib/webpack/engines.js +0 -165
- data/lib/webpack/version.js +0 -41
- 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>
|
Binary file
|
@@ -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,7 +44,19 @@ 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
|
59
|
+
|
46
60
|
# check if param locale was sent by the user
|
47
61
|
unless params[:locale].blank?
|
48
62
|
|
@@ -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
|
@@ -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
|
@@ -39,9 +39,18 @@ module Lesli
|
|
39
39
|
# lesli_application_stylesheet_path(:engine) (TODO) -> stylesheet from engine current
|
40
40
|
# lesli_application_stylesheet_path(:cloud_driver) -> stylesheet from engine specific
|
41
41
|
def lesli_application_stylesheet_path(engine = nil)
|
42
|
+
|
43
|
+
# Stylesheets from specific engine
|
42
44
|
return "#{engine}/templates/application" if engine
|
43
45
|
|
44
|
-
|
46
|
+
# Get current engine information
|
47
|
+
lesli_engine_code = lesli_engine(:code)
|
48
|
+
|
49
|
+
# Rails main host app stylesheets
|
50
|
+
return "application" if lesli_engine_code == "root"
|
51
|
+
|
52
|
+
# Rails engines stylesheets
|
53
|
+
"#{lesli_engine_code}/application"
|
45
54
|
end
|
46
55
|
|
47
56
|
# Return a string path to load the main engine stylesheet
|
@@ -57,12 +66,21 @@ module Lesli
|
|
57
66
|
def lesli_application_javascript_path
|
58
67
|
# get the namespace to load specific javascript file
|
59
68
|
# for engine or specific javascript file for core controller
|
60
|
-
path_segments = controller_path.split("/")
|
61
|
-
lesli_engine = path_segments.shift
|
69
|
+
# path_segments = controller_path.split("/")
|
70
|
+
# lesli_engine = path_segments.shift
|
62
71
|
|
63
|
-
return "onboardings/application" if is_lesli_onboarding?
|
72
|
+
# return "onboardings/application" if is_lesli_onboarding?
|
64
73
|
|
65
|
-
|
74
|
+
|
75
|
+
|
76
|
+
# Get current engine information
|
77
|
+
lesli_engine_code = lesli_engine(:code)
|
78
|
+
|
79
|
+
# Rails main host app stylesheets
|
80
|
+
return "application" if lesli_engine_code == "root"
|
81
|
+
|
82
|
+
# Rails engines stylesheets
|
83
|
+
"#{lesli_engine_code}/application"
|
66
84
|
end
|
67
85
|
|
68
86
|
def javascript_googlemaps_sdk
|
@@ -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,9 +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, { class: "navbar-item"}) do
|
46
|
+
navigation_link(path, label, icon, reload:reload)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
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)
|
45
66
|
# default vue router links for single page applications
|
46
67
|
html_element = "router-link"
|
47
|
-
html_options = { to: path }
|
68
|
+
html_options = { to: path, 'active-class': "navigation-link-active" }
|
48
69
|
|
49
70
|
# if reload is nedeed, we use a standard "a" tag
|
50
71
|
if reload
|
@@ -52,16 +73,14 @@ module Lesli
|
|
52
73
|
html_options = { href: path }
|
53
74
|
end
|
54
75
|
|
55
|
-
content_tag(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
concat content_tag(:span, label, class: "text")
|
64
|
-
end
|
76
|
+
content_tag(html_element, html_options) do
|
77
|
+
# print a simple menu item (without icon)
|
78
|
+
concat content_tag(:span, label, class: "text iconless") unless icon
|
79
|
+
|
80
|
+
# print a full menu item if icon was requested
|
81
|
+
if icon
|
82
|
+
concat content_tag(:span, nil, class: icon)
|
83
|
+
concat content_tag(:span, label, class: "text")
|
65
84
|
end
|
66
85
|
end
|
67
86
|
end
|
@@ -90,8 +109,8 @@ module Lesli
|
|
90
109
|
|
91
110
|
# 02.05 Mailer engine
|
92
111
|
def navigation_engine_mailer(title: "Mailer", subtitle: "Email automation system")
|
93
|
-
return unless defined?
|
94
|
-
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"))
|
95
114
|
end
|
96
115
|
|
97
116
|
# 02.08 Proposal engine
|
@@ -156,6 +175,12 @@ module Lesli
|
|
156
175
|
navigation_engine_item(title,subtitle,"storage",cloud_storage.root_path,controller_path.include?("cloud_storage"))
|
157
176
|
end
|
158
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
|
+
|
159
184
|
# FINANCE
|
160
185
|
|
161
186
|
# 04.01 Books engine
|
@@ -213,9 +238,7 @@ module Lesli
|
|
213
238
|
# 07.02 Help engine
|
214
239
|
def navigation_engine_support(title: "Support", subtitle: "Support Ticket System")
|
215
240
|
return unless defined? LesliSupport
|
216
|
-
|
217
|
-
navigation_engine_item(title, subtitle, "support", lesli_support.root_path,
|
218
|
-
controller_path.include?("lesli_support"))
|
241
|
+
navigation_engine_item(title, subtitle, "support", lesli_support.root_path, controller_path.include?("lesli_support"))
|
219
242
|
end
|
220
243
|
|
221
244
|
# 07.03 Portal engine
|
@@ -237,13 +260,13 @@ module Lesli
|
|
237
260
|
# SECURITY & PRIVACY
|
238
261
|
|
239
262
|
# 08.01 Shield engine
|
240
|
-
def navigation_engine_shield(title: "Shield", subtitle: "Authentication & Authorization
|
263
|
+
def navigation_engine_shield(title: "Shield", subtitle: "Authentication & Authorization")
|
241
264
|
return unless defined? LesliShield
|
242
265
|
navigation_engine_item(title, subtitle, "shield", lesli_shield.root_path, controller_path.include?("lesli_shield"))
|
243
266
|
end
|
244
267
|
|
245
268
|
# 08.02 Security engine
|
246
|
-
def navigation_engine_security(title: "Security", subtitle: "Users
|
269
|
+
def navigation_engine_security(title: "Security", subtitle: "Users Authorization Management.")
|
247
270
|
return unless defined? LesliSecurity
|
248
271
|
navigation_engine_item(title, subtitle, "security", lesli_security.root_path, controller_path.include?("lesli_security"))
|
249
272
|
end
|
@@ -252,7 +275,7 @@ module Lesli
|
|
252
275
|
# INTEGRATIONS
|
253
276
|
|
254
277
|
# 09.01 Babel engine
|
255
|
-
def navigation_engine_babel(title: "Babel", subtitle: "
|
278
|
+
def navigation_engine_babel(title: "Babel", subtitle: "Translation Management System")
|
256
279
|
return unless defined? LesliBabel
|
257
280
|
|
258
281
|
navigation_engine_item(title, subtitle, "babel", lesli_babel.root_path,
|
@@ -302,7 +325,7 @@ module Lesli
|
|
302
325
|
return nil if modules_hidden.include?(path)
|
303
326
|
|
304
327
|
# render module navigation item :)
|
305
|
-
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
|
306
329
|
lesli_svg("engine-#{icon}") << content_tag(:div) do
|
307
330
|
content_tag(:span, title) << content_tag(:p, subtitle)
|
308
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
|