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
@@ -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,9 +17,9 @@ 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 · Ruby on Rails Development
|
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
|
@@ -28,11 +28,28 @@ Building a better future, one line of code at a time.
|
|
28
28
|
|
29
29
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
30
|
// ·
|
31
|
-
|
32
31
|
=end
|
33
32
|
|
34
33
|
module Lesli
|
35
|
-
class
|
34
|
+
class User::SessionService < ApplicationLesliService
|
35
|
+
|
36
|
+
def index
|
37
|
+
Lesli::User::Session
|
38
|
+
.joins(:user)
|
39
|
+
.select(
|
40
|
+
:id,
|
41
|
+
:user_id,
|
42
|
+
:first_name,
|
43
|
+
:session_source,
|
44
|
+
Date2.new.date_time.db_column("created_at", "lesli_user_sessions"),
|
45
|
+
Date2.new.date_time.db_column("last_used_at"),
|
46
|
+
Date2.new.date_time.db_column("expiration_at"),
|
47
|
+
"CONCAT_WS(' ', agent_platform, agent_os, '/', agent_browser, agent_version) as device"
|
48
|
+
)
|
49
|
+
.page(query[:pagination][:page])
|
50
|
+
.per(query[:pagination][:perPage])
|
51
|
+
.order(updated_at: :desc)
|
52
|
+
end
|
36
53
|
|
37
54
|
# create a new session
|
38
55
|
def create(user_agent, remote_ip, session_source="devise_standard_session")
|
@@ -52,18 +69,10 @@ module Lesli
|
|
52
69
|
:usage_count => 1
|
53
70
|
})
|
54
71
|
|
55
|
-
# register a successful sign-in log for the current user
|
56
|
-
current_user.logs.update(
|
57
|
-
session_id: current_session[:id],
|
58
|
-
title: "session_creation_successful",
|
59
|
-
description: current_session[:session_source]
|
60
|
-
)
|
61
|
-
|
62
72
|
# register or sync the current_user with the user representation on Firebase
|
63
73
|
#Courier::One::Firebase::User.sync_user(@resource) if defined? CloudOne
|
64
74
|
|
65
|
-
|
66
|
-
|
75
|
+
self.response(current_session)
|
67
76
|
end
|
68
77
|
end
|
69
78
|
end
|
@@ -33,6 +33,11 @@ Building a better future, one line of code at a time.
|
|
33
33
|
module Lesli
|
34
34
|
class UserService < Lesli::ApplicationLesliService
|
35
35
|
|
36
|
+
def find id
|
37
|
+
#super(current_user.account.users.joins(:detail).find_by(id: id))
|
38
|
+
super(current_user.account.users.find_by(id: id))
|
39
|
+
end
|
40
|
+
|
36
41
|
|
37
42
|
# Return a list of users that belongs to the account of the current_user
|
38
43
|
# this list is meant to be used in selectors, autocomplets, etc
|
@@ -42,6 +47,19 @@ module Lesli
|
|
42
47
|
if params[:role].present?
|
43
48
|
# add simple quotes to the roles so the sql can manage the query
|
44
49
|
roles = params[:role].split(",").map { |role| "'#{role}'" }.join(", ")
|
50
|
+
# users = users.joins("
|
51
|
+
# inner join (
|
52
|
+
# select
|
53
|
+
# ur.users_id, string_agg(r.\"name\", ', ') role_names
|
54
|
+
# from user_roles ur
|
55
|
+
# join roles r
|
56
|
+
# on r.id = ur.role_id
|
57
|
+
# and r.name in ( #{ roles } )
|
58
|
+
# where ur.deleted_at is null
|
59
|
+
# group by ur.users_id
|
60
|
+
# ) roles on roles.users_id = users.id
|
61
|
+
# ")
|
62
|
+
|
45
63
|
users = users.joins("
|
46
64
|
inner join (
|
47
65
|
select
|
@@ -49,11 +67,13 @@ module Lesli
|
|
49
67
|
from user_roles ur
|
50
68
|
join roles r
|
51
69
|
on r.id = ur.role_id
|
52
|
-
and r.name in (
|
70
|
+
and r.name in (:roles)
|
53
71
|
where ur.deleted_at is null
|
54
72
|
group by ur.users_id
|
55
73
|
) roles on roles.users_id = users.id
|
56
74
|
")
|
75
|
+
.where('r.name IN (:roles)', roles: roles)
|
76
|
+
|
57
77
|
end
|
58
78
|
|
59
79
|
users.order(name: :asc).select(
|
@@ -63,5 +83,69 @@ module Lesli
|
|
63
83
|
"COALESCE(NULLIF(alias,''), email) as alias"
|
64
84
|
).as_json
|
65
85
|
end
|
86
|
+
|
87
|
+
# @return [Array] Paginated index of users.
|
88
|
+
# @description Return a paginated array of users, used mostly in frontend views
|
89
|
+
# TODO: Implement pg_search
|
90
|
+
def index params
|
91
|
+
|
92
|
+
# sql string to join to user_roles and get all the roles assigned to a user
|
93
|
+
sql_string_for_user_roles = "left join (
|
94
|
+
select
|
95
|
+
ur.user_id, string_agg(r.\"name\", ', ') rolenames
|
96
|
+
from lesli_user_roles ur
|
97
|
+
join lesli_roles r
|
98
|
+
on r.id = ur.role_id
|
99
|
+
where ur.deleted_at is null
|
100
|
+
group by ur.user_id
|
101
|
+
) roles on roles.user_id = lesli_users.id"
|
102
|
+
|
103
|
+
# sql string to joing to user_sessions and get all the active sessions of a user
|
104
|
+
sql_string_for_user_sessions = "left join (
|
105
|
+
select
|
106
|
+
max(last_used_at) as last_action_performed_at,
|
107
|
+
user_id
|
108
|
+
from lesli_user_sessions us
|
109
|
+
where us.deleted_at is null
|
110
|
+
group by(us.user_id)
|
111
|
+
) sessions on sessions.user_id = lesli_users.id"
|
112
|
+
|
113
|
+
current_user.account.users
|
114
|
+
.joins(sql_string_for_user_roles)
|
115
|
+
.joins(sql_string_for_user_sessions)
|
116
|
+
.page(query[:pagination][:page])
|
117
|
+
.per(query[:pagination][:perPage])
|
118
|
+
.select(
|
119
|
+
:id,
|
120
|
+
"CONCAT(COALESCE(lesli_users.first_name, ''), ' ', COALESCE(lesli_users.last_name, '')) as fullname",
|
121
|
+
:email,
|
122
|
+
:active,
|
123
|
+
:rolenames,
|
124
|
+
Date2.new.date_time.db_column("current_sign_in_at")
|
125
|
+
)
|
126
|
+
end
|
127
|
+
|
128
|
+
# Creates a query that selects all user information from several tables if CloudLock is present
|
129
|
+
def show
|
130
|
+
resource
|
131
|
+
end
|
132
|
+
|
133
|
+
def update params
|
134
|
+
|
135
|
+
# old_attributes = resource.detail.attributes.merge({
|
136
|
+
# active: resource.active
|
137
|
+
# })
|
138
|
+
|
139
|
+
if resource.update(params)
|
140
|
+
# new_attributes = resource.detail.attributes.merge({
|
141
|
+
# active: resource.active
|
142
|
+
# })
|
143
|
+
#resource.log_activity_update(current_user, resource, old_attributes, new_attributes)
|
144
|
+
else
|
145
|
+
self.error(resource.errors.full_messages.to_sentence)
|
146
|
+
end
|
147
|
+
|
148
|
+
self
|
149
|
+
end
|
66
150
|
end
|
67
151
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<script>
|
2
|
+
document.addEventListener('turbo:load', () => {
|
3
|
+
const stored = localStorage.getItem('engineData')
|
4
|
+
const data = stored ? JSON.parse(stored) : { engines: [] }
|
5
|
+
|
6
|
+
data.engines.forEach(id => {
|
7
|
+
const el = document.getElementById(id.replace("lesli"))
|
8
|
+
console.log(id.replace("lesli",""))
|
9
|
+
console.log(el)
|
10
|
+
if (el) el.style.display = 'none'
|
11
|
+
})
|
12
|
+
})
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<%= render(LesliView::Layout::Container.new("lesli-apps", dashboard: true)) do %>
|
16
|
+
<section
|
17
|
+
class="lesli-application-engines">
|
18
|
+
<div class="engines-container">
|
19
|
+
<div class="engines">
|
20
|
+
<%# 01. Administration %>
|
21
|
+
<%= navigation_engine_admin %>
|
22
|
+
|
23
|
+
<%# 02. Sales & Marketing %>
|
24
|
+
<%= navigation_engine_mailer %>
|
25
|
+
|
26
|
+
<%# 03. Productivity & Teamwork%>
|
27
|
+
<%= navigation_engine_calendar %>
|
28
|
+
<%= navigation_engine_bell %>
|
29
|
+
<%= navigation_engine_papers %>
|
30
|
+
|
31
|
+
<%# 05. Analytics %>
|
32
|
+
<%= navigation_engine_audit %>
|
33
|
+
|
34
|
+
<%# 07. IT & Help Desk %>
|
35
|
+
<%= navigation_engine_support %>
|
36
|
+
|
37
|
+
<%# 08. Security & Privacy %>
|
38
|
+
<%= navigation_engine_shield %>
|
39
|
+
<%= navigation_engine_security %>
|
40
|
+
|
41
|
+
<%# 09. Integrations %>
|
42
|
+
<%= navigation_engine_babel %>
|
43
|
+
</div>
|
44
|
+
<button class="button is-hidden-tablet">
|
45
|
+
<span class="icon">
|
46
|
+
<i class="ri-close-line"></i>
|
47
|
+
</span>
|
48
|
+
<span>close</span>
|
49
|
+
</button>
|
50
|
+
</div>
|
51
|
+
</section>
|
52
|
+
<% end %>
|
@@ -1,9 +1,8 @@
|
|
1
|
-
|
2
|
-
=begin
|
1
|
+
<%#
|
3
2
|
|
4
3
|
Lesli
|
5
4
|
|
6
|
-
Copyright (c)
|
5
|
+
Copyright (c) 2025, Lesli Technologies, S. A.
|
7
6
|
|
8
7
|
This program is free software: you can redistribute it and/or modify
|
9
8
|
it under the terms of the GNU General Public License as published by
|
@@ -29,7 +28,6 @@ Building a better future, one line of code at a time.
|
|
29
28
|
|
30
29
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
31
30
|
// ·
|
32
|
-
=end
|
33
31
|
%>
|
34
32
|
|
35
33
|
<% devise_controller = controller_path.split('/')[1] %>
|
@@ -44,9 +42,9 @@ Building a better future, one line of code at a time.
|
|
44
42
|
<%# Disable back button in browser after Logout using JavaScript %>
|
45
43
|
<% if flash[:logout] == true %>
|
46
44
|
<script>
|
47
|
-
history.pushState(null, null, null);
|
45
|
+
history.pushState(null, null, null, null, null);
|
48
46
|
window.addEventListener('popstate', function () {
|
49
|
-
history.pushState(null, null, null);
|
47
|
+
history.pushState(null, null, null, null, null);
|
50
48
|
});
|
51
49
|
</script>
|
52
50
|
<% end %>
|
@@ -54,6 +52,6 @@ Building a better future, one line of code at a time.
|
|
54
52
|
<body class="<%= application_body_class() %>">
|
55
53
|
<%= yield %>
|
56
54
|
<%= javascript_include_tag("lesli_shield/#{devise_controller}") %>
|
57
|
-
<%= render
|
55
|
+
<%= render(partial: "lesli/partials/application-analytics") %>
|
58
56
|
</body>
|
59
57
|
</html>
|
@@ -1,9 +1,8 @@
|
|
1
|
-
|
2
|
-
=begin
|
1
|
+
<%#
|
3
2
|
|
4
3
|
Lesli
|
5
4
|
|
6
|
-
Copyright (c)
|
5
|
+
Copyright (c) 2025, Lesli Technologies, S. A.
|
7
6
|
|
8
7
|
This program is free software: you can redistribute it and/or modify
|
9
8
|
it under the terms of the GNU General Public License as published by
|
@@ -20,40 +19,35 @@ along with this program. If not, see http://www.gnu.org/licenses/.
|
|
20
19
|
|
21
20
|
Lesli · Ruby on Rails SaaS Development Framework.
|
22
21
|
|
23
|
-
Made with ♥ by
|
22
|
+
Made with ♥ by LesliTech
|
24
23
|
Building a better future, one line of code at a time.
|
25
24
|
|
26
25
|
@contact hello@lesli.tech
|
27
|
-
@website https://www.lesli.
|
26
|
+
@website https://www.lesli.tech
|
28
27
|
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
29
28
|
|
30
29
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
31
30
|
// ·
|
32
|
-
=end
|
33
31
|
%>
|
34
32
|
|
35
33
|
<!DOCTYPE html>
|
36
34
|
<html>
|
37
35
|
<head>
|
38
|
-
<%= render
|
39
|
-
<%= render
|
40
|
-
<%= render
|
36
|
+
<%= render(partial: "lesli/partials/application-head") %>
|
37
|
+
<%= render(partial: "lesli/partials/application-data") %>
|
38
|
+
<%= render(partial: "lesli/partials/application-lesli-scss") %>
|
39
|
+
<%= render(partial: "lesli/partials/application-lesli-javascript") %>
|
41
40
|
</head>
|
42
|
-
<body class="
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
<%= render
|
49
|
-
<%= render partial: "lesli/partials/application-lesli-content" %>
|
50
|
-
</section>
|
51
|
-
<%= render partial: "lesli/partials/application-lesli-engines" %>
|
52
|
-
<%= render partial: "lesli/partials/application-lesli-panels" %>
|
53
|
-
<%#= render partial: "lesli/partials/application-lesli-footer" %>
|
41
|
+
<body class="<%= application_body_class %>">
|
42
|
+
<%= render(partial: "lesli/partials/application-lesli-header") %>
|
43
|
+
<%= render(partial: "lesli/partials/application-lesli-navigation") %>
|
44
|
+
<%= render(partial: "lesli/partials/application-lesli-notifications") %>
|
45
|
+
<main class="lesli-application-app">
|
46
|
+
<%= render(partial: "lesli/partials/application-lesli-sidebar") %>
|
47
|
+
<%= render(partial: "lesli/partials/application-lesli-content") %>
|
54
48
|
</main>
|
55
|
-
<%= render
|
56
|
-
|
57
|
-
<%=
|
49
|
+
<%= render(partial: "lesli_assets/partials/application-lesli-icons-engines") %>
|
50
|
+
<%#= render(partial: "lesli/partials/application-analytics" %>
|
51
|
+
<%= yield(:application_lesli_body_bottom) %>
|
58
52
|
</body>
|
59
53
|
</html>
|
@@ -36,12 +36,12 @@ Building a better future, one line of code at a time.
|
|
36
36
|
<% protected_controllers = ["confirmations"] %>
|
37
37
|
|
38
38
|
<% # Get an specific site tracking id or use the development default %>
|
39
|
-
<% tracking_id = Rails.application.credentials.dig(:providers, :analytics)
|
39
|
+
<% tracking_id = Rails.application.credentials.dig(:providers, :analytics) %>
|
40
40
|
|
41
41
|
<% # check if analytics is enabled in the settings file %>
|
42
42
|
<% enable_analytics = Lesli.config.security[:enable_analytics] %>
|
43
43
|
|
44
|
-
<% if Rails.env.production? && enable_analytics %>
|
44
|
+
<% if Rails.env.production? && enable_analytics && tracking_id %>
|
45
45
|
|
46
46
|
<% if !protected_controllers.include?(controller_name) %>
|
47
47
|
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
=begin
|
1
|
+
<%#
|
3
2
|
|
4
3
|
Lesli
|
5
4
|
|
@@ -29,84 +28,11 @@ Building a better future, one line of code at a time.
|
|
29
28
|
|
30
29
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
31
30
|
// ·
|
32
|
-
=end
|
33
31
|
%>
|
34
32
|
|
35
33
|
<%
|
36
34
|
|
37
|
-
|
38
|
-
|
39
|
-
# add company information (account)
|
40
|
-
@lesli[:company] = {
|
41
|
-
name: current_user.account.name,
|
42
|
-
}
|
43
|
-
|
44
|
-
# set user information
|
45
|
-
@lesli[:current_user] = {
|
46
|
-
id: current_user.id,
|
47
|
-
name: current_user.first_name
|
48
|
-
}
|
49
|
-
|
50
|
-
|
51
|
-
# Include defaults to account
|
52
|
-
@lesli[:instance] = Rails.application.credentials.dig(:instance) || lesli_instance_code
|
53
|
-
@lesli[:engine] = lesli_engine.dig(:code) # use into url plugin to for dynamic search
|
54
|
-
@lesli[:url] = request.base_url.to_s # use as base for url plugin
|
55
|
-
|
56
|
-
%>
|
57
|
-
|
58
|
-
|
59
|
-
<%
|
60
|
-
# Dynamic build the engines mouted path
|
61
|
-
@lesli[:engine_paths] = {}
|
62
|
-
Lesli::System.engines.each do |engine, engine_info|
|
63
|
-
@lesli[:engine_paths][engine] = engine_info[:path]
|
64
|
-
end
|
65
|
-
%>
|
66
|
-
|
67
|
-
|
68
|
-
<% # define @account data for the lesli plugin %>
|
69
|
-
<script>const lesli = <%= @lesli.to_json.html_safe %></script>
|
70
|
-
<script>const Lesli = <%= @lesli.to_json.html_safe %></script>
|
71
|
-
|
72
|
-
<%#
|
73
|
-
@lesli[:revision] = 0
|
74
|
-
@lesli[:company] = {}
|
75
|
-
|
76
|
-
@lesli[:revision] = 0 #Lesli::System.revision()
|
77
|
-
@lesli[:notifications] = 0 #Courier::Bell::Notification.count(current_user, true)
|
78
|
-
@lesli[:tasks] = 0 #Courier::Focus::Task.count(current_user)
|
79
|
-
@lesli[:tickets] = 0 #Courier::Help::Ticket.count(current_user)
|
80
|
-
@lesli[:shortcuts] = [] # current_user.shortcuts.select(:id, :name, :url)
|
81
|
-
|
82
|
-
# default customization, set on before_action :set_customization hook
|
83
|
-
@lesli[:customization] = { :logo => "image.svg", :color_primary => "#1f7ce3" }
|
84
|
-
|
85
|
-
return @lesli if current_user.account.blank?
|
86
|
-
|
87
|
-
@lesli[:settings] = {
|
88
|
-
datetime: Rails.application.config.lesli.dig(:configuration, :datetime),
|
89
|
-
currency: (Rails.application.config.lesli.dig(:configuration, :currency) || {})
|
90
|
-
.merge({ locale: Rails.application.config.lesli.dig(:env, :default_locale) }),
|
91
|
-
}
|
92
|
-
|
93
|
-
# set user information
|
94
|
-
@lesli[:current_user] = {
|
95
|
-
id: current_user.id,
|
96
|
-
email: current_user.email,
|
97
|
-
full_name: current_user.full_name,
|
98
|
-
roles: current_user.roles.map(&:name),
|
99
|
-
abilities: current_user.abilities_by_controller,
|
100
|
-
max_object_level_permission: current_user.roles.map(&:object_level_permission).max,
|
101
|
-
settings: current_user.settings.map { |s| { name: s.name, value: s.value } }
|
102
|
-
}
|
35
|
+
@lesli[:tickets] = 0
|
36
|
+
@lesli[:notifications] = Lesli::Courier.new(:lesli_bell, 0).from(:notification_service, current_user).call(:count)
|
103
37
|
|
104
|
-
#
|
105
|
-
@lesli[:providers] = {
|
106
|
-
firebase: {
|
107
|
-
config: Rails.application.credentials.dig(:providers, :firebase, :web),
|
108
|
-
user: Rails.application.credentials.dig(:providers, :firebase, :user)
|
109
|
-
},
|
110
|
-
google_translate: Rails.application.credentials.dig(:providers, :google_translate)
|
111
|
-
}
|
112
38
|
%>
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
=begin
|
1
|
+
<%#
|
3
2
|
|
4
3
|
Lesli
|
5
4
|
|
@@ -29,7 +28,6 @@ Building a better future, one line of code at a time.
|
|
29
28
|
|
30
29
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
31
30
|
// ·
|
32
|
-
=end
|
33
31
|
%>
|
34
32
|
|
35
33
|
<%# the charset attribute specifies the character encoding for the HTML document. %>
|
@@ -40,7 +38,7 @@ Building a better future, one line of code at a time.
|
|
40
38
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
41
39
|
|
42
40
|
<%# defines the title of the document. %>
|
43
|
-
<title
|
41
|
+
<title><%= website_title %></title>
|
44
42
|
|
45
43
|
<%# rails standard meta tags %>
|
46
44
|
<%= csrf_meta_tags %>
|
@@ -54,3 +52,8 @@ Building a better future, one line of code at a time.
|
|
54
52
|
<% if appstore_app_id %>
|
55
53
|
<meta name="apple-itunes-app" content="app-id=<%= appstore_app_id %>">
|
56
54
|
<% end %>
|
55
|
+
|
56
|
+
|
57
|
+
<%# enable turbo %>
|
58
|
+
<meta name="turbo-prefetch" content="false">
|
59
|
+
<meta name="view-transition" content="same-origin" />
|
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
<%# Show announcements container only if cloud bell is installed %>
|
4
|
+
<% if defined?(LesliBell)%>
|
5
|
+
<application-component-announcements></application-component-announcements>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
|
9
|
+
<%# Search results container
|
10
|
+
<application-component-search></application-component-search>
|
11
|
+
%>
|
12
|
+
|
13
|
+
|
14
|
+
<%= render partial: "lesli/partials/flash" %>
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
<style>
|
19
|
+
.flash {
|
20
|
+
padding: 10px;
|
21
|
+
border-radius: 5px;
|
22
|
+
margin-bottom: 10px;
|
23
|
+
opacity: 1;
|
24
|
+
transition: opacity 1s ease-out;
|
25
|
+
}
|
26
|
+
|
27
|
+
.flash.notice {
|
28
|
+
background-color: #d4edda;
|
29
|
+
color: #155724;
|
30
|
+
}
|
31
|
+
|
32
|
+
.flash.alert {
|
33
|
+
background-color: #f8d7da;
|
34
|
+
color: #721c24;
|
35
|
+
}
|
36
|
+
|
37
|
+
.fade-out {
|
38
|
+
animation: fadeOut 5s forwards;
|
39
|
+
}
|
40
|
+
|
41
|
+
@keyframes fadeOut {
|
42
|
+
0% { opacity: 1; }
|
43
|
+
80% { opacity: 1; } /* Keep visible for most of the time */
|
44
|
+
100% { opacity: 0; display: none; }
|
45
|
+
}
|
46
|
+
|
47
|
+
</style>
|
48
|
+
|
49
|
+
|