lesli 5.0.4 → 5.0.5

Sign up to get free protection for your applications and to get access to all the features.
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>