lesli 5.0.4 → 5.0.5

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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/lesli/brand/app-logo2.svg +52 -0
  3. data/app/assets/javascripts/lesli/users/passwords.js +3 -3
  4. data/app/assets/javascripts/lesli/users/registrations.js +3 -3
  5. data/app/assets/javascripts/lesli/users/sessions.js +3 -3
  6. data/app/controllers/lesli/application_controller.rb +3 -3
  7. data/app/controllers/lesli/application_lesli_controller.rb +2 -2
  8. data/app/controllers/lesli/interfaces/application/authorization.rb +1 -1
  9. data/app/controllers/lesli/interfaces/application/requester.rb +1 -1
  10. data/app/controllers/lesli/shared/dashboards_controller.rb +308 -0
  11. data/app/controllers/users/confirmations_controller.rb +1 -1
  12. data/app/controllers/users/passwords_controller.rb +7 -10
  13. data/app/helpers/lesli/general_helper.rb +1 -1
  14. data/app/helpers/lesli/navigation_helper.rb +17 -16
  15. data/app/lib/lesli/system.rb +2 -1
  16. data/app/mailers/lesli/devise_mailer.rb +1 -1
  17. data/app/models/concerns/account_initializer.rb +9 -0
  18. data/app/models/lesli/account.rb +1 -0
  19. data/app/models/lesli/application_lesli_record.rb +1 -1
  20. data/app/models/lesli/shared/dashboard.rb +162 -0
  21. data/app/models/lesli/system_controller.rb +1 -0
  22. data/app/operators/lesli/controller_operator.rb +148 -0
  23. data/app/views/devise/passwords/new.html.erb +1 -1
  24. data/app/views/lesli/partials/_application-lesli-engines.html.erb +1 -1
  25. data/app/views/lesli/partials/_application-lesli-icons.html.erb +1 -1
  26. data/config/locales/translations.en.yml +17 -0
  27. data/config/locales/translations.es.yml +17 -0
  28. data/config/routes.rb +4 -2
  29. data/db/seed/development/users.rb +0 -1
  30. data/db/seeds.rb +16 -29
  31. data/lib/lesli/version.rb +1 -1
  32. data/lib/mailer_previews/devise_mailer_preview.rb +7 -0
  33. data/lib/sass/lesli/layouts/application-navbar.scss +1 -1
  34. data/lib/tasks/lesli/controllers.rake +1 -91
  35. data/lib/tasks/lesli/db.rake +36 -6
  36. data/lib/tasks/lesli/dev.rake +66 -0
  37. data/lib/tasks/lesli/engine.rake +59 -0
  38. data/lib/tasks/lesli/{role.rake → privileges.rake} +3 -3
  39. data/lib/tasks/lesli_tasks.rake +5 -0
  40. data/lib/vue/application.js +2 -1
  41. data/lib/vue/devise/passwords.js +8 -8
  42. data/lib/vue/devise/registrations.js +2 -2
  43. data/lib/vue/devise/sessions.js +11 -6
  44. data/lib/vue/layouts/application-header.vue +6 -1
  45. data/lib/vue/shared/dashboards/apps/edit.vue +215 -0
  46. data/lib/vue/{apps → shared}/dashboards/apps/index.vue +3 -5
  47. data/lib/vue/{apps → shared}/dashboards/apps/show.vue +26 -16
  48. data/lib/vue/{apps → shared}/dashboards/components/form.vue +31 -43
  49. data/lib/vue/shared/stores/dashboard.js +251 -0
  50. data/lib/vue/stores/translations.json +24 -72
  51. data/lib/vue/stores/{user.js → users.js} +1 -1
  52. data/lib/webpack/base.js +3 -2
  53. data/readme.md +1 -1
  54. metadata +46 -52
  55. data/lib/vue/apps/dashboards/apps/edit.vue +0 -105
  56. data/lib/vue/apps/dashboards/components/preview.vue +0 -172
  57. /data/app/assets/icons/lesli/{cloud-vault.svg → cloud-guard.svg} +0 -0
  58. /data/lib/vue/{apps → shared}/cloudobjects/action.vue +0 -0
  59. /data/lib/vue/{apps → shared}/cloudobjects/discussion/content.vue +0 -0
  60. /data/lib/vue/{apps → shared}/cloudobjects/discussion/element.vue +0 -0
  61. /data/lib/vue/{apps → shared}/cloudobjects/discussion/filters.vue +0 -0
  62. /data/lib/vue/{apps → shared}/cloudobjects/discussion/new.vue +0 -0
  63. /data/lib/vue/{apps → shared}/cloudobjects/discussion.vue +0 -0
  64. /data/lib/vue/{apps → shared}/cloudobjects/file/grid.vue +0 -0
  65. /data/lib/vue/{apps → shared}/cloudobjects/file/list.vue +0 -0
  66. /data/lib/vue/{apps → shared}/cloudobjects/file.vue +0 -0
  67. /data/lib/vue/{apps → shared}/dashboards/apps/new.vue +0 -0
  68. /data/lib/vue/{apps → shared}/workflows2/apps/actions/form.vue +0 -0
  69. /data/lib/vue/{apps → shared}/workflows2/apps/actions/forms/chatroom-form.vue +0 -0
  70. /data/lib/vue/{apps → shared}/workflows2/apps/actions/forms/cloud-object-clone-form.vue +0 -0
  71. /data/lib/vue/{apps → shared}/workflows2/apps/actions/forms/cloud-object-file-form.vue +0 -0
  72. /data/lib/vue/{apps → shared}/workflows2/apps/actions/forms/email-form.vue +0 -0
  73. /data/lib/vue/{apps → shared}/workflows2/apps/actions/forms/notification-form.vue +0 -0
  74. /data/lib/vue/{apps → shared}/workflows2/apps/actions/forms/send-cloud-object-file.vue +0 -0
  75. /data/lib/vue/{apps → shared}/workflows2/apps/actions/forms/task-form.vue +0 -0
  76. /data/lib/vue/{apps → shared}/workflows2/apps/actions/index.vue +0 -0
  77. /data/lib/vue/{apps → shared}/workflows2/apps/checks/form.vue +0 -0
  78. /data/lib/vue/{apps → shared}/workflows2/apps/checks/index.vue +0 -0
  79. /data/lib/vue/{apps → shared}/workflows2/apps/index.vue +0 -0
  80. /data/lib/vue/{apps → shared}/workflows2/apps/new.vue +0 -0
  81. /data/lib/vue/{apps → shared}/workflows2/apps/show.vue +0 -0
  82. /data/lib/vue/{apps → shared}/workflows2/components/associations.vue +0 -0
  83. /data/lib/vue/{apps → shared}/workflows2/components/chart.vue +0 -0
  84. /data/lib/vue/{apps → shared}/workflows2/components/workflow-form.vue +0 -0
  85. /data/lib/vue/{apps → shared}/workflows2/components/workflow-status-dropdown.vue +0 -0
data/db/seeds.rb CHANGED
@@ -31,32 +31,19 @@ Building a better future, one line of code at a time.
31
31
  =end
32
32
 
33
33
 
34
- # including tools for seeders
35
- load Lesli::Engine.root.join("db", "seed", "tools.rb")
36
-
37
-
38
- # loading core seeders
39
- load Lesli::Engine.root.join("db", "seed", "#{Rails.env.downcase}.rb")
40
-
41
-
42
- # loading engine seeders
43
- # Rails.application.config.lesli.dig(:engines).each do |engine|
44
-
45
- # # every instance (builder module) is loaded into the platform using the same name of the engine
46
- # instance_klass = engine[:name].safe_constantize
47
-
48
- # L2.msg(
49
- # "Loading seeds for #{instance_klass} environment",
50
- # "Version: #{instance_klass::VERSION} - Build: #{instance_klass::BUILD}"
51
- # )
52
-
53
- # # dynamic load seeds from installed engines
54
- # instance_klass::Engine.load_seed
55
- # end
56
-
57
-
58
- # # exec maintenance tasks
59
- #Rake.application.invoke_task("app:maintenance")
60
-
61
-
62
- #L2.cow("Seed process completed!")
34
+ # IMPORTANT:
35
+ # Seed files are only for development, if you need to create default resources
36
+ # for production you must use the initializer method in the Engine account model
37
+ if Rails.env.development?
38
+ L2.msg(
39
+ "Lesli",
40
+ "Version: #{Lesli::VERSION}",
41
+ "Build: #{Lesli::BUILD}")
42
+
43
+ # including tools for seeders
44
+ load Lesli::Engine.root.join("db", "seed", "tools.rb")
45
+
46
+
47
+ # loading core seeders
48
+ load Lesli::Engine.root.join("db", "seed", "#{Rails.env.downcase}.rb")
49
+ end
data/lib/lesli/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Lesli
2
- VERSION = "5.0.4"
2
+ VERSION = "5.0.5"
3
3
  BUILD = "1697000148"
4
4
  end
@@ -32,6 +32,13 @@ Building a better future, one line of code at a time.
32
32
 
33
33
  class DeviseMailerPreview < ActionMailer::Preview
34
34
 
35
+ def reset_password_instructions
36
+ record = Lesli::User.first
37
+ token = "abcdef12345"
38
+ opts = {}
39
+ Lesli::DeviseMailer.reset_password_instructions(record, token, opts)
40
+ end
41
+
35
42
  def confirmation_instructions
36
43
  record = Lesli::User.first
37
44
  token = "abcdef12345"
@@ -54,7 +54,7 @@ nav.lesli-application-navigation {
54
54
  }
55
55
 
56
56
  [class^="ri-"] {
57
- font-size: 18px;
57
+ font-size: 20px;
58
58
  }
59
59
  }
60
60
  }
@@ -36,98 +36,8 @@ namespace :lesli do
36
36
 
37
37
  desc "Scan new routes added and create role privileges"
38
38
  task build: :environment do
39
-
40
39
  L2.msg("Registering engines, controllers and actions")
41
-
42
- # get all the engines, controllers and actions
43
- engines = scan_for_engine_controllers
44
-
45
- # Register descriptors and privileges for all the accounts
46
- engines.each do |engine, controllers|
47
-
48
- controllers.each do |controller_route, controller_actions|
49
-
50
- # Build a strig with the standard name of a Rails controller from the standard routes
51
- # Examples:
52
- # users converts to Users
53
- # cloud_bell/notifications converts to CloudBell::Notifications
54
- # sometimes we need a second split to deal with third level deep of controllers
55
- # Example: "Account::Currency::ExchangeRatesController" from "account/currency/exchange_rates"
56
- reference = controller_route
57
- .split('/') # split the controller path by namespace
58
- .collect(&:capitalize) # uppercase the first letter to match the class name convention of Rails
59
- .join("::") # join by ruby class separator for namespaces
60
- .split('_') # work with compound words like "exchange_rates"
61
- .collect { |x| x[0] = x[0].upcase; x } # convert ['exchange', 'rates'] to ['Exchange', 'Rates']
62
- .join('') # joins everything in a single string
63
-
64
- name = reference.sub('::',' ')
65
-
66
- controller = Lesli::SystemController.create_with({
67
- name: name,
68
- :engine => engine,
69
- :reference => reference
70
- }).find_or_create_by!(route: controller_route)
71
-
72
- controller_actions.each do |action_name|
73
- controller.actions.find_or_create_by!(name: action_name)
74
- end
75
- end
76
- end
77
- end
78
-
79
- def scan_for_engine_controllers
80
-
81
- # Global container
82
- controller_list = {
83
- "app" => {}
84
- }
85
-
86
- # Get the list of controllers and actions of the core
87
- Rails.application.routes.routes.each do |route|
88
- route = route.defaults
89
-
90
- # filter the non-used core routes
91
- next if route[:controller].blank?
92
- next if route[:controller].include? "rails"
93
- next if route[:controller].include? "action_mailbox"
94
- next if route[:controller].include? "active_storage"
95
-
96
- # create a container for the actions related to a controller
97
- controller_list["app"][route[:controller]] = [] unless controller_list["app"][route[:controller]]
98
-
99
- # assign and group all the actions related to the controller
100
- controller_list["app"][route[:controller]].push(route[:action])
101
-
102
- end
103
-
104
- # Get the list of controllers and actions from engines
105
- Lesli::System.engines.each do |engine, engine_info|
106
-
107
- # load and retrieve the list of controllers and actions from an engine
108
- routes = "#{engine}::Engine".constantize.routes.routes.each do |route|
109
- route = route.defaults
110
-
111
- # validate if route has information, some special routes like redirects
112
- # can generate an empty entry in the route hash
113
- next if route.empty?
114
-
115
- # get the engine code
116
- engine_code = engine_info[:code]
117
-
118
- # create a container for the controllers related to the engine
119
- controller_list[engine_code] = {} if controller_list[engine_code].blank?
120
-
121
- # assign and group all the actions related to the controller
122
- controller_list[engine_code][route[:controller]] = [] if controller_list[engine_code][route[:controller]].blank?
123
-
124
- # assign and group all the actions related to the controller
125
- controller_list[engine_code][route[:controller]].push(route[:action])
126
-
127
- end
128
- end
129
-
130
- return controller_list
40
+ Lesli::ControllerOperator.new.build
131
41
  end
132
42
  end
133
43
  end
@@ -48,21 +48,35 @@ namespace :lesli do
48
48
  task :seed => :environment do |task, args|
49
49
  seed()
50
50
  end
51
+
52
+ desc "Build, migrate & seed Lesli database"
53
+ task :start => :environment do |task, args|
54
+ start()
55
+ end
51
56
  end
52
57
 
53
58
  # Drop, build, migrate & seed database (development only)
54
59
  def reset
60
+
61
+ # do not execute this task if we are at production level
55
62
  return if Rails.env.production?
56
- L2.msg("Reset Lesli database for development")
63
+
64
+ # print a message to let the users show the action running
65
+ L2.m("Reset Lesli database for development")
57
66
 
58
67
  Rake::Task['db:drop'].invoke
68
+
59
69
  setup()
60
70
  end
61
71
 
62
72
  # Build, migrate & seed database (development only)
63
73
  def setup
74
+
75
+ # do not execute this task if we are at production level
64
76
  return if Rails.env.production?
65
- L2.msg("Setup Lesli database for development")
77
+
78
+ # print a message to let the users show the action running
79
+ L2.m("Setup Lesli database for development")
66
80
 
67
81
  Rake::Task['db:create'].invoke
68
82
  Rake::Task['db:migrate'].invoke
@@ -76,23 +90,39 @@ namespace :lesli do
76
90
  # do not execute this task if we are at production level
77
91
  return if Rails.env.production?
78
92
 
93
+ # print a message to let the users show the action running
79
94
  L2.msg("Seed Lesli database for development")
80
95
 
81
- # scan rails routes to build the controllers index
82
- Rake::Task['lesli:controllers:build'].invoke
83
-
84
96
  # load main app seeders
85
97
  Rake::Task['db:seed'].invoke
86
98
 
87
99
  # load Lesli* gems seeders
88
100
  Lesli::Engine.load_seed
89
101
  LesliBell::Engine.load_seed if defined?(LesliBell)
102
+ LesliHelp::Engine.load_seed if defined?(LesliHelp)
90
103
  LesliAudit::Engine.load_seed if defined?(LesliAudit)
91
104
 
105
+ start()
106
+ end
107
+
108
+ def start
109
+
110
+ # do not execute this task if we are at production level
111
+ return if Rails.env.production?
112
+
113
+ # print a message to let the users show the action running
114
+ L2.msg("Start Lesli database for development")
115
+
116
+ # scan rails routes to build the controllers index
117
+ Rake::Task['lesli:controllers:build'].invoke
118
+
119
+ # scan rails routes to build the controllers index
120
+ Rake::Task['lesli:privileges:build'].invoke
121
+
92
122
  # scan rails routes to build the base of translations
93
123
  Rake::Task['lesli:babel:build'].invoke if defined?(LesliBabel)
94
124
 
95
125
  # print the lesli gems
96
126
  Rake::Task['lesli:status'].invoke
97
- end
127
+ end
98
128
  end
@@ -0,0 +1,66 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by 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
+ =end
32
+
33
+ # ·
34
+ namespace :lesli do
35
+ namespace :dev do
36
+
37
+ desc "Print a welcome message with some basic instructions"
38
+ task :welcome => :environment do |task, args|
39
+ welcome()
40
+ end
41
+ end
42
+
43
+ # Seed database (development only)
44
+ def welcome
45
+
46
+ # do not execute this task if we are at production level
47
+ return if Rails.env.production?
48
+
49
+ L2.br(4)
50
+
51
+ # print the lesli gems
52
+ Rake::Task['lesli:status'].invoke
53
+
54
+ password = Lesli.config.security.dig(:password)
55
+ password = password + Time.now.year.to_s + "$"
56
+ user = Lesli::User.first
57
+
58
+ L2.line
59
+ L2.m(" Owner user credentials (demo):")
60
+ L2.m(" username: #{ user.email }")
61
+ L2.m(" password: #{ password }")
62
+ L2.line
63
+
64
+ L2.cow "Enjoy your Lesli demo"
65
+ end
66
+ end
@@ -0,0 +1,59 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by 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
+ =end
32
+
33
+ # ·
34
+ namespace :lesli do
35
+ namespace :engine do
36
+
37
+ desc "Initialize model data for new installed engines"
38
+ task :install => :environment do |task, args|
39
+ engine_install
40
+ end
41
+ end
42
+
43
+ # Initialize model data for new installed engines
44
+ def engine_install
45
+
46
+ L2.msg("Initialize model data for new installed engines")
47
+
48
+ # scan rails routes to build the controllers index
49
+ Rake::Task['lesli:controllers:build'].invoke
50
+
51
+ Rake::Task['lesli:role:privileges'].invoke
52
+
53
+ # scan rails routes to build the base of translations
54
+ Rake::Task['lesli:babel:build'].invoke if defined?(LesliBabel)
55
+
56
+ # print the lesli gems
57
+ Rake::Task['lesli:status'].invoke
58
+ end
59
+ end
@@ -32,10 +32,10 @@ Building a better future, one line of code at a time.
32
32
 
33
33
  # ·
34
34
  namespace :lesli do
35
- namespace :role do
35
+ namespace :privileges do
36
36
 
37
- desc "Drop, build, migrate & seed Lesli database (development only)"
38
- task :privileges => :environment do |task, args|
37
+ desc "Syncing privileges for all the available roles"
38
+ task :build => :environment do |task, args|
39
39
  role_sync_privileges()
40
40
  end
41
41
  end
@@ -36,6 +36,11 @@ require "i18n-js"
36
36
  namespace :lesli do
37
37
  namespace :babel do
38
38
 
39
+ desc "Scan and register labels"
40
+ task :load => :environment do |task, args|
41
+ Rake::Task['lesli_babel:load'].invoke
42
+ end
43
+
39
44
  desc "Scan and register labels"
40
45
  task :build => :environment do |task, args|
41
46
  Rake::Task['lesli_babel:build'].invoke
@@ -65,6 +65,7 @@ import {
65
65
  lesliElementAutocomplete,
66
66
  lesliElementAvatar,
67
67
  lesliElementButton,
68
+ lesliElementButtonLink,
68
69
  lesliElementCalendar,
69
70
  lesliElementCard,
70
71
  lesliElementCollapse,
@@ -204,7 +205,6 @@ export default (engine, routes=[]) => {
204
205
  application.provide('url', useLesliUrl())
205
206
  application.provide('http', useLesliHttp())
206
207
  application.provide('date', useLesliDate())
207
- application.provide('date', useLesliDate())
208
208
  application.provide('utils', useLesliUtils())
209
209
  application.provide('dialog', useLesliDialog())
210
210
 
@@ -236,6 +236,7 @@ export default (engine, routes=[]) => {
236
236
  application.component("lesli-tabs", lesliElementTabs)
237
237
  application.component("lesli-panel", lesliElementPanel)
238
238
  application.component("lesli-button", lesliElementButton)
239
+ application.component("lesli-button-link", lesliElementButtonLink)
239
240
  application.component("lesli-calendar", lesliElementCalendar)
240
241
  application.component("lesli-input-tag", lesliElementInputTag)
241
242
  application.component("lesli-file-uploader", lesliElementFileUploader)
@@ -16,16 +16,16 @@ GNU General Public License for more details.
16
16
  You should have received a copy of the GNU General Public License
17
17
  along with this program. If not, see http://www.gnu.org/licenses/.
18
18
 
19
- Lesli · Your Smart Business Assistant.
19
+ Lesli · Ruby on Rails SaaS Development Framework.
20
20
 
21
21
  Made with ♥ by https://www.lesli.tech
22
22
  Building a better future, one line of code at a time.
23
23
 
24
24
  @contact hello@lesli.tech
25
- @website https://lesli.tech
25
+ @website https://www.lesli.tech
26
26
  @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
27
27
 
28
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
28
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
29
29
  // ·
30
30
  */
31
31
 
@@ -51,13 +51,13 @@ application({
51
51
  password: ""
52
52
  },
53
53
  password_edit: {
54
- new_password: "Tardis2023$",
55
- new_password_confirmation: "Tardis2023$"
54
+ new_password: "",
55
+ new_password_confirmation: ""
56
56
  },
57
57
  notification: {
58
58
  message: "",
59
59
  show: false,
60
- type: "danger"
60
+ type: ""
61
61
  }
62
62
  }
63
63
  },
@@ -79,7 +79,7 @@ application({
79
79
  };
80
80
 
81
81
  this.http.post("/password", data).then(response => {
82
- this.showNotification(this.translations.main.notification_reset_password_instructions_sent, "success")
82
+ this.showNotification("this.translations.main.notification_reset_password_instructions_sent", "success")
83
83
  }).catch(error => {
84
84
  this.showNotification(error.message)
85
85
  }).finally(() => {
@@ -128,7 +128,7 @@ application({
128
128
 
129
129
  showNotification(message, type="danger"){
130
130
  this.notification.message = message;
131
- this.notification.type = type;
131
+ this.notification.type = "is-"+type;
132
132
  this.notification.show = true;
133
133
  }
134
134
 
@@ -47,8 +47,8 @@ application({
47
47
  telephone_code: "+49",
48
48
  telephone_codes: null,
49
49
  sign_up: {
50
- email: "test@lesli.tech",
51
- password: 'Tardis2023$',
50
+ email: "",
51
+ password: "",
52
52
  password_confirmation: '',
53
53
  // first_name: null,
54
54
  // last_name: null,
@@ -16,16 +16,16 @@ GNU General Public License for more details.
16
16
  You should have received a copy of the GNU General Public License
17
17
  along with this program. If not, see http://www.gnu.org/licenses/.
18
18
 
19
- Lesli · Your Smart Business Assistant.
19
+ Lesli · Ruby on Rails SaaS Development Framework.
20
20
 
21
21
  Made with ♥ by https://www.lesli.tech
22
22
  Building a better future, one line of code at a time.
23
23
 
24
24
  @contact hello@lesli.tech
25
- @website https://lesli.tech
25
+ @website https://www.lesli.tech
26
26
  @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
27
27
 
28
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
28
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
29
29
  // ·
30
30
  */
31
31
 
@@ -41,19 +41,24 @@ application({
41
41
  return {
42
42
  loading: false,
43
43
  sign_in: {
44
- email: "hello@lesli.tech",
45
- password: "tardis2023$"
44
+ email: "",
45
+ password: ""
46
46
  },
47
47
  notification: {
48
48
  message: "",
49
49
  show: false,
50
50
  type: "default"
51
51
  },
52
- errors: ["holi"]
52
+ errors: []
53
53
  }
54
54
  },
55
55
  mounted() {
56
56
  this.$refs?.email?.focus()
57
+
58
+ if (lesli_application_development) {
59
+ this.sign_in.email = "hello@lesli.tech"
60
+ this.sign_in.password = "tardis2023$"
61
+ }
57
62
  },
58
63
  methods: {
59
64
 
@@ -115,11 +115,16 @@ function toggleEngines() {
115
115
  document.addEventListener('keydown', onEscape)
116
116
  }
117
117
 
118
+ // ·
119
+ function safeEngineUrl() {
120
+ return encodeURI(props.enginePath);
121
+ }
122
+
118
123
  </script>
119
124
  <template>
120
125
  <header ref="lesliApplicationHeader" class="lesli-application-header">
121
126
  <div class="lesli-application-header-container container">
122
- <a :href="props.enginePath">
127
+ <a :href="safeEngineUrl()">
123
128
  <figure class="image lesli-brand">
124
129
  <img alt="App logo" class="is-hidden-touch" src="/assets/lesli/brand/app-logo.svg">
125
130
  </figure>