lesli 5.0.13 → 5.0.15
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 +20 -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/abouts/welcome.html.erb +144 -0
- 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/layouts/application-public.html.erb +1 -2
- 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/partials/_application-public-scss.html.erb +1 -1
- 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 +27 -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 +148 -393
- 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
@@ -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
|
+
|
@@ -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,7 +19,7 @@ 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
|
@@ -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
|
<%# check if custom navigation partial exists, getting the path from application helper %>
|
@@ -44,54 +42,80 @@ Building a better future, one line of code at a time.
|
|
44
42
|
<%= render partial: custom_navigation_path %>
|
45
43
|
|
46
44
|
<% else %>
|
45
|
+
<header class="lesli-application-header">
|
46
|
+
<nav class="lesli-navbar navbar unresponsive" role="navigation" aria-label="main navigation">
|
47
|
+
<div class="container">
|
48
|
+
<div class="navbar-brand">
|
49
|
+
<a href="<%= defined?(LesliDashboard) ? '/dashboard' : '/' %>" class="application-navbar-brand">
|
50
|
+
<%= customization_instance_logo_tag(logo: "app-logo", options: { alt: "Lesli app logo" }) %>
|
51
|
+
</a>
|
52
|
+
<a class="navbar-burger" role="button" aria-label="menu" aria-expanded="false">
|
53
|
+
<span aria-hidden="true"></span>
|
54
|
+
<span aria-hidden="true"></span>
|
55
|
+
<span aria-hidden="true"></span>
|
56
|
+
</a>
|
57
|
+
</div>
|
58
|
+
<div class="navbar-menu">
|
59
|
+
<div class="navbar-start">
|
60
|
+
</div>
|
61
|
+
<div class="navbar-end">
|
62
|
+
|
63
|
+
<div class="navbar-item">
|
64
|
+
<div class="header-icons field is-grouped is-justify-content-center">
|
65
|
+
<div class="control">
|
66
|
+
|
67
|
+
<!-- tasks -->
|
68
|
+
<% if defined?(LesliFocus) %>
|
69
|
+
<a v-if="props.showFocus" class="header-indicator"
|
70
|
+
@click="() => { storeLayout.showSuppor = true }">
|
71
|
+
<span class="ri-list-check-3">
|
72
|
+
</span>
|
73
|
+
<span class="count" v-if="storeLayout.header.support > 0">
|
74
|
+
</span>
|
75
|
+
</a>
|
76
|
+
<% end %>
|
47
77
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
<span class="icon is-size-5">
|
74
|
-
<%= lesli_svg("locale-#{locale}") %>
|
75
|
-
</span>
|
76
|
-
</button>
|
77
|
-
</div>
|
78
|
-
<div class="dropdown-menu" id="dropdown-menu-locale" role="menu">
|
79
|
-
<div class="dropdown-content">
|
80
|
-
<% I18n.available_locales.each do |locale| %>
|
81
|
-
<% next if locale == I18n.locale %>
|
82
|
-
<%= link_to language_url(locale), { :class => "dropdown-item" } do %>
|
83
|
-
<span class="icon has-text-grey-light">
|
84
|
-
<%= lesli_svg("locale-#{locale}") %>
|
85
|
-
</span>
|
86
|
-
<span><%= language_name(locale) %></span>
|
78
|
+
<!-- tickets -->
|
79
|
+
<% if defined?(LesliSupport) %>
|
80
|
+
<%= link_to(
|
81
|
+
lesli_support.tickets_path,
|
82
|
+
:class => "header-indicator",
|
83
|
+
:data => { turbo_frame: '_top' }) do %>
|
84
|
+
<span class="ri-ticket-2-line"></span>
|
85
|
+
<% if @lesli[:tickets] > 0 %>
|
86
|
+
<span class="count"></span>
|
87
|
+
<% end %>
|
88
|
+
<% end %>
|
89
|
+
<% end %>
|
90
|
+
|
91
|
+
<!-- notifications -->
|
92
|
+
<% if defined?(LesliBell) %>
|
93
|
+
<%= link_to(
|
94
|
+
lesli_bell.notifications_path,
|
95
|
+
:class => "header-indicator",
|
96
|
+
:data => { turbo_frame: '_top' }) do %>
|
97
|
+
<% if @lesli[:notifications] > 0 %>
|
98
|
+
<span class="ri-notification-3-fill has-text-primary"></span>
|
99
|
+
<% else %>
|
100
|
+
<span class="ri-notification-3-line"></span>
|
101
|
+
<% end %>
|
102
|
+
<% end %>
|
87
103
|
<% end %>
|
88
|
-
|
104
|
+
|
105
|
+
<!-- module selector -->
|
106
|
+
<%= navigation_link(lesli.apps_path, nil, "ri-apps-2-line") %>
|
107
|
+
|
108
|
+
<!-- user profile -->
|
109
|
+
<%= navigation_link(lesli.apps_path, nil, "ri-user-smile-line") %>
|
110
|
+
|
111
|
+
<!-- logout from session -->
|
112
|
+
<%= navigation_link(main_app.destroy_user_session_path, nil, "ri-logout-circle-r-line") if defined?(LesliShield) %>
|
113
|
+
</div>
|
89
114
|
</div>
|
90
115
|
</div>
|
91
116
|
</div>
|
92
117
|
</div>
|
93
|
-
|
94
|
-
</
|
95
|
-
</
|
96
|
-
|
118
|
+
</div>
|
119
|
+
</nav>
|
120
|
+
</header>
|
97
121
|
<% end %>
|
@@ -32,22 +32,9 @@ Building a better future, one line of code at a time.
|
|
32
32
|
=end
|
33
33
|
%>
|
34
34
|
|
35
|
-
|
36
|
-
<%= javascript_include_tag
|
37
|
-
|
38
|
-
|
39
|
-
<%# Including main Lesli application %>
|
40
|
-
<%= javascript_include_tag(lesli_application_javascript_path()) %>
|
41
|
-
|
42
|
-
|
43
|
-
<%# Set language for JavaScript apps %>
|
44
|
-
<script>
|
45
|
-
if (typeof i18n !== "undefined") {
|
46
|
-
i18n.locale = "<%#= I18n.locale %>"
|
47
|
-
}
|
48
|
-
</script>
|
49
|
-
|
50
|
-
|
35
|
+
<%= javascript_importmap_tags %>
|
36
|
+
<%= javascript_include_tag("lesli_assets/application.js", :defer => "defer") %>
|
37
|
+
<%= yield(:application_lesli_javascript) %>
|
51
38
|
<%#
|
52
39
|
<script src="https://js.honeybadger.io/v3.2/honeybadger.min.js" type="text/javascript"></script>
|
53
40
|
<script type="text/javascript">
|
@@ -36,9 +36,9 @@ Building a better future, one line of code at a time.
|
|
36
36
|
<%
|
37
37
|
engine = lesli_engine.dig(:code)
|
38
38
|
custom_sidebar_path = if engine == "root"
|
39
|
-
"partials/
|
40
|
-
|
41
|
-
"#{engine}/partials/
|
39
|
+
"partials/navigation"
|
40
|
+
else
|
41
|
+
"#{engine}/partials/navigation"
|
42
42
|
end
|
43
43
|
%>
|
44
44
|
|
@@ -46,14 +46,17 @@ Building a better future, one line of code at a time.
|
|
46
46
|
<%# validate the path to be sure the partial exists when trying to render it %>
|
47
47
|
<% custom_sidebar_exists = lookup_context.exists?(custom_sidebar_path, nil, true) %>
|
48
48
|
|
49
|
-
|
50
49
|
<%# render navigation partial %>
|
51
50
|
<% if custom_sidebar_exists %>
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
<nav class="lesli-navbar navbar lesli-application-navigation" role="navigation" aria-label="main navigation">
|
52
|
+
<div class="container">
|
53
|
+
<div class="navbar-menu">
|
54
|
+
<div class="navbar-end">
|
55
|
+
<%= render partial: custom_sidebar_path %>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
</nav>
|
57
60
|
<% else %>
|
58
61
|
<!-- no navigation found -->
|
59
62
|
<% end %>
|
@@ -33,11 +33,13 @@ Building a better future, one line of code at a time.
|
|
33
33
|
%>
|
34
34
|
|
35
35
|
|
36
|
-
|
37
|
-
<% if
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
<section id="application-lesli-notifications" class="application-lesli-notifications">
|
37
|
+
<% if flash.any? %>
|
38
|
+
<% flash.each do |type, message| %>
|
39
|
+
<div class="notification is-<%= type %> is-light my-1 has-text-centered">
|
40
|
+
<%= message %>
|
41
|
+
</div>
|
42
|
+
<% end %>
|
43
|
+
<% flash.discard %>
|
44
|
+
<% end %>
|
45
|
+
</section>
|
@@ -55,6 +55,6 @@ Building a better future, one line of code at a time.
|
|
55
55
|
|
56
56
|
|
57
57
|
<%# Loading stylesheets %>
|
58
|
-
<%= stylesheet_link_tag lesli_application_stylesheet_path(:
|
58
|
+
<%= stylesheet_link_tag lesli_application_stylesheet_path(:lesli_assets), media: "all" %>
|
59
59
|
<%= stylesheet_link_tag lesli_application_stylesheet_path(), media: "all" %>
|
60
60
|
|
@@ -33,7 +33,7 @@ Building a better future, one line of code at a time.
|
|
33
33
|
%>
|
34
34
|
|
35
35
|
<%# check if custom navigation partial exists, getting the path from application helper %>
|
36
|
-
<% custom_sidebar_path = "#{lesli_engine.dig(:code)}/partials/
|
36
|
+
<% custom_sidebar_path = "#{lesli_engine.dig(:code)}/partials/sidebar" %>
|
37
37
|
|
38
38
|
<%# validate the path to be sure the partial exists when trying to render it %>
|
39
39
|
<% custom_sidebar_exists = lookup_context.exists?(custom_sidebar_path, nil, true) %>
|
@@ -35,15 +35,12 @@ Building a better future, one line of code at a time.
|
|
35
35
|
|
36
36
|
<% is_devise = controller_path.split('/')[0] == "users" %>
|
37
37
|
|
38
|
-
|
39
38
|
<%# Load specific javascript files for devise actions (login,register,etc) %>
|
40
|
-
|
41
|
-
|
39
|
+
<%#= javascript_include_tag("lesli/#{controller_path}") if is_devise %>
|
42
40
|
|
43
41
|
<%# Load standard files %>
|
44
42
|
<%#= javascript_include_tag(application_javascript_path()) unless is_devise %>
|
45
43
|
|
46
|
-
|
47
44
|
<%# Set language for JavaScript apps %>
|
48
45
|
<script>
|
49
46
|
if (typeof i18n !== "undefined") {
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<%#
|
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 https://www.lesli.tech
|
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
|
+
%>
|
32
|
+
|
33
|
+
<%
|
34
|
+
hour = Date2.new.date.get.hour # Returns the hour (0–23) based on the app's timezone
|
35
|
+
welcome_options = ["Good morning", "Good afternoon", "Good evening"]
|
36
|
+
welcome_text = ""
|
37
|
+
|
38
|
+
if hour < 12
|
39
|
+
welcome_text = welcome_options.first
|
40
|
+
elsif hour < 18
|
41
|
+
welcome_text = welcome_options.second
|
42
|
+
else
|
43
|
+
welcome_text = welcome_options.third
|
44
|
+
end
|
45
|
+
%>
|
46
|
+
|
47
|
+
<%= render(LesliView::Layout::Container.new("dashboards-show", :dashboard => true)) do %>
|
48
|
+
|
49
|
+
<section class="lesli-element-header is-flex mt-6 mb-6 pb-6 container">
|
50
|
+
<div class="lesli-element-header-title">
|
51
|
+
<h1 class="subtitle is-size-3 mb-0"><%= welcome_text %>, <%= current_user.full_name %>.</h1>
|
52
|
+
<p class=""><%= Date2.new.date_words_day %>.</p>
|
53
|
+
</div>
|
54
|
+
</section>
|
55
|
+
|
56
|
+
<%= render(LesliView::Elements::Empty.new(text: "Empty dashboard")) if @dashboard[:components].blank? %>
|
57
|
+
|
58
|
+
<div class="columns is-multiline is-variable is-4 dashboard-components">
|
59
|
+
<% @dashboard[:components].each do |component| %>
|
60
|
+
<%= render("#{controller.controller_path}/component-#{component}", { :component => component }) %>
|
61
|
+
<% end %>
|
62
|
+
</div>
|
63
|
+
<% 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
|
@@ -20,7 +19,7 @@ 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
|
@@ -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
|
<% title = defined?(title) ? title : "" %>
|
@@ -60,7 +58,7 @@ Building a better future, one line of code at a time.
|
|
60
58
|
:class => "#{lesli_instance_code}-logo mb-2", # dynamic class according to the instance
|
61
59
|
:alt => "Main logo")
|
62
60
|
%>
|
63
|
-
<h1 class="has-text-primary">
|
61
|
+
<h1 class="is-title is-size-3 has-text-primary">
|
64
62
|
<%#= I18n.t("core.users/sessions.view_text_welcome") %>
|
65
63
|
<%= title %>
|
66
64
|
</h1>
|
data/config/importmap.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Pin npm packages by running ./bin/importmap
|
2
|
+
|
3
|
+
pin "application", to: "lesli/application.js", preload: true
|
4
|
+
pin "@hotwired/turbo-rails", to: "turbo.min.js"
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
#pin "chart.js", to: "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js"
|
9
|
+
#pin "chart.js", to: "https://ga.jspm.io/npm:chart.js@4.5.1/dist/chart.esm.js"
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# my_engine/config/importmap.rb
|
14
|
+
#pin_all_from File.expand_path("../app/assets/javascripts", __dir__)
|
@@ -52,7 +52,7 @@ Lesli.configure do |config|
|
|
52
52
|
# Available languages globally (Requires LesliBabel)
|
53
53
|
config.locales = {
|
54
54
|
:en => "English", # English
|
55
|
-
|
55
|
+
:de => "Deutsch", # Deutsch/German
|
56
56
|
# :pl => "Polski", # Polski/Polish/Poland
|
57
57
|
# :nl => "Dutch", # Dutch/Nederlands/Netherlands
|
58
58
|
:es => "Español", # Español/Spanish
|
@@ -60,8 +60,8 @@ Lesli.configure do |config|
|
|
60
60
|
# :sr => "Српски", # Српски/Srpski/Serbian
|
61
61
|
:it => "Italiano", # Italiano/Italian
|
62
62
|
# :hr => "Hrvatski", # Hrvatski/Croatian
|
63
|
-
|
64
|
-
|
63
|
+
#:fr => "Français", # French
|
64
|
+
#:pt => "Português", # Portuguese
|
65
65
|
# :tr => "Türkçe", # Turkish
|
66
66
|
# :ro => "Română", # Romanian
|
67
67
|
# :bg => "български" # Bulgarian
|
@@ -70,21 +70,23 @@ Lesli.configure do |config|
|
|
70
70
|
|
71
71
|
# Time localization
|
72
72
|
config.datetime = {
|
73
|
-
time_zone
|
74
|
-
start_week_on
|
75
|
-
formats
|
76
|
-
date
|
77
|
-
time
|
78
|
-
date_time
|
79
|
-
date_words
|
80
|
-
date_time_words
|
73
|
+
:time_zone => "America/Guatemala",
|
74
|
+
:start_week_on => "monday",
|
75
|
+
:formats => {
|
76
|
+
:date => "%d/%m/%Y",
|
77
|
+
:time => "%H:%M",
|
78
|
+
:date_time => "%d/%m/%Y %H:%M",
|
79
|
+
:date_words => "%A, %B %d, %Y",
|
80
|
+
:date_time_words => "%A, %B %d, %Y, %H:%M", # 24 hours datetime in words format (default)
|
81
|
+
:date_time_words_pm => "%A, %B %d, %Y, %I:%M %p", # 12 hours datetime in words format
|
82
|
+
:date_time_words_day => "%A, %B %d, %Y, %H:%M", # 24 hours datetime in words format (default)
|
81
83
|
}
|
82
84
|
}
|
83
85
|
|
84
86
|
|
85
87
|
# Instance security settings
|
86
88
|
config.security = {
|
87
|
-
password: "
|
89
|
+
password: "Test123!",
|
88
90
|
enable_debug: false,
|
89
91
|
enable_becoming: false,
|
90
92
|
enable_analytics: true,
|
@@ -111,6 +113,12 @@ Lesli.configure do |config|
|
|
111
113
|
locale: false
|
112
114
|
}
|
113
115
|
|
116
|
+
|
117
|
+
#
|
118
|
+
config.mailer = {
|
119
|
+
templates: "lesli_mailer/emails/lesli"
|
120
|
+
}
|
121
|
+
|
114
122
|
config.path_after_login = "/"
|
115
123
|
config.path_after_login = "/dashboard" if defined?(LesliDashboard)
|
116
124
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2025, 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
|
+
require(Lesli::Engine.root.join("lib/migrate/common"))
|
34
|
+
|
35
|
+
require(Lesli::Engine.root.join("lib/migrate/items/action_structure"))
|
36
|
+
require(Lesli::Engine.root.join("lib/migrate/items/activity_structure"))
|
37
|
+
require(Lesli::Engine.root.join("lib/migrate/items/attachment_structure"))
|
38
|
+
require(Lesli::Engine.root.join("lib/migrate/items/discussion_structure"))
|
39
|
+
require(Lesli::Engine.root.join("lib/migrate/items/subscriber_structure"))
|
40
|
+
require(Lesli::Engine.root.join("lib/migrate/items/version_structure"))
|
41
|
+
|
42
|
+
require(Lesli::Engine.root.join("lib/migrate/shared/account_structure"))
|
43
|
+
require(Lesli::Engine.root.join("lib/migrate/shared/setting_structure"))
|
44
|
+
require(Lesli::Engine.root.join("lib/migrate/shared/catalog_structure"))
|
45
|
+
require(Lesli::Engine.root.join("lib/migrate/shared/dashboard_structure"))
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
ActiveRecord::Migration.include(MigrationHelpers::Common)
|
50
|
+
|
51
|
+
ActiveRecord::Migration.include(MigrationHelpers::Items::ActionStructure)
|
52
|
+
ActiveRecord::Migration.include(MigrationHelpers::Items::ActivityStructure)
|
53
|
+
ActiveRecord::Migration.include(MigrationHelpers::Items::AttachmentStructure)
|
54
|
+
ActiveRecord::Migration.include(MigrationHelpers::Items::DiscussionStructure)
|
55
|
+
ActiveRecord::Migration.include(MigrationHelpers::Items::SubscriberStructure)
|
56
|
+
ActiveRecord::Migration.include(MigrationHelpers::Items::VersionStructure)
|
57
|
+
|
58
|
+
ActiveRecord::Migration.include(MigrationHelpers::Shared::AccountStructure)
|
59
|
+
ActiveRecord::Migration.include(MigrationHelpers::Shared::SettingStructure)
|
60
|
+
ActiveRecord::Migration.include(MigrationHelpers::Shared::CatalogStructure)
|
61
|
+
ActiveRecord::Migration.include(MigrationHelpers::Shared::DashboardStructure)
|
@@ -1,30 +1,5 @@
|
|
1
1
|
---
|
2
2
|
:en:
|
3
3
|
lesli:
|
4
|
-
shared:
|
5
|
-
view_discussions: Discussions
|
6
|
-
button_add_new: Add new
|
7
|
-
button_reload: Reload
|
8
|
-
view_files: Files
|
9
|
-
view_quick_actions: Quick actions
|
10
|
-
button_list: List
|
11
|
-
button_save: Save
|
12
|
-
button_delete: Delete
|
13
|
-
button_edit: Edit
|
14
|
-
view_status_active: Active
|
15
|
-
view_status_inactive: Inactive
|
16
|
-
button_settings: Settings
|
17
|
-
button_show: Show
|
18
|
-
toolbar_search: Search...
|
19
|
-
message_operation_success: Operation completed successfully
|
20
|
-
message_operation_error: Operation failed. Please try again.
|
21
|
-
application:
|
22
|
-
navigation_logout: Logout
|
23
|
-
navigation_my_profile: My profile
|
24
4
|
users/sessions:
|
25
|
-
|
26
|
-
dashboards:
|
27
|
-
title: Dashboards
|
28
|
-
column_name: Name
|
29
|
-
column_default: Default
|
30
|
-
view_add_component: Add component
|
5
|
+
message_invalid_credentials: Invalid credentials
|
@@ -1,30 +1,5 @@
|
|
1
1
|
---
|
2
2
|
:es:
|
3
3
|
lesli:
|
4
|
-
shared:
|
5
|
-
view_discussions: Discusiones
|
6
|
-
button_add_new: Agregar nuevo
|
7
|
-
button_reload: Recargar
|
8
|
-
view_files: Archivos
|
9
|
-
view_quick_actions: Acciones rapidas
|
10
|
-
button_list: Lista
|
11
|
-
button_save: Guardar
|
12
|
-
button_delete: Eliminar
|
13
|
-
button_edit: Editar
|
14
|
-
view_status_active: Activo
|
15
|
-
view_status_inactive: Inactivo
|
16
|
-
button_settings: Configuración
|
17
|
-
button_show: Ver
|
18
|
-
toolbar_search: Buscar...
|
19
|
-
message_operation_success: Operacion realizada satisfactoriamente
|
20
|
-
message_operation_error: Operación fallida. Por favor, inténtelo de nuevo.
|
21
|
-
application:
|
22
|
-
navigation_logout: Cerrar sesión
|
23
|
-
navigation_my_profile: Mi perfil
|
24
4
|
users/sessions:
|
25
|
-
|
26
|
-
dashboards:
|
27
|
-
title: Dashboards
|
28
|
-
column_name: Nombre
|
29
|
-
column_default: Default
|
30
|
-
view_add_component: Agregar componente
|
5
|
+
message_invalid_credentials: Credenciales no validas
|