lesli 5.0.12 → 5.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/config/lesli_manifest.js +3 -6
- data/app/assets/images/lesli/brand/app-icon.svg +45 -39
- data/app/assets/images/lesli/brand/app-logo.png +0 -0
- data/app/assets/javascripts/lesli/application.js +1 -0
- data/app/controllers/lesli/abouts_controller.rb +16 -14
- data/app/controllers/lesli/application_controller.rb +14 -0
- data/app/controllers/lesli/application_devise_controller.rb +10 -12
- data/app/controllers/lesli/application_lesli_controller.rb +12 -11
- data/app/controllers/lesli/apps_controller.rb +6 -0
- data/app/controllers/lesli/roles_controller.rb +2 -2
- data/app/helpers/lesli/assets_helper.rb +24 -6
- data/app/helpers/lesli/general_helper.rb +18 -5
- data/app/helpers/lesli/html_helper.rb +8 -0
- data/app/helpers/lesli/navigation_helper.rb +43 -20
- data/app/helpers/lesli/system_helper.rb +2 -2
- data/app/helpers/lesli/turbo_helper.rb +58 -0
- data/app/interfaces/lesli/customization_interface.rb +42 -0
- data/app/interfaces/lesli/requester_interface.rb +103 -0
- data/app/interfaces/lesli/responder_interface.rb +127 -0
- data/app/lib/date2.rb +1 -191
- data/app/lib/lesli/courier.rb +54 -0
- data/app/mailers/lesli/application_lesli_mailer.rb +32 -59
- data/app/mailers/lesli/devise_mailer.rb +16 -8
- data/app/models/concerns/account_initializer.rb +27 -68
- data/app/models/concerns/lesli/has_activities.rb +29 -0
- data/app/models/concerns/user_extensions.rb +34 -13
- data/app/models/concerns/user_security.rb +4 -4
- data/app/models/lesli/account.rb +13 -20
- data/{lib/scss/layouts/application-container.scss → app/models/lesli/item/activity.rb} +11 -8
- data/app/models/lesli/role/{power.rb → action.rb} +6 -4
- data/app/models/lesli/role.rb +7 -15
- data/app/models/lesli/shared/catalog.rb +20 -0
- data/app/models/lesli/shared/dashboard.rb +1 -1
- data/app/models/lesli/user/activity.rb +5 -0
- data/app/models/lesli/user/detail.rb +5 -5
- data/app/models/lesli/user/{log.rb → journal.rb} +3 -3
- data/app/models/lesli/user/{power.rb → role.rb} +2 -3
- data/app/models/lesli/user/session.rb +3 -4
- data/app/models/lesli/user.rb +50 -46
- data/app/operators/lesli/controller_operator.rb +7 -2
- data/app/operators/lesli/{role_descriptor_operator.rb → role_operator.rb} +51 -28
- data/app/operators/lesli/user_registration_operator.rb +3 -2
- data/app/services/lesli/application_lesli_service.rb +8 -4
- data/app/services/lesli/role/action_service.rb +58 -0
- data/app/services/lesli/role_service.rb +232 -0
- data/app/services/lesli/{user_session_service.rb → user/session_service.rb} +23 -14
- data/app/services/lesli/user_service.rb +86 -2
- data/app/views/lesli/apps/show.html.erb +52 -0
- data/app/views/lesli/layouts/application-devise.html.erb +5 -7
- data/app/views/lesli/layouts/application-lesli.html.erb +18 -22
- data/app/views/lesli/partials/_application-analytics.html.erb +2 -2
- data/app/views/lesli/partials/_application-data.html.erb +5 -79
- data/app/views/lesli/partials/_application-head.html.erb +7 -4
- data/app/views/lesli/partials/_application-lesli-annoouncements.html.erb +49 -0
- data/app/views/lesli/partials/_application-lesli-header.html.erb +88 -39
- data/app/views/lesli/partials/_application-lesli-javascript.html.erb +5 -18
- data/app/views/lesli/partials/_application-lesli-navigation.html.erb +17 -7
- data/app/views/lesli/partials/{_application-lesli-notices.html.erb → _application-lesli-notifications.html.erb} +10 -8
- data/app/views/lesli/partials/_application-lesli-scss.html.erb +3 -3
- data/app/views/lesli/partials/_application-lesli-sidebar.html.erb +1 -1
- data/app/views/lesli/partials/_application-public-javascript.html.erb +1 -4
- data/app/views/lesli/shared/dashboards/_show.html.erb +63 -0
- data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
- data/app/views/lesli/wrappers/_application-devise.html.erb +4 -6
- data/config/importmap.rb +14 -0
- data/config/initializers/lesli.rb +27 -13
- data/config/initializers/lesli_migration_helpers.rb +61 -0
- data/config/locales/translations.en.yml +1 -24
- data/config/locales/translations.es.yml +1 -24
- data/config/locales/translations.fr.yml +1 -24
- data/config/locales/translations.it.yml +1 -24
- data/config/locales/translations.pt.yml +1 -24
- data/config/routes.rb +3 -1
- data/db/migrate/v1/{0010000110_create_lesli_accounts.rb → 0000000110_create_lesli_accounts.rb} +13 -12
- data/db/migrate/v1/0000000210_create_lesli_roles.rb +65 -0
- data/db/migrate/v1/0000000310_create_lesli_users.rb +99 -0
- data/db/migrate/v1/{0010000610_create_lesli_system_controllers.rb → 0000100110_create_lesli_system_controllers.rb} +3 -3
- data/db/migrate/v1/{0010000710_create_lesli_system_controller_actions.rb → 0000100210_create_lesli_system_controller_actions.rb} +3 -4
- data/db/{seed/production.rb → migrate/v1/0000110310_create_lesli_account_settings.rb} +6 -3
- data/{app/models/lesli/user/agent.rb → db/migrate/v1/0000110410_create_lesli_account_activities.rb} +3 -3
- data/db/migrate/v1/0000120210_create_lesli_role_actions.rb +45 -0
- data/db/migrate/v1/{0010001410_create_lesli_account_logs.rb → 0000120310_create_lesli_role_privileges.rb} +8 -8
- data/db/{tables/0010003810_create_user_shortcuts.rb → migrate/v1/0000130210_create_lesli_user_roles.rb} +9 -12
- data/db/migrate/v1/0000130310_create_lesli_user_sessions.rb +56 -0
- data/db/migrate/v1/0000130410_create_lesli_user_activities.rb +37 -0
- data/db/{tables/0010001110_create_account_locations.rb → migrate2/0000100510_create_lesli_account_locations.rb} +6 -6
- data/db/{tables/0010001510_create_account_currencies.rb → migrate2/0000100610_create_lesli_account_currencies.rb} +4 -4
- data/db/seed/{development/accounts.rb → accounts.rb} +6 -2
- data/db/seed/{production/users.rb → users.rb} +4 -10
- data/db/seed/{tools.rb → xyz.rb} +2 -7
- data/db/seeds.rb +3 -2
- data/db/structure/00000020_catalogs.json +0 -0
- data/lib/generators/application_lesli_generator_base.rb +164 -0
- data/lib/generators/lesli/spec/USAGE +8 -0
- data/lib/generators/lesli/spec/spec_generator.rb +25 -0
- data/lib/generators/lesli/spec/templates/spec-factory.template +17 -0
- data/lib/generators/lesli/spec/templates/spec-model.template +70 -0
- data/lib/generators/lesli/view/USAGE +8 -0
- data/lib/generators/lesli/view/templates/spec-factory.template +17 -0
- data/lib/generators/lesli/view/templates/spec-model.template +70 -0
- data/lib/generators/lesli/view/view_generator.rb +25 -0
- data/lib/lesli/configuration.rb +8 -11
- data/lib/lesli/engine.rb +24 -6
- data/lib/lesli/r_spec.rb +43 -0
- data/lib/lesli/routing.rb +90 -0
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +13 -0
- data/lib/migrate/common.rb +94 -0
- data/lib/migrate/items/action_structure.rb +51 -0
- data/{db/migrate/v1/0010001210_create_lesli_account_activities.rb → lib/migrate/items/activity_structure.rb} +18 -16
- data/lib/migrate/items/attachment_structure.rb +62 -0
- data/{app/views/lesli/partials/_application-lesli-engines.html.erb → lib/migrate/items/discussion_structure.rb} +19 -27
- data/lib/migrate/items/subscriber_structure.rb +49 -0
- data/lib/migrate/items/version_structure.rb +53 -0
- data/lib/migrate/shared/account_structure.rb +21 -0
- data/lib/migrate/shared/catalog_structure.rb +30 -0
- data/lib/migrate/shared/dashboard_structure.rb +54 -0
- data/lib/migrate/shared/setting_structure.rb +20 -0
- data/lib/rspec/config/spec_coverage.rb +95 -0
- data/{db/migrate/v1/0010001110_create_lesli_account_settings.rb → lib/rspec/factories/lesli_account.rb} +10 -7
- data/{db/seed/development.rb → lib/rspec/factories/lesli_role.rb} +30 -3
- data/{db/seed/test.rb → lib/rspec/factories/lesli_user.rb} +32 -3
- data/lib/rspec/fixtures/files/lesli-icon.png +0 -0
- data/lib/rspec/fixtures/files/test_file_1.docx +0 -0
- data/{db/tables/0010001610_create_account_currency_exchange_rates.rb → lib/rspec/helpers/lesli_helper.rb} +21 -21
- data/lib/rspec/helpers/rails_helper.rb +134 -0
- data/lib/rspec/helpers/response_request_helper.rb +214 -0
- data/lib/rspec/helpers/response_service_helper.rb +66 -0
- data/lib/rspec/helpers/spec_helper.rb +99 -0
- data/lib/rspec/lesli_api_tester.rb +133 -0
- data/lib/rspec/lesli_service_tester.rb +46 -0
- data/{db/tables/0010001410_create_account_files.rb → lib/rspec/testers/controller.rb} +31 -20
- data/lib/rspec/testers/model.rb +36 -0
- data/lib/rspec/testers/request.rb +84 -0
- data/lib/tasks/lesli/db.rake +5 -3
- data/lib/tasks/lesli/git.rake +28 -32
- data/lib/tasks/lesli/github.rake +89 -0
- data/lib/tasks/lesli_tasks.rake +6 -6
- data/readme.md +28 -17
- metadata +132 -399
- data/app/assets/fonts/lesli/Domine/Domine-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/Domine/OFL.txt +0 -97
- data/app/assets/fonts/lesli/MaterialDesign/icons.woff2 +0 -0
- data/app/assets/fonts/lesli/Montserrat/Montserrat-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/OpenSans/OpenSans-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.eot +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.glyph.json +0 -1
- data/app/assets/fonts/lesli/Remix/remixicon.svg +0 -7633
- data/app/assets/fonts/lesli/Remix/remixicon.symbol.svg +0 -11
- data/app/assets/fonts/lesli/Remix/remixicon.ttf +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.woff +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.woff2 +0 -0
- data/app/assets/fonts/lesli/Roboto/LICENSE.txt +0 -202
- data/app/assets/fonts/lesli/Roboto/Roboto-Black.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-BlackItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Bold.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-BoldItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Italic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Light.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-LightItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Medium.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-MediumItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Regular.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Thin.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-ThinItalic.ttf +0 -0
- data/app/assets/icons/lesli/engine-admin.svg +0 -1
- data/app/assets/icons/lesli/engine-audit.svg +0 -1
- data/app/assets/icons/lesli/engine-babel.svg +0 -1
- data/app/assets/icons/lesli/engine-bell.svg +0 -1
- data/app/assets/icons/lesli/engine-books.svg +0 -1
- data/app/assets/icons/lesli/engine-calendar.svg +0 -1
- data/app/assets/icons/lesli/engine-dashboard.svg +0 -1
- data/app/assets/icons/lesli/engine-dispatcher.svg +0 -1
- data/app/assets/icons/lesli/engine-focus.svg +0 -1
- data/app/assets/icons/lesli/engine-kb.svg +0 -1
- data/app/assets/icons/lesli/engine-leaf.svg +0 -1
- data/app/assets/icons/lesli/engine-lesli.svg +0 -1
- data/app/assets/icons/lesli/engine-letter.svg +0 -1
- data/app/assets/icons/lesli/engine-mailer.svg +0 -1
- data/app/assets/icons/lesli/engine-one.svg +0 -1
- data/app/assets/icons/lesli/engine-profile.svg +0 -1
- data/app/assets/icons/lesli/engine-proposal.svg +0 -1
- data/app/assets/icons/lesli/engine-scraper.svg +0 -1
- data/app/assets/icons/lesli/engine-security.svg +0 -1
- data/app/assets/icons/lesli/engine-shared.svg +0 -1
- data/app/assets/icons/lesli/engine-shield.svg +0 -1
- data/app/assets/icons/lesli/engine-storage.svg +0 -1
- data/app/assets/icons/lesli/engine-support.svg +0 -1
- data/app/assets/icons/lesli/engine-talk.svg +0 -1
- data/app/assets/icons/lesli/engine-team.svg +0 -1
- data/app/assets/icons/lesli/engine-time.svg +0 -1
- data/app/assets/icons/lesli/locale-en.svg +0 -1
- data/app/assets/icons/lesli/locale-es.svg +0 -1
- data/app/assets/icons/lesli/locale-fr.svg +0 -1
- data/app/assets/icons/lesli/locale-it.svg +0 -1
- data/app/assets/icons/lesli/locale-pt.svg +0 -1
- data/app/assets/icons/readme.md +0 -10
- data/app/assets/stylesheets/lesli/templates/application.css +0 -23499
- data/app/assets/stylesheets/lesli/templates/public.css +0 -19098
- data/app/assets/stylesheets/lesli/users/confirmations.css +0 -19219
- data/app/assets/stylesheets/lesli/users/passwords.css +0 -19202
- data/app/assets/stylesheets/lesli/users/registrations.css +0 -19594
- data/app/assets/stylesheets/lesli/users/sessions.css +0 -19594
- data/app/controllers/lesli/interfaces/application/authorization.rb +0 -107
- data/app/controllers/lesli/interfaces/application/customization.rb +0 -46
- data/app/controllers/lesli/interfaces/application/logger.rb +0 -134
- data/app/controllers/lesli/interfaces/application/requester.rb +0 -84
- data/app/controllers/lesli/interfaces/application/responder.rb +0 -132
- data/app/controllers/lesli/interfaces/controllers/actions.rb +0 -250
- data/app/controllers/lesli/interfaces/controllers/activities.rb +0 -215
- data/app/controllers/lesli/interfaces/controllers/discussions.rb +0 -270
- data/app/controllers/lesli/interfaces/controllers/files.rb +0 -467
- data/app/controllers/lesli/interfaces/controllers/subscribers.rb +0 -234
- data/app/lib/lesli/system.rb +0 -98
- data/app/models/lesli/cloud_object/action.rb +0 -70
- data/app/models/lesli/cloud_object/activity.rb +0 -311
- data/app/models/lesli/cloud_object/custom_field.rb +0 -158
- data/app/models/lesli/cloud_object/discussion.rb +0 -219
- data/app/models/lesli/cloud_object/subscriber.rb +0 -186
- data/app/operators/lesli/descriptor_privilege_operator.rb +0 -75
- data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +0 -23
- data/app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb +0 -23
- data/app/views/lesli/partials/_application-lesli-icons.html.erb +0 -1
- data/config/initializers/devise.rb +0 -336
- data/db/seed/development/users.rb +0 -52
- data/db/seed/production/accounts.rb +0 -50
- data/db/structure/00000000_people.json +0 -34
- data/db/structure/00000003_actions.json +0 -14
- data/db/structure/00000004_activities.json +0 -20
- data/db/structure/00000005_discussions.json +0 -8
- data/db/structure/00000006_files.json +0 -32
- data/db/structure/00000007_subscribers.json +0 -11
- data/db/structure/00000501_dashboards.json +0 -14
- data/db/structure/00000502_dashboard_components.json +0 -23
- data/db/tables/0010003410_create_user_activities.rb +0 -51
- data/db/tables/0010003710_create_user_codes.rb +0 -43
- data/db/tables/0010004110_create_user_tokens.rb +0 -45
- data/db/tables/0010005610_create_role_activities.rb +0 -50
- data/db/tables/0010009010_create_feedbacks.rb +0 -56
- data/lib/mailer_previews/devise_mailer_preview.rb +0 -49
- data/lib/scss/bulma/loader.scss +0 -92
- data/lib/scss/cloud-objects/discussion.scss +0 -80
- data/lib/scss/cloud-objects/file.scss +0 -138
- data/lib/scss/components/keypad.scss +0 -109
- data/lib/scss/elements/autocomplete.scss +0 -72
- data/lib/scss/elements/card.scss +0 -37
- data/lib/scss/elements/empty.scss +0 -43
- data/lib/scss/elements/file-uploader.scss +0 -74
- data/lib/scss/elements/gallery.scss +0 -98
- data/lib/scss/elements/input-tag.scss +0 -73
- data/lib/scss/elements/loading.scss +0 -63
- data/lib/scss/elements/map.scss +0 -107
- data/lib/scss/elements/navbar.scss +0 -115
- data/lib/scss/elements/table.scss +0 -118
- data/lib/scss/elements/toolbar.scss +0 -66
- data/lib/scss/fonts/families.scss +0 -47
- data/lib/scss/fonts/mdicons.scss +0 -82
- data/lib/scss/fonts/remixicons.scss +0 -2602
- data/lib/scss/helpers/display.scss +0 -44
- data/lib/scss/helpers/tooltip.scss +0 -91
- data/lib/scss/layouts/application-announcements.scss +0 -40
- data/lib/scss/layouts/application-component.scss +0 -39
- data/lib/scss/layouts/application-engines.scss +0 -125
- data/lib/scss/layouts/application-footer.scss +0 -102
- data/lib/scss/layouts/application-header.scss +0 -163
- data/lib/scss/layouts/application-navbar.scss +0 -62
- data/lib/scss/layouts/application-search.scss +0 -71
- data/lib/scss/layouts/application-sidebar.scss +0 -219
- data/lib/scss/overrides/notification.scss +0 -75
- data/lib/scss/overrides/sweetalert.scss +0 -106
- data/lib/scss/pages/devise-simple.scss +0 -89
- data/lib/scss/pages/devise.scss +0 -179
- data/lib/scss/pages/invites.scss +0 -81
- data/lib/scss/panels/panel-announcements.scss +0 -56
- data/lib/scss/panels/panel-notification.scss +0 -67
- data/lib/scss/panels/panel-profile.scss +0 -62
- data/lib/scss/panels/panel-support-ticket.scss +0 -56
- data/lib/scss/panels/panel-tasks.scss +0 -41
- data/lib/scss/settings/variables.scss +0 -148
- data/lib/scss/shared/workflow-status-progress.scss +0 -135
- data/lib/scss/templates/application.scss +0 -156
- data/lib/scss/templates/component.scss +0 -39
- data/lib/scss/templates/dashboards.scss +0 -53
- data/lib/scss/templates/empty.scss +0 -42
- data/lib/scss/templates/pdf.scss +0 -45
- data/lib/scss/templates/public.scss +0 -70
- data/lib/vue/application.js +0 -283
- data/lib/vue/cloudobjects/discussion/content.vue +0 -62
- data/lib/vue/cloudobjects/discussion/element.vue +0 -170
- data/lib/vue/cloudobjects/discussion/filters.vue +0 -108
- data/lib/vue/cloudobjects/discussion/new.vue +0 -134
- data/lib/vue/cloudobjects/discussion.vue +0 -99
- data/lib/vue/cloudobjects/stores/discussion.js +0 -212
- data/lib/vue/layouts/application-announcements.vue +0 -78
- data/lib/vue/layouts/application-component.vue +0 -38
- data/lib/vue/layouts/application-container.vue +0 -48
- data/lib/vue/layouts/application-engines.vue +0 -66
- data/lib/vue/layouts/application-footer.vue +0 -123
- data/lib/vue/layouts/application-header.vue +0 -231
- data/lib/vue/layouts/application-navbar.vue +0 -110
- data/lib/vue/layouts/application-search.vue +0 -86
- data/lib/vue/layouts/application-sidebar.vue +0 -63
- data/lib/vue/pages/errors/app.js +0 -32
- data/lib/vue/pages/invites/app.js +0 -76
- data/lib/vue/pages/mfas/application.js +0 -77
- data/lib/vue/pages/onboarding/application.js +0 -45
- data/lib/vue/pages/onboarding/components/address.vue +0 -120
- data/lib/vue/pages/onboarding/components/buttons.vue +0 -67
- data/lib/vue/pages/onboarding/components/contact.vue +0 -148
- data/lib/vue/pages/onboarding/components/date-time.vue +0 -265
- data/lib/vue/pages/onboarding/components/finish.vue +0 -62
- data/lib/vue/pages/onboarding/components/general-info.vue +0 -93
- data/lib/vue/pages/onboarding/components/indicators.vue +0 -78
- data/lib/vue/pages/onboarding/components/welcome.vue +0 -66
- data/lib/vue/pages/onboarding/show.vue +0 -67
- data/lib/vue/pages/onboarding/store.js +0 -165
- data/lib/vue/pages/otps/application.js +0 -90
- data/lib/vue/pages/passes/application.js +0 -80
- data/lib/vue/pages/websites/application.js +0 -34
- data/lib/vue/panels/panel-announcements.vue +0 -248
- data/lib/vue/panels/panel-bell-notifications.vue +0 -102
- data/lib/vue/panels/panel-files.vue +0 -281
- data/lib/vue/panels/panel-profile.vue +0 -76
- data/lib/vue/panels/panel-support-tickets.vue +0 -161
- data/lib/vue/panels/panel-tasks.vue +0 -124
- data/lib/vue/panels/stores/bell-notifications.js +0 -46
- data/lib/vue/panels/stores/support-tickets.js +0 -103
- data/lib/vue/public.js +0 -83
- data/lib/vue/refactor/shared/cloudobjects/action.vue +0 -193
- data/lib/vue/refactor/shared/cloudobjects/file/grid.vue +0 -215
- data/lib/vue/refactor/shared/cloudobjects/file/list.vue +0 -106
- data/lib/vue/refactor/shared/cloudobjects/file.vue +0 -145
- data/lib/vue/refactor/shared/workflows2/apps/actions/form.vue +0 -232
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/chatroom-form.vue +0 -103
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-clone-form.vue +0 -125
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-file-form.vue +0 -102
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/email-form.vue +0 -190
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/notification-form.vue +0 -124
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/send-cloud-object-file.vue +0 -170
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/task-form.vue +0 -258
- data/lib/vue/refactor/shared/workflows2/apps/actions/index.vue +0 -146
- data/lib/vue/refactor/shared/workflows2/apps/checks/form.vue +0 -200
- data/lib/vue/refactor/shared/workflows2/apps/checks/index.vue +0 -160
- data/lib/vue/refactor/shared/workflows2/apps/index.vue +0 -177
- data/lib/vue/refactor/shared/workflows2/apps/new.vue +0 -97
- data/lib/vue/refactor/shared/workflows2/apps/show.vue +0 -146
- data/lib/vue/refactor/shared/workflows2/components/associations.vue +0 -215
- data/lib/vue/refactor/shared/workflows2/components/chart.vue +0 -91
- data/lib/vue/refactor/shared/workflows2/components/workflow-form.vue +0 -466
- data/lib/vue/refactor/shared/workflows2/components/workflow-status-dropdown.vue +0 -129
- data/lib/vue/refactor/stores/cloudobjects/action.js +0 -181
- data/lib/vue/refactor/stores/cloudobjects/file.js +0 -205
- data/lib/vue/refactor/stores/entities/announcements.js +0 -75
- data/lib/vue/refactor/stores/entities/dashboard.js +0 -251
- data/lib/vue/refactor/stores/entities/workflow.js +0 -185
- data/lib/vue/refactor/stores/panels/announcements.js +0 -153
- data/lib/vue/refactor/stores/panels/notification.js +0 -114
- data/lib/vue/refactor/stores/panels/task.js +0 -66
- data/lib/vue/refactor/stores/panels/tickets.js +0 -129
- data/lib/vue/refactor/stores/role.js +0 -243
- data/lib/vue/refactor/stores/translations.json +0 -60
- data/lib/vue/refactor/stores/users.js +0 -98
- data/lib/vue/shared/dashboards/apps/edit.vue +0 -215
- data/lib/vue/shared/dashboards/apps/index.vue +0 -112
- data/lib/vue/shared/dashboards/apps/new.vue +0 -89
- data/lib/vue/shared/dashboards/apps/show.vue +0 -88
- data/lib/vue/shared/dashboards/components/form.vue +0 -246
- data/lib/vue/shared/services/firebase.js +0 -163
- data/lib/vue/shared/services/translator.js +0 -87
- data/lib/vue/shared/stores/command.js +0 -154
- data/lib/vue/shared/stores/dashboard.js +0 -253
- data/lib/vue/shared/stores/layout.js +0 -61
- data/lib/vue/shared/stores/systemController.js +0 -67
- data/lib/vue/shared/stores/users.js +0 -57
- data/lib/vue/stores/translations.json +0 -167
- data/lib/vue/translation.js +0 -45
- data/lib/webpack/base.js +0 -186
- data/lib/webpack/core.js +0 -91
- data/lib/webpack/engines.js +0 -165
- data/lib/webpack/version.js +0 -41
- data/vendor/bulma/LICENSE +0 -21
- data/vendor/bulma/bulma.sass +0 -10
- data/vendor/bulma/css/bulma-rtl.css +0 -11851
- data/vendor/bulma/css/bulma-rtl.min.css +0 -1
- data/vendor/bulma/css/bulma.css +0 -11851
- data/vendor/bulma/css/bulma.min.css +0 -1
- data/vendor/bulma/sass/base/_all.sass +0 -6
- data/vendor/bulma/sass/base/animations.sass +0 -5
- data/vendor/bulma/sass/base/generic.sass +0 -145
- data/vendor/bulma/sass/base/helpers.sass +0 -1
- data/vendor/bulma/sass/base/minireset.sass +0 -79
- data/vendor/bulma/sass/components/_all.sass +0 -15
- data/vendor/bulma/sass/components/breadcrumb.sass +0 -77
- data/vendor/bulma/sass/components/card.sass +0 -103
- data/vendor/bulma/sass/components/dropdown.sass +0 -83
- data/vendor/bulma/sass/components/level.sass +0 -79
- data/vendor/bulma/sass/components/media.sass +0 -59
- data/vendor/bulma/sass/components/menu.sass +0 -59
- data/vendor/bulma/sass/components/message.sass +0 -101
- data/vendor/bulma/sass/components/modal.sass +0 -117
- data/vendor/bulma/sass/components/navbar.sass +0 -446
- data/vendor/bulma/sass/components/pagination.sass +0 -167
- data/vendor/bulma/sass/components/panel.sass +0 -121
- data/vendor/bulma/sass/components/tabs.sass +0 -176
- data/vendor/bulma/sass/elements/_all.sass +0 -16
- data/vendor/bulma/sass/elements/box.sass +0 -26
- data/vendor/bulma/sass/elements/button.sass +0 -357
- data/vendor/bulma/sass/elements/container.sass +0 -29
- data/vendor/bulma/sass/elements/content.sass +0 -162
- data/vendor/bulma/sass/elements/form.sass +0 -1
- data/vendor/bulma/sass/elements/icon.sass +0 -46
- data/vendor/bulma/sass/elements/image.sass +0 -73
- data/vendor/bulma/sass/elements/notification.sass +0 -52
- data/vendor/bulma/sass/elements/other.sass +0 -31
- data/vendor/bulma/sass/elements/progress.sass +0 -73
- data/vendor/bulma/sass/elements/table.sass +0 -134
- data/vendor/bulma/sass/elements/tag.sass +0 -140
- data/vendor/bulma/sass/elements/title.sass +0 -70
- data/vendor/bulma/sass/form/_all.sass +0 -9
- data/vendor/bulma/sass/form/checkbox-radio.sass +0 -22
- data/vendor/bulma/sass/form/file.sass +0 -184
- data/vendor/bulma/sass/form/input-textarea.sass +0 -66
- data/vendor/bulma/sass/form/select.sass +0 -88
- data/vendor/bulma/sass/form/shared.sass +0 -60
- data/vendor/bulma/sass/form/tools.sass +0 -215
- data/vendor/bulma/sass/grid/_all.sass +0 -5
- data/vendor/bulma/sass/grid/columns.sass +0 -513
- data/vendor/bulma/sass/grid/tiles.sass +0 -36
- data/vendor/bulma/sass/helpers/_all.sass +0 -12
- data/vendor/bulma/sass/helpers/color.sass +0 -39
- data/vendor/bulma/sass/helpers/flexbox.sass +0 -35
- data/vendor/bulma/sass/helpers/float.sass +0 -10
- data/vendor/bulma/sass/helpers/other.sass +0 -14
- data/vendor/bulma/sass/helpers/overflow.sass +0 -2
- data/vendor/bulma/sass/helpers/position.sass +0 -7
- data/vendor/bulma/sass/helpers/spacing.sass +0 -31
- data/vendor/bulma/sass/helpers/typography.sass +0 -103
- data/vendor/bulma/sass/helpers/visibility.sass +0 -122
- data/vendor/bulma/sass/layout/_all.sass +0 -6
- data/vendor/bulma/sass/layout/footer.sass +0 -11
- data/vendor/bulma/sass/layout/hero.sass +0 -153
- data/vendor/bulma/sass/layout/section.sass +0 -17
- data/vendor/bulma/sass/utilities/_all.sass +0 -9
- data/vendor/bulma/sass/utilities/animations.sass +0 -1
- data/vendor/bulma/sass/utilities/controls.sass +0 -49
- data/vendor/bulma/sass/utilities/derived-variables.sass +0 -114
- data/vendor/bulma/sass/utilities/extends.sass +0 -25
- data/vendor/bulma/sass/utilities/functions.sass +0 -135
- data/vendor/bulma/sass/utilities/initial-variables.sass +0 -79
- data/vendor/bulma/sass/utilities/mixins.sass +0 -303
- data/vendor/lesli-css/_index.scss +0 -34
- data/vendor/lesli-css/lesli.scss +0 -51
- data/vendor/lesli-css/license +0 -28
- data/vendor/lesli-css/src/base/fonts.scss +0 -50
- data/vendor/lesli-css/src/base/normalize.scss +0 -118
- data/vendor/lesli-css/src/components/blockquote.scss +0 -61
- data/vendor/lesli-css/src/components/columns.scss +0 -92
- data/vendor/lesli-css/src/components/container.scss +0 -47
- data/vendor/lesli-css/src/components/navigation.scss +0 -59
- data/vendor/lesli-css/src/functions/colors.scss +0 -184
- data/vendor/lesli-css/src/helpers/units.scss +0 -44
- data/vendor/lesli-css/src/mixins/breakpoint.scss +0 -184
- data/vendor/lesli-css/src/mixins/flex.scss +0 -80
- data/vendor/lesli-css/src/mixins/scrollbar.scss +0 -46
- data/vendor/lesli-css/src/settings/variables.scss +0 -26
- data/vendor/lesli-css/tests/base/normalize.spec.scss +0 -125
- data/vendor/lesli-css/tests/functions/colors.spec.scss +0 -117
- data/vendor/lesli-css/tests/mixins/breakpoint.spec.scss +0 -429
- data/vendor/lesli-css/tests/mixins/scrollbar.spec.scss +0 -82
- data/vendor/lesli-css/vendor/normalize.scss +0 -351
- data/vendor/remixicon/License +0 -201
- data/vendor/remixicon/fonts/remixicon.css +0 -2583
- /data/{vendor/lesli-css/src/components/grid.scss → app/assets/stylesheets/lesli/application.css} +0 -0
- /data/db/migrate/v1/{0010001010_create_lesli_account_details.rb → 0000110210_create_lesli_account_details.rb} +0 -0
- /data/db/structure/{00000008_custom_fields.json → 00000300_custom_fields.json} +0 -0
- /data/lib/assets/javascripts/lesli/{i18n.js → i18n_js} +0 -0
data/lib/vue/application.js
DELETED
@@ -1,283 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Lesli
|
3
|
-
|
4
|
-
Copyright (c) 2023, Lesli Technologies, S. A.
|
5
|
-
|
6
|
-
This program is free software: you can redistribute it and/or modify
|
7
|
-
it under the terms of the GNU General Public License as published by
|
8
|
-
the Free Software Foundation, either version 3 of the License, or
|
9
|
-
(at your option) any later version.
|
10
|
-
|
11
|
-
This program is distributed in the hope that it will be useful,
|
12
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
-
GNU General Public License for more details.
|
15
|
-
|
16
|
-
You should have received a copy of the GNU General Public License
|
17
|
-
along with this program. If not, see http://www.gnu.org/licenses/.
|
18
|
-
|
19
|
-
Lesli · Ruby on Rails SaaS Development Framework.
|
20
|
-
|
21
|
-
Made with ♥ by https://www.lesli.tech
|
22
|
-
Building a better future, one line of code at a time.
|
23
|
-
|
24
|
-
@contact hello@lesli.tech
|
25
|
-
@website https://www.lesli.tech
|
26
|
-
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
27
|
-
|
28
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
29
|
-
// ·
|
30
|
-
*/
|
31
|
-
|
32
|
-
|
33
|
-
// · Loading core framework and libraries
|
34
|
-
import { createPinia } from "pinia"
|
35
|
-
import { createApp, nextTick } from "vue"
|
36
|
-
import { createWebHistory, createRouter } from "vue-router";
|
37
|
-
import { useLesliDebug } from "lesli-vue/composables"
|
38
|
-
const debug = useLesliDebug()
|
39
|
-
|
40
|
-
|
41
|
-
// custom console.log implementation for Lesli
|
42
|
-
window.debug = debug
|
43
|
-
|
44
|
-
|
45
|
-
// · Loading application layout components
|
46
|
-
import lesliApplicationHeader from "Lesli/vue/layouts/application-header.vue"
|
47
|
-
import lesliApplicationEngines from "Lesli/vue/layouts/application-engines.vue"
|
48
|
-
import lesliApplicationContainer from "Lesli/vue/layouts/application-container.vue"
|
49
|
-
import lesliApplicationComponent from "Lesli/vue/layouts/application-component.vue"
|
50
|
-
|
51
|
-
|
52
|
-
/*
|
53
|
-
import componentApplicationFooter from "Lesli/vue/layouts/application-footer.vue"
|
54
|
-
import componentApplicationSearch from "Lesli/vue/layouts/application-search.vue"
|
55
|
-
import componentApplicationSidebar from "Lesli/vue/layouts/application-sidebar.vue"
|
56
|
-
import componentApplicationAnnouncement from "Lesli/vue/layouts/application-announcements.vue"
|
57
|
-
import componentApplicationPanelTasks from "Lesli/vue/panels/panel-tasks.vue"
|
58
|
-
import componentApplicationPanelFiles from "Lesli/vue/panels/panel-files.vue"
|
59
|
-
import componentApplicationPanelProfile from "Lesli/vue/panels/panel-profile.vue"
|
60
|
-
import componentApplicationPanelNotifications from "Lesli/vue/panels/panel-notifications.vue"
|
61
|
-
import componentApplicationPanelAnnouncements from "Lesli/vue/panels/panel-announcements.vue"
|
62
|
-
*/
|
63
|
-
|
64
|
-
import componentApplicationPanelSupportTickets from "Lesli/vue/panels/panel-support-tickets.vue"
|
65
|
-
import componentApplicationPanelBellNotifications from "Lesli/vue/panels/panel-bell-notifications.vue"
|
66
|
-
|
67
|
-
|
68
|
-
// · Loading global layout components
|
69
|
-
import {
|
70
|
-
// lesliElementAutocomplete,
|
71
|
-
LesliAvatar,
|
72
|
-
LesliButton,
|
73
|
-
// lesliElementButtonLink,
|
74
|
-
LesliCalendar,
|
75
|
-
LesliCard,
|
76
|
-
// lesliElementCollapse,
|
77
|
-
LesliColumn,
|
78
|
-
LesliColumns,
|
79
|
-
LesliControl,
|
80
|
-
// lesliElementDropdown,
|
81
|
-
LesliEmpty,
|
82
|
-
LesliForm,
|
83
|
-
LesliHeader,
|
84
|
-
// lesliElementIcon,
|
85
|
-
// lesliElementInput,
|
86
|
-
// lesliElementInputTag,
|
87
|
-
LesliLink,
|
88
|
-
LesliLoading,
|
89
|
-
// lesliElementMap,
|
90
|
-
// lesliElementNavbar,
|
91
|
-
// lesliElementFileUploader,
|
92
|
-
// lesliElementNavigationList,
|
93
|
-
LesliPagination,
|
94
|
-
LesliPanel,
|
95
|
-
LesliSelect,
|
96
|
-
LesliTable,
|
97
|
-
LesliTabs,
|
98
|
-
LesliTabItem,
|
99
|
-
LesliToggle,
|
100
|
-
LesliToolbar
|
101
|
-
} from "lesli-vue/elements"
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
// · Loading vue/pinia plugins as composables
|
106
|
-
import {
|
107
|
-
useLesliMsg,
|
108
|
-
useLesliUrl,
|
109
|
-
useLesliDate,
|
110
|
-
useLesliHttp,
|
111
|
-
useLesliUtils,
|
112
|
-
useLesliDialog
|
113
|
-
} from "lesli-vue/composables"
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
// · engine: Engine name
|
119
|
-
// · routes: Array of routes for Vue
|
120
|
-
export default (engine, routes=[]) => {
|
121
|
-
|
122
|
-
// · Base path for the engines/core url's
|
123
|
-
const base_path = "/";
|
124
|
-
|
125
|
-
|
126
|
-
// · Vue app configuration container
|
127
|
-
let appbuilder = { }
|
128
|
-
|
129
|
-
|
130
|
-
// · Loading Lesli local layout components
|
131
|
-
appbuilder["components"] = {
|
132
|
-
"lesli-application-header": lesliApplicationHeader,
|
133
|
-
"lesli-application-engines": lesliApplicationEngines,
|
134
|
-
"application-panel-support-tickets": componentApplicationPanelSupportTickets,
|
135
|
-
"application-panel-bell-notifications": componentApplicationPanelBellNotifications
|
136
|
-
/*
|
137
|
-
"application-component-footer": componentApplicationFooter,
|
138
|
-
"application-component-search": componentApplicationSearch,
|
139
|
-
"application-component-sidebar": componentApplicationSidebar,
|
140
|
-
"application-component-announcements": componentApplicationAnnouncement,
|
141
|
-
"application-component-panel-tasks": componentApplicationPanelTasks,
|
142
|
-
"application-component-panel-files": componentApplicationPanelFiles,
|
143
|
-
"application-component-panel-profile": componentApplicationPanelProfile,
|
144
|
-
"application-component-panel-announcements": componentApplicationPanelAnnouncements
|
145
|
-
*/
|
146
|
-
}
|
147
|
-
|
148
|
-
|
149
|
-
// · Use pinia as app state management
|
150
|
-
const pinia = createPinia()
|
151
|
-
|
152
|
-
|
153
|
-
// · Loading pinia handmade plugins
|
154
|
-
pinia.use(() => ({ msg: useLesliMsg() }))
|
155
|
-
pinia.use(() => ({ url: useLesliUrl() }))
|
156
|
-
pinia.use(() => ({ http: useLesliHttp() }))
|
157
|
-
pinia.use(() => ({ date: useLesliDate() }))
|
158
|
-
pinia.use(() => ({ utils: useLesliUtils() }))
|
159
|
-
pinia.use(() => ({ dialog: useLesliDialog() }))
|
160
|
-
|
161
|
-
|
162
|
-
// · Global vue router
|
163
|
-
const router = createRouter({
|
164
|
-
history: createWebHistory(base_path),
|
165
|
-
routes: routes.map(route => {
|
166
|
-
// concat the base path to all routes
|
167
|
-
// this allow to use the rails route constants
|
168
|
-
// example: projects_path is equal to /crm/projects
|
169
|
-
route.path = base_path.concat(lesli.engine_paths[engine]).concat(route.path)
|
170
|
-
return route
|
171
|
-
})
|
172
|
-
})
|
173
|
-
|
174
|
-
|
175
|
-
// ·
|
176
|
-
router.afterEach((to, from) => {
|
177
|
-
|
178
|
-
// Use next tick to handle router history correctly
|
179
|
-
nextTick(() => {
|
180
|
-
|
181
|
-
// update the page title according to the working app
|
182
|
-
document.title = `${lesli?.company?.name} · ${(to.path.substring(1) || 'Dashboard')}`;
|
183
|
-
|
184
|
-
// default class for the specific instance
|
185
|
-
document.body.className = lesli?.instance
|
186
|
-
|
187
|
-
// using the path as class id for the body
|
188
|
-
// the class will be: "engine-controller"
|
189
|
-
var cssclass = to.path
|
190
|
-
.substring(1) // remove the first slash
|
191
|
-
.split("/") // create an array splited by slashes
|
192
|
-
.filter(e => e != "") // remove empty strings
|
193
|
-
.slice(0, 2) // get the first two items of the array
|
194
|
-
.join("-"); // create a string joined by dashes
|
195
|
-
|
196
|
-
// add the css class to the body
|
197
|
-
if (cssclass) { document.body.classList.add("lesli-".concat(cssclass)) }
|
198
|
-
|
199
|
-
})
|
200
|
-
})
|
201
|
-
|
202
|
-
|
203
|
-
// · Create a beautiful Vue 3 app
|
204
|
-
const application = createApp(appbuilder)
|
205
|
-
|
206
|
-
|
207
|
-
// · Provide composables to make them available in all the components
|
208
|
-
application.provide('msg', useLesliMsg())
|
209
|
-
application.provide('url', useLesliUrl())
|
210
|
-
application.provide('http', useLesliHttp())
|
211
|
-
application.provide('date', useLesliDate()())
|
212
|
-
application.provide('utils', useLesliUtils())
|
213
|
-
application.provide('dialog', useLesliDialog())
|
214
|
-
|
215
|
-
|
216
|
-
// · Extending vue
|
217
|
-
application.use(pinia)
|
218
|
-
application.use(router)
|
219
|
-
|
220
|
-
|
221
|
-
// · Register global layouts
|
222
|
-
application.component("lesli-application-container", lesliApplicationContainer)
|
223
|
-
application.component("lesli-application-component", lesliApplicationComponent)
|
224
|
-
|
225
|
-
|
226
|
-
// · Loading Lesli handmade global components
|
227
|
-
// application.component("lesli-icon", lesliElementIcon)
|
228
|
-
application.component("lesli-avatar", LesliAvatar)
|
229
|
-
application.component("lesli-empty", LesliEmpty)
|
230
|
-
application.component("lesli-header", LesliHeader)
|
231
|
-
application.component("lesli-select", LesliSelect)
|
232
|
-
application.component("lesli-toolbar", LesliToolbar)
|
233
|
-
application.component("lesli-loading", LesliLoading)
|
234
|
-
application.component("lesli-table", LesliTable)
|
235
|
-
// application.component("lesli-collapse", lesliElementCollapse)
|
236
|
-
application.component("lesli-column", LesliColumn)
|
237
|
-
application.component("lesli-columns", LesliColumns)
|
238
|
-
application.component("lesli-card", LesliCard)
|
239
|
-
application.component("lesli-control", LesliControl)
|
240
|
-
application.component("lesli-tabs", LesliTabs)
|
241
|
-
application.component("lesli-tab-item", LesliTabItem)
|
242
|
-
application.component("lesli-panel", LesliPanel)
|
243
|
-
application.component("lesli-button", LesliButton)
|
244
|
-
// application.component("lesli-button-link", lesliElementButtonLink)
|
245
|
-
application.component("lesli-calendar", LesliCalendar)
|
246
|
-
// application.component("lesli-input-tag", lesliElementInputTag)
|
247
|
-
// application.component("lesli-file-uploader", lesliElementFileUploader)
|
248
|
-
// application.component("lesli-navigation-list", lesliElementNavigationList)
|
249
|
-
|
250
|
-
application.component("lesli-toggle", LesliToggle)
|
251
|
-
// application.component("lesli-dropdown", lesliElementDropdown)
|
252
|
-
// application.component("lesli-map", lesliElementMap)
|
253
|
-
// //application.component("lesli-gallery", lesliElementGallery)
|
254
|
-
// application.component("lesli-autocomplete", lesliElementAutocomplete)
|
255
|
-
application.component("lesli-pagination", LesliPagination)
|
256
|
-
application.component("lesli-form", LesliForm)
|
257
|
-
// application.component("lesli-input", lesliElementInput)
|
258
|
-
application.component("lesli-link", LesliLink)
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
// · Mount app once DOM is ready
|
263
|
-
document.addEventListener("DOMContentLoaded", () => {
|
264
|
-
|
265
|
-
// · mount the app on the main html tag
|
266
|
-
application.mount("#lesli-application")
|
267
|
-
|
268
|
-
// · development message about vue app loaded
|
269
|
-
if (lesli_application_development) {
|
270
|
-
debug.info(`${engine} --> ${lesli.engine_paths[engine]}`, "vue/application")
|
271
|
-
}
|
272
|
-
|
273
|
-
// · console production message
|
274
|
-
if (lesli_application_production) {
|
275
|
-
console.clear()
|
276
|
-
debug.lesli_message_warning(lesli?.company?.name)
|
277
|
-
debug.info("Lesli application", lesli_application_version)
|
278
|
-
}
|
279
|
-
|
280
|
-
});
|
281
|
-
|
282
|
-
return application;
|
283
|
-
}
|
@@ -1,62 +0,0 @@
|
|
1
|
-
<script setup>
|
2
|
-
/*
|
3
|
-
|
4
|
-
Lesli
|
5
|
-
|
6
|
-
Copyright (c) 2023, Lesli Technologies, S. A.
|
7
|
-
|
8
|
-
This program is free software: you can redistribute it and/or modify
|
9
|
-
it under the terms of the GNU General Public License as published by
|
10
|
-
the Free Software Foundation, either version 3 of the License, or
|
11
|
-
(at your option) any later version.
|
12
|
-
|
13
|
-
This program is distributed in the hope that it will be useful,
|
14
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
-
GNU General Public License for more details.
|
17
|
-
|
18
|
-
You should have received a copy of the GNU General Public License
|
19
|
-
along with this program. If not, see http://www.gnu.org/licenses/.
|
20
|
-
|
21
|
-
Lesli · Ruby on Rails SaaS Development Framework.
|
22
|
-
|
23
|
-
Made with ♥ by LesliTech
|
24
|
-
Building a better future, one line of code at a time.
|
25
|
-
|
26
|
-
@contact hello@lesli.tech
|
27
|
-
@website https://www.lesli.tech
|
28
|
-
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
29
|
-
|
30
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
31
|
-
// ·
|
32
|
-
*/
|
33
|
-
|
34
|
-
|
35
|
-
// · import store
|
36
|
-
import { useCloudObjectDiscussionStore } from "../stores/discussion.js"
|
37
|
-
|
38
|
-
|
39
|
-
// ·
|
40
|
-
import DiscussionElement from "./element.vue"
|
41
|
-
|
42
|
-
|
43
|
-
// ·
|
44
|
-
const discussionStore = useCloudObjectDiscussionStore()
|
45
|
-
|
46
|
-
</script>
|
47
|
-
<template>
|
48
|
-
<div class="discussion-content mt-6">
|
49
|
-
<discussion-element v-for="discussion in discussionStore.mergedArray" :key="discussion.id" :discussion="discussion">
|
50
|
-
<template v-slot:replies>
|
51
|
-
<!-- Discussion responses -->
|
52
|
-
<div class="pl-2 pb-4" v-if="discussion.type === 'discussion'">
|
53
|
-
<discussion-element v-for="response in discussion.responses" :key="response.id" :discussion="response" is-reply></discussion-element>
|
54
|
-
</div>
|
55
|
-
</template>
|
56
|
-
</discussion-element>
|
57
|
-
<lesli-pagination
|
58
|
-
:pagination="discussionStore.pagination"
|
59
|
-
@paginate="discussionStore.paginateDiscussions">
|
60
|
-
</lesli-pagination>
|
61
|
-
</div>
|
62
|
-
</template>
|
@@ -1,170 +0,0 @@
|
|
1
|
-
<script setup>
|
2
|
-
/*
|
3
|
-
|
4
|
-
Lesli
|
5
|
-
|
6
|
-
Copyright (c) 2023, Lesli Technologies, S. A.
|
7
|
-
|
8
|
-
This program is free software: you can redistribute it and/or modify
|
9
|
-
it under the terms of the GNU General Public License as published by
|
10
|
-
the Free Software Foundation, either version 3 of the License, or
|
11
|
-
(at your option) any later version.
|
12
|
-
|
13
|
-
This program is distributed in the hope that it will be useful,
|
14
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
-
GNU General Public License for more details.
|
17
|
-
|
18
|
-
You should have received a copy of the GNU General Public License
|
19
|
-
along with this program. If not, see http://www.gnu.org/licenses/.
|
20
|
-
|
21
|
-
Lesli · Ruby on Rails SaaS Development Framework.
|
22
|
-
|
23
|
-
Made with ♥ by LesliTech
|
24
|
-
Building a better future, one line of code at a time.
|
25
|
-
|
26
|
-
@contact hello@lesli.tech
|
27
|
-
@website https://www.lesli.tech
|
28
|
-
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
29
|
-
|
30
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
31
|
-
// ·
|
32
|
-
*/
|
33
|
-
|
34
|
-
|
35
|
-
// · import vue tools
|
36
|
-
import { computed, ref } from "vue"
|
37
|
-
|
38
|
-
|
39
|
-
// · import components
|
40
|
-
import NewComment from "./new.vue"
|
41
|
-
|
42
|
-
|
43
|
-
// · import store
|
44
|
-
import { useCloudObjectDiscussionStore } from "../stores/discussion.js"
|
45
|
-
|
46
|
-
|
47
|
-
// · implement store
|
48
|
-
const discussionStore = useCloudObjectDiscussionStore()
|
49
|
-
|
50
|
-
|
51
|
-
// ·
|
52
|
-
const props = defineProps({
|
53
|
-
// · the discussion or activity log that will be displayed.
|
54
|
-
discussion: {
|
55
|
-
type: Object,
|
56
|
-
required: true,
|
57
|
-
},
|
58
|
-
isReply: {
|
59
|
-
type: Boolean,
|
60
|
-
default: false,
|
61
|
-
},
|
62
|
-
});
|
63
|
-
|
64
|
-
|
65
|
-
// ·
|
66
|
-
const translations = {
|
67
|
-
core: {
|
68
|
-
shared: I18n.t("core.shared"),
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
|
73
|
-
// · this variable is used to show the reply form.
|
74
|
-
const isReplyActive = ref(false)
|
75
|
-
|
76
|
-
|
77
|
-
// · computed property that returns the discussion or activity log content that will be displayed in the component's element.
|
78
|
-
const getDiscussionContent = computed(() => {
|
79
|
-
|
80
|
-
if (props.discussion.type === 'activityLog' && props.discussion?.category == 'action_create_notification') return `${props.discussion.description}`
|
81
|
-
|
82
|
-
if (props.discussion.type === 'activityLog') return `${props.discussion.field_name}: (${props.discussion.value_from}) - (${props.discussion.value_to})`
|
83
|
-
|
84
|
-
if (props.discussion.type === 'discussion' || props.isReply) return props.discussion.content
|
85
|
-
})
|
86
|
-
|
87
|
-
|
88
|
-
// ·
|
89
|
-
const onDeleteDiscussion = () => {
|
90
|
-
discussionStore.deleteDiscussion(props.discussion.id)
|
91
|
-
}
|
92
|
-
|
93
|
-
|
94
|
-
// ·
|
95
|
-
const showReply = () => {
|
96
|
-
isReplyActive.value = !isReplyActive.value
|
97
|
-
}
|
98
|
-
|
99
|
-
/*
|
100
|
-
<div class="">
|
101
|
-
<div class="">
|
102
|
-
<div class="avatar mr-4">
|
103
|
-
<lesli-avatar :name="props.discussion.user_name">
|
104
|
-
</lesli-avatar>
|
105
|
-
</div>
|
106
|
-
<div class="info mt-2">
|
107
|
-
<!-- Discussion's header -->
|
108
|
-
<p>
|
109
|
-
<span class="has-text-weight-bold">{{ props.discussion.user_name }}</span>
|
110
|
-
<span v-if="props.discussion.type !== 'discussion'" class="ml-4">{{ props.discussion.category }}</span>
|
111
|
-
</p>
|
112
|
-
|
113
|
-
|
114
|
-
<!-- Discussion's content -->
|
115
|
-
<p class="mt-2 has-text-weight-bold">{{ getDiscussionContent }}</p>
|
116
|
-
|
117
|
-
<!-- Discussion's footer -->
|
118
|
-
<div class="mt-4 pb-2 is-flex is-align-items-center">
|
119
|
-
<span class="mr-6">{{ props.discussion.created_at }}</span>
|
120
|
-
<template v-if="props.discussion.type === 'discussion' || props.isReply">
|
121
|
-
<button @click="onDeleteDiscussion" v-if="discussionStore.currentUserId === discussion.users_id" class="is-transparent button mr-4 has-text-weight-bold has-text-danger">
|
122
|
-
{{ translations.core.shared.view_btn_delete }} Delete
|
123
|
-
</button>
|
124
|
-
<button @click="showReply" v-if="!props.isReply" class="is-transparent button has-text-weight-bold has-text-primary">
|
125
|
-
{{ translations.core.shared.view_btn_reply }} Reply
|
126
|
-
</button>
|
127
|
-
</template>
|
128
|
-
</div>
|
129
|
-
|
130
|
-
<!-- Reply component to answer a discussion -->
|
131
|
-
<new-comment is-reply v-if="isReplyActive" :main-discussion="props.discussion" @on-add-comment="showReply"></new-comment>
|
132
|
-
|
133
|
-
<!-- Replies are defined in the content component -->
|
134
|
-
<slot name="replies"></slot>
|
135
|
-
</div>
|
136
|
-
</div>
|
137
|
-
</div>
|
138
|
-
*/
|
139
|
-
|
140
|
-
</script>
|
141
|
-
<template>
|
142
|
-
<div class="media">
|
143
|
-
<div class="media-left">
|
144
|
-
<lesli-avatar :name="props.discussion.user_name">
|
145
|
-
</lesli-avatar>
|
146
|
-
</div>
|
147
|
-
<div class="media-content">
|
148
|
-
<div class="content">
|
149
|
-
<div class="mb-4">
|
150
|
-
<strong>{{ props.discussion.user_name }}</strong>
|
151
|
-
<small>{{ props.discussion.created_at_date }}</small>
|
152
|
-
<br />
|
153
|
-
{{ getDiscussionContent }}
|
154
|
-
</div>
|
155
|
-
<div class="field">
|
156
|
-
<div class="control">
|
157
|
-
<template v-if="props.discussion.type === 'discussion' || props.isReply">
|
158
|
-
<button @click="onDeleteDiscussion" v-if="discussionStore.currentUserId === discussion.users_id" class="is-transparent button mr-4 has-text-weight-bold has-text-danger">
|
159
|
-
{{ translations.core.shared.view_btn_delete }} Delete
|
160
|
-
</button>
|
161
|
-
<lesli-button small icon="reply" @click="showReply" v-if="!props.isReply">
|
162
|
-
{{ translations.core.shared.view_btn_reply }} Reply
|
163
|
-
</lesli-button>
|
164
|
-
</template>
|
165
|
-
</div>
|
166
|
-
</div>
|
167
|
-
</div>
|
168
|
-
</div>
|
169
|
-
</div>
|
170
|
-
</template>
|
@@ -1,108 +0,0 @@
|
|
1
|
-
<script setup>
|
2
|
-
/*
|
3
|
-
|
4
|
-
Lesli
|
5
|
-
|
6
|
-
Copyright (c) 2023, Lesli Technologies, S. A.
|
7
|
-
|
8
|
-
This program is free software: you can redistribute it and/or modify
|
9
|
-
it under the terms of the GNU General Public License as published by
|
10
|
-
the Free Software Foundation, either version 3 of the License, or
|
11
|
-
(at your option) any later version.
|
12
|
-
|
13
|
-
This program is distributed in the hope that it will be useful,
|
14
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
-
GNU General Public License for more details.
|
17
|
-
|
18
|
-
You should have received a copy of the GNU General Public License
|
19
|
-
along with this program. If not, see http://www.gnu.org/licenses/.
|
20
|
-
|
21
|
-
Lesli · Your Smart Business Assistant.
|
22
|
-
|
23
|
-
Made with ♥ by https://www.lesli.tech
|
24
|
-
Building a better future, one line of code at a time.
|
25
|
-
|
26
|
-
@contact hello@lesli.tech
|
27
|
-
@website https://lesli.tech
|
28
|
-
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
29
|
-
|
30
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
31
|
-
// ·
|
32
|
-
|
33
|
-
*/
|
34
|
-
|
35
|
-
|
36
|
-
// · import vue tools
|
37
|
-
import { watch } from "vue"
|
38
|
-
|
39
|
-
// · import store
|
40
|
-
import { useCloudObjectDiscussionStore } from "../stores/discussion.js"
|
41
|
-
|
42
|
-
// · defining translations
|
43
|
-
const translations = {
|
44
|
-
core: {
|
45
|
-
shared: I18n.t("core.shared"),
|
46
|
-
}
|
47
|
-
}
|
48
|
-
|
49
|
-
// · implement store
|
50
|
-
const discussionStore = useCloudObjectDiscussionStore()
|
51
|
-
|
52
|
-
watch(discussionStore.filters, (filters) => {
|
53
|
-
|
54
|
-
// · if the toolbar text is not empty, and the filters changed then search
|
55
|
-
if (discussionStore.stringToFind) {
|
56
|
-
discussionStore.search(discussionStore.stringToFind)
|
57
|
-
} else {
|
58
|
-
// · if the toolbar text is empty, fetch with the new filters
|
59
|
-
if (filters.showDiscussion) discussionStore.fetchDiscussions()
|
60
|
-
if (filters.showActivityLog) discussionStore.fetchActivityLogs()
|
61
|
-
}
|
62
|
-
|
63
|
-
// · if showDiscussion filter is false, then clear the discussions
|
64
|
-
if (!filters.showDiscussion) discussionStore.discussions = []
|
65
|
-
|
66
|
-
// · if showActivityLog filter is false, then clear the activity logs
|
67
|
-
if (!filters.showActivityLog) discussionStore.activityLogs = []
|
68
|
-
})
|
69
|
-
</script>
|
70
|
-
|
71
|
-
<template>
|
72
|
-
<div class="discussion-filters mt-2">
|
73
|
-
|
74
|
-
<!-- Discussion filter -->
|
75
|
-
<div class="discussion-filters-item">
|
76
|
-
<p class="mb-2">{{ translations.core.shared.view_text_discussions }}</p>
|
77
|
-
<lesli-toggle v-model="discussionStore.filters.showDiscussion"/>
|
78
|
-
</div>
|
79
|
-
|
80
|
-
<!-- Activity logs filter -->
|
81
|
-
<div class="discussion-filters-item">
|
82
|
-
<p class="mb-2">{{ translations.core.shared.view_text_activity_logs }}</p>
|
83
|
-
<lesli-toggle v-model="discussionStore.filters.showActivityLog"/>
|
84
|
-
</div>
|
85
|
-
|
86
|
-
<div class="discussion-filters-item mt-5">
|
87
|
-
<lesli-select
|
88
|
-
:options="[
|
89
|
-
{
|
90
|
-
label: '10',
|
91
|
-
value: 10
|
92
|
-
}, {
|
93
|
-
label: '15',
|
94
|
-
value: 15
|
95
|
-
}, {
|
96
|
-
label: '30',
|
97
|
-
value: 30
|
98
|
-
}, {
|
99
|
-
label: '50',
|
100
|
-
value: 50
|
101
|
-
},
|
102
|
-
]"
|
103
|
-
v-model="discussionStore.filters.per_page"
|
104
|
-
@change="discussionStore.fetchDiscussions()">
|
105
|
-
</lesli-select>
|
106
|
-
</div>
|
107
|
-
</div>
|
108
|
-
</template>
|