lesli 5.0.12 → 5.0.13

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/lesli/brand/app-logo.png +0 -0
  3. data/app/assets/javascripts/lesli/templates/application.js +14 -0
  4. data/app/assets/javascripts/lesli/templates/public.js +14 -0
  5. data/app/assets/stylesheets/lesli/templates/application.css +851 -21432
  6. data/app/assets/stylesheets/lesli/templates/public.css +1 -19098
  7. data/app/controllers/lesli/application_controller.rb +1 -0
  8. data/app/controllers/lesli/interfaces/application/authorization.rb +1 -1
  9. data/app/helpers/lesli/assets_helper.rb +24 -6
  10. data/app/helpers/lesli/navigation_helper.rb +15 -11
  11. data/app/lib/date2.rb +8 -0
  12. data/app/lib/lesli/system.rb +13 -1
  13. data/app/models/concerns/user_extensions.rb +6 -0
  14. data/app/models/lesli/user.rb +2 -2
  15. data/app/operators/lesli/controller_operator.rb +4 -1
  16. data/app/services/lesli/user_service.rb +1 -1
  17. data/app/views/lesli/layouts/application-lesli.html.erb +2 -0
  18. data/app/views/lesli/partials/_application-data.html.erb +3 -3
  19. data/app/views/lesli/partials/_application-lesli-header.html.erb +47 -22
  20. data/app/views/lesli/partials/_application-lesli-javascript.html.erb +2 -2
  21. data/app/views/lesli/partials/_application-lesli-navigation.html.erb +8 -1
  22. data/app/views/lesli/partials/_application-lesli-scss.html.erb +2 -2
  23. data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
  24. data/config/initializers/lesli.rb +7 -1
  25. data/config/locales/translations.en.yml +5 -3
  26. data/config/locales/translations.es.yml +5 -3
  27. data/config/locales/translations.fr.yml +5 -3
  28. data/config/locales/translations.it.yml +5 -3
  29. data/config/locales/translations.pt.yml +5 -3
  30. data/lib/generators/application_lesli_generator.rb +164 -0
  31. data/lib/generators/lesli/spec/USAGE +8 -0
  32. data/lib/generators/lesli/spec/spec_generator.rb +25 -0
  33. data/lib/generators/lesli/spec/templates/spec-factory.template +17 -0
  34. data/lib/generators/lesli/spec/templates/spec-model.template +70 -0
  35. data/lib/lesli/configuration.rb +1 -1
  36. data/lib/lesli/engine.rb +2 -3
  37. data/lib/lesli/r_spec.rb +40 -0
  38. data/lib/lesli/routing.rb +57 -0
  39. data/lib/lesli/version.rb +2 -2
  40. data/lib/lesli.rb +2 -0
  41. data/lib/scss/layouts/application-component.scss +1 -1
  42. data/lib/scss/layouts/application-content.scss +35 -0
  43. data/lib/scss/layouts/application-header.scss +37 -109
  44. data/lib/scss/layouts/{application-navbar.scss → application-navigation.scss} +21 -4
  45. data/lib/scss/layouts/application-search.scss +1 -1
  46. data/lib/scss/settings/variables.scss +1 -1
  47. data/lib/scss/templates/application.scss +8 -37
  48. data/lib/scss/templates/public.scss +6 -4
  49. data/lib/tasks/lesli_tasks.rake +3 -3
  50. data/lib/vue/application.js +6 -4
  51. data/lib/vue/layouts/application-component.vue +2 -2
  52. data/lib/vue/layouts/application-header.vue +108 -87
  53. data/lib/vue/panels/panel-support-tickets.vue +4 -2
  54. data/lib/vue/shared/dashboards/apps/edit.vue +1 -1
  55. data/lib/vue/shared/dashboards/components/form.vue +2 -2
  56. data/lib/vue/stores/translations.json +10 -0
  57. data/lib/webpack/base.js +11 -6
  58. data/lib/webpack/core.js +8 -6
  59. data/lib/webpack/engines.js +3 -1
  60. data/lib/webpack/root.js +105 -0
  61. data/lib/webpack/version.js +37 -0
  62. metadata +17 -24
  63. data/app/assets/stylesheets/lesli/users/confirmations.css +0 -19219
  64. data/app/assets/stylesheets/lesli/users/passwords.css +0 -19202
  65. data/app/assets/stylesheets/lesli/users/registrations.css +0 -19594
  66. data/app/assets/stylesheets/lesli/users/sessions.css +0 -19594
  67. data/lib/scss/bulma/loader.scss +0 -92
@@ -43,6 +43,7 @@ module Lesli
43
43
  end
44
44
 
45
45
  def language
46
+
46
47
  # check if param locale was sent by the user
47
48
  unless params[:locale].blank?
48
49
 
@@ -12,7 +12,7 @@ module Lesli
12
12
  engine_path = nil
13
13
 
14
14
  # check if the users is logged into the system
15
- unless user_signed_in?
15
+ unless user_signed_in?()
16
16
 
17
17
  message = "Please Login to view that page!"
18
18
 
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
19
19
 
20
20
  Lesli · Ruby on Rails SaaS Development Framework.
21
21
 
22
- Made with ♥ by https://www.lesli.tech
22
+ Made with ♥ by LesliTech
23
23
  Building a better future, one line of code at a time.
24
24
 
25
25
  @contact hello@lesli.tech
@@ -39,9 +39,18 @@ module Lesli
39
39
  # lesli_application_stylesheet_path(:engine) (TODO) -> stylesheet from engine current
40
40
  # lesli_application_stylesheet_path(:cloud_driver) -> stylesheet from engine specific
41
41
  def lesli_application_stylesheet_path(engine = nil)
42
+
43
+ # Stylesheets from specific engine
42
44
  return "#{engine}/templates/application" if engine
43
45
 
44
- "#{lesli_engine(:code)}/application"
46
+ # Get current engine information
47
+ lesli_engine_code = lesli_engine(:code)
48
+
49
+ # Rails main host app stylesheets
50
+ return "application" if lesli_engine_code == "root"
51
+
52
+ # Rails engines stylesheets
53
+ "#{lesli_engine_code}/application"
45
54
  end
46
55
 
47
56
  # Return a string path to load the main engine stylesheet
@@ -57,12 +66,21 @@ module Lesli
57
66
  def lesli_application_javascript_path
58
67
  # get the namespace to load specific javascript file
59
68
  # for engine or specific javascript file for core controller
60
- path_segments = controller_path.split("/")
61
- lesli_engine = path_segments.shift
69
+ # path_segments = controller_path.split("/")
70
+ # lesli_engine = path_segments.shift
62
71
 
63
- return "onboardings/application" if is_lesli_onboarding?
72
+ # return "onboardings/application" if is_lesli_onboarding?
64
73
 
65
- "#{lesli_engine}/application"
74
+
75
+
76
+ # Get current engine information
77
+ lesli_engine_code = lesli_engine(:code)
78
+
79
+ # Rails main host app stylesheets
80
+ return "application" if lesli_engine_code == "root"
81
+
82
+ # Rails engines stylesheets
83
+ "#{lesli_engine_code}/application"
66
84
  end
67
85
 
68
86
  def javascript_googlemaps_sdk
@@ -42,9 +42,15 @@ module Lesli
42
42
 
43
43
  # Prints a html link inside a list item
44
44
  def navigation_item(path, label, icon = nil, reload: false)
45
+ content_tag(:li) do
46
+ navigation_link(path, label, icon, reload:reload)
47
+ end
48
+ end
49
+
50
+ def navigation_link(path, label, icon = nil, reload: false)
45
51
  # default vue router links for single page applications
46
52
  html_element = "router-link"
47
- html_options = { to: path }
53
+ html_options = { to: path, class: "navbar-item", 'active-class': "navigation-link-active" }
48
54
 
49
55
  # if reload is nedeed, we use a standard "a" tag
50
56
  if reload
@@ -52,16 +58,14 @@ module Lesli
52
58
  html_options = { href: path }
53
59
  end
54
60
 
55
- content_tag(:li) do
56
- content_tag(html_element, html_options) do
57
- # print a simple menu item (without icon)
58
- concat content_tag(:span, label, class: "text iconless") unless icon
59
-
60
- # print a full menu item if icon was requested
61
- if icon
62
- concat content_tag("span", nil, class: [icon, "icono"])
63
- concat content_tag(:span, label, class: "text")
64
- end
61
+ content_tag(html_element, html_options) do
62
+ # print a simple menu item (without icon)
63
+ concat content_tag(:span, label, class: "text iconless") unless icon
64
+
65
+ # print a full menu item if icon was requested
66
+ if icon
67
+ concat content_tag(:span, nil, class: icon)
68
+ concat content_tag(:span, label, class: "text")
65
69
  end
66
70
  end
67
71
  end
data/app/lib/date2.rb CHANGED
@@ -138,6 +138,11 @@ class Date2
138
138
  # get right format for dates
139
139
  format = self.db_format
140
140
 
141
+ # compatibility for SQLite
142
+ if ActiveRecord::Base.connection.adapter_name == "SQLite"
143
+ return "strftime('#{format}', #{table}#{column}) as #{column}_string"
144
+ end
145
+
141
146
  "TO_CHAR(#{table}#{column} at time zone 'utc' at time zone '#{@settings[:time_zone]}', '#{format}') as #{column}_string"
142
147
 
143
148
  end
@@ -175,6 +180,9 @@ class Date2
175
180
  def db_format
176
181
  format = @format
177
182
 
183
+ # SQLite format dates are the same of ruby format
184
+ return format if ActiveRecord::Base.connection.adapter_name == "SQLite"
185
+
178
186
  # Convert Ruby to postgresql date format
179
187
  format = format.gsub("%Y", "YYYY")
180
188
  format = format.gsub("%m", "MM")
@@ -42,6 +42,9 @@ module Lesli
42
42
 
43
43
  engines() if ENGINES.empty?
44
44
 
45
+ # the Root engine represents the host Rails app
46
+ engine = "Root" unless LESLI_ENGINES.include?(engine)
47
+
45
48
  # return specific property if requested
46
49
  return ENGINES[engine][property.to_sym] unless property.blank?
47
50
 
@@ -59,7 +62,7 @@ module Lesli
59
62
  LESLI_ENGINES.each do |engine|
60
63
  next unless Object.const_defined?(engine)
61
64
  engine_instance = "#{engine}".constantize
62
- ENGINES[engine]= {
65
+ ENGINES[engine] = {
63
66
  :code => engine.underscore,
64
67
  :name => lesli_engine_name(engine),
65
68
  :path => engine_instance::Engine.routes.find_script_name({}),
@@ -69,6 +72,15 @@ module Lesli
69
72
  }
70
73
  end
71
74
 
75
+ ENGINES["Root"] = {
76
+ :code => "root",
77
+ :name => "Root",
78
+ :path => "/",
79
+ :version => "1.0.0",
80
+ :build => "0000000",
81
+ :dir => Rails.root.to_s
82
+ }
83
+
72
84
  ENGINES
73
85
  end
74
86
 
@@ -57,6 +57,12 @@ module UserExtensions
57
57
  end
58
58
 
59
59
 
60
+ # @return [String] The first name of this user.
61
+ def name2
62
+ self.first_name
63
+ end
64
+
65
+
60
66
  # @return [String] The name of this user.
61
67
  # @description Retrieves and returns the name of the user depending on the available information.
62
68
  # The name can be a full name (first and last names), just the first name, or, in case the information
@@ -63,7 +63,7 @@ module Lesli
63
63
 
64
64
 
65
65
  # devise implementation
66
- if defined? LesliSecurity
66
+ #if !defined?(LesliSecurity)
67
67
  devise(
68
68
  :database_authenticatable,
69
69
  :registerable,
@@ -73,7 +73,7 @@ module Lesli
73
73
  :confirmable,
74
74
  :trackable);
75
75
  #:omniauthable, omniauth_providers: [:google_oauth2, :facebook]
76
- end
76
+ #end
77
77
 
78
78
 
79
79
  # users belongs to an account only... and must have a role
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
19
19
 
20
20
  Lesli · Ruby on Rails SaaS Development Framework.
21
21
 
22
- Made with ♥ by https://www.lesli.tech
22
+ Made with ♥ by LesliTech
23
23
  Building a better future, one line of code at a time.
24
24
 
25
25
  @contact hello@lesli.tech
@@ -120,6 +120,9 @@ module Lesli
120
120
  # Get the list of controllers and actions from engines
121
121
  Lesli::System.engines.each do |engine, engine_info|
122
122
 
123
+ # Do not process main Rails app
124
+ next if engine == "Root"
125
+
123
126
  # load and retrieve the list of controllers and actions from an engine
124
127
  routes = "#{engine}::Engine".constantize.routes.routes.each do |route|
125
128
  route = route.defaults
@@ -60,7 +60,7 @@ module Lesli
60
60
  :id,
61
61
  :email,
62
62
  "CONCAT_WS(' ', first_name, last_name) as name",
63
- "COALESCE(alias, email) as alias"
63
+ "COALESCE(NULLIF(alias,''), email) as alias"
64
64
  ).as_json
65
65
  end
66
66
  end
@@ -44,8 +44,10 @@ Building a better future, one line of code at a time.
44
44
  <%= render partial: "lesli/partials/application-lesli-header" %>
45
45
  <%= render partial: "lesli/partials/application-lesli-navigation" %>
46
46
  <%#= render partial: "lesli/partials/application-lesli-notices" %>
47
+ <section class="lesli-application-content">
47
48
  <%= render partial: "lesli/partials/application-lesli-sidebar" %>
48
49
  <%= render partial: "lesli/partials/application-lesli-content" %>
50
+ </section>
49
51
  <%= render partial: "lesli/partials/application-lesli-engines" %>
50
52
  <%= render partial: "lesli/partials/application-lesli-panels" %>
51
53
  <%#= render partial: "lesli/partials/application-lesli-footer" %>
@@ -18,9 +18,9 @@ GNU General Public License for more details.
18
18
  You should have received a copy of the GNU General Public License
19
19
  along with this program. If not, see http://www.gnu.org/licenses/.
20
20
 
21
- Lesli · Ruby on Rails SaaS development platform.
21
+ Lesli · Ruby on Rails SaaS Development Framework.
22
22
 
23
- Made with ♥ by https://www.lesli.tech
23
+ Made with ♥ by LesliTech
24
24
  Building a better future, one line of code at a time.
25
25
 
26
26
  @contact hello@lesli.tech
@@ -52,13 +52,13 @@ Building a better future, one line of code at a time.
52
52
  @lesli[:instance] = Rails.application.credentials.dig(:instance) || lesli_instance_code
53
53
  @lesli[:engine] = lesli_engine.dig(:code) # use into url plugin to for dynamic search
54
54
  @lesli[:url] = request.base_url.to_s # use as base for url plugin
55
- @lesli[:engine_paths] = {}
56
55
 
57
56
  %>
58
57
 
59
58
 
60
59
  <%
61
60
  # Dynamic build the engines mouted path
61
+ @lesli[:engine_paths] = {}
62
62
  Lesli::System.engines.each do |engine, engine_info|
63
63
  @lesli[:engine_paths][engine] = engine_info[:path]
64
64
  end
@@ -32,41 +32,66 @@ Building a better future, one line of code at a time.
32
32
  =end
33
33
  %>
34
34
 
35
+ <%# check if custom navigation partial exists, getting the path from application helper %>
36
+ <% custom_navigation_path = "partials/application-lesli-header" %>
37
+
38
+ <%# validate the path to be sure the partial exists when trying to render it %>
39
+ <% custom_navigation_exists = lookup_context.exists?(custom_navigation_path, nil, true) %>
40
+
41
+ <%# render navigation partial %>
42
+ <% if custom_navigation_exists %>
43
+
44
+ <%= render partial: custom_navigation_path %>
45
+
46
+ <% else %>
47
+
35
48
  <lesli-application-header
36
- :show-engines="true"
37
- <%= "show-bell" if defined?(LesliBell) %>
49
+ engine-path="<%= "/dashboard" if defined?(LesliDashboard) %>"
38
50
  <%= "show-focus" if defined?(LesliFocus) %>
39
- <%= "show-support-tickets" if defined?(LesliSupport) %>
40
- engine-path="<%= defined?(LesliDashboard) ? lesli_dashboard.root_path : lesli_engine(:path)%>">
51
+ show-profile
52
+ show-engines
53
+ show-bell
54
+ show-support>
41
55
 
42
56
  <template v-slot:brand>
43
57
  <%= customization_instance_logo_tag(logo: "app-icon", options: { alt: "Lesli app logo", class: "is-hidden-desktop" }) %>
44
58
  <%= customization_instance_logo_tag(logo: "app-logo", options: { alt: "Lesli app logo", class: "is-hidden-touch" }) %>
45
59
  </template>
46
60
 
47
- <template>
61
+ <template v-slot:end>
62
+
48
63
  <%# language selector %>
49
- <% if I18n.available_locales.length > 1 %>
50
- <div class="dropdown is-hoverable header-language-selector">
51
- <div class="dropdown-trigger">
52
- <span class="icon has-text-link">
53
- <%= lesli_svg("locale-#{locale}") %>
54
- </span>
55
- </div>
56
- <div class="dropdown-menu" id="dropdown-menu-locale" role="menu">
57
- <div class="dropdown-content">
58
- <% I18n.available_locales.each do |locale| %>
59
- <% next if locale == I18n.locale %>
60
- <%= link_to language_url(locale), { :class => "dropdown-item" } do %>
61
- <span class="icon has-text-grey-light">
62
- <%= lesli_svg("locale-#{locale}") %>
63
- </span>
64
- <span><%= language_name(locale) %></span>
64
+ <% if Lesli.config.layout.dig(:locale) && I18n.available_locales.length > 1 %>
65
+ <div class="navbar-item">
66
+ <div class="dropdown is-hoverable">
67
+ <div class="dropdown-trigger">
68
+ <button
69
+ class="button is-ghost"
70
+ aria-haspopup="true"
71
+ aria-controls="dropdown-menu"
72
+ @click="storeLayout.showProfile = true">
73
+ <span class="icon is-size-5">
74
+ <%= lesli_svg("locale-#{locale}") %>
75
+ </span>
76
+ </button>
77
+ </div>
78
+ <div class="dropdown-menu" id="dropdown-menu-locale" role="menu">
79
+ <div class="dropdown-content">
80
+ <% I18n.available_locales.each do |locale| %>
81
+ <% next if locale == I18n.locale %>
82
+ <%= link_to language_url(locale), { :class => "dropdown-item" } do %>
83
+ <span class="icon has-text-grey-light">
84
+ <%= lesli_svg("locale-#{locale}") %>
85
+ </span>
86
+ <span><%= language_name(locale) %></span>
87
+ <% end %>
65
88
  <% end %>
66
- <% end %>
89
+ </div>
67
90
  </div>
68
91
  </div>
69
92
  </div>
70
93
  <% end %>
71
94
  </template>
72
95
  </lesli-application-header>
96
+
97
+ <% end %>
@@ -18,9 +18,9 @@ GNU General Public License for more details.
18
18
  You should have received a copy of the GNU General Public License
19
19
  along with this program. If not, see http://www.gnu.org/licenses/.
20
20
 
21
- Lesli · Ruby on Rails SaaS development platform.
21
+ Lesli · Ruby on Rails SaaS Development Framework.
22
22
 
23
- Made with ♥ by https://www.lesli.tech
23
+ Made with ♥ by LesliTech
24
24
  Building a better future, one line of code at a time.
25
25
 
26
26
  @contact hello@lesli.tech
@@ -33,7 +33,14 @@ Building a better future, one line of code at a time.
33
33
  %>
34
34
 
35
35
  <%# check if custom navigation partial exists, getting the path from application helper %>
36
- <% custom_sidebar_path = "#{lesli_engine.dig(:code)}/partials/engine-navigation" %>
36
+ <%
37
+ engine = lesli_engine.dig(:code)
38
+ custom_sidebar_path = if engine == "root"
39
+ "partials/engine-navigation"
40
+ else
41
+ "#{engine}/partials/engine-navigation"
42
+ end
43
+ %>
37
44
 
38
45
 
39
46
  <%# validate the path to be sure the partial exists when trying to render it %>
@@ -18,9 +18,9 @@ GNU General Public License for more details.
18
18
  You should have received a copy of the GNU General Public License
19
19
  along with this program. If not, see http://www.gnu.org/licenses/.
20
20
 
21
- Lesli · Ruby on Rails SaaS development platform.
21
+ Lesli · Ruby on Rails SaaS Development Framework.
22
22
 
23
- Made with ♥ by https://www.lesli.tech
23
+ Made with ♥ by LesliTech
24
24
  Building a better future, one line of code at a time.
25
25
 
26
26
  @contact hello@lesli.tech
@@ -44,7 +44,7 @@ Building a better future, one line of code at a time.
44
44
  :class => "#{lesli_instance_code}-logo", # dynamic class according to the instance
45
45
  :alt => "Main logo")
46
46
  %>
47
- <h1 class="title has-text-primary">
47
+ <h1 class="title is-size-4 has-text-primary">
48
48
  <%#= I18n.t("core.users/sessions.view_text_welcome") %>
49
49
  <%= title %>
50
50
  </h1>
@@ -45,7 +45,7 @@ Lesli.configure do |config|
45
45
  config.company = {
46
46
  name: "Lesli",
47
47
  email: "hello@lesli.tech",
48
- tagline: "Ruby on Rails SaaS Development Platform."
48
+ tagline: "The Open SaaS Development Platform."
49
49
  }
50
50
 
51
51
 
@@ -105,6 +105,12 @@ Lesli.configure do |config|
105
105
  color_sidebar_hover: "#dee7ec"
106
106
  }
107
107
 
108
+
109
+ #
110
+ config.layout = {
111
+ locale: false
112
+ }
113
+
108
114
  config.path_after_login = "/"
109
115
  config.path_after_login = "/dashboard" if defined?(LesliDashboard)
110
116
  end
@@ -16,6 +16,11 @@
16
16
  button_settings: Settings
17
17
  button_show: Show
18
18
  toolbar_search: Search...
19
+ message_operation_success: Operation completed successfully
20
+ message_operation_error: Operation failed. Please try again.
21
+ application:
22
+ navigation_logout: Logout
23
+ navigation_my_profile: My profile
19
24
  users/sessions:
20
25
  view_username: Username
21
26
  dashboards:
@@ -23,6 +28,3 @@
23
28
  column_name: Name
24
29
  column_default: Default
25
30
  view_add_component: Add component
26
- application:
27
- navigation_logout: Logout
28
- navigation_my_profile: My profile
@@ -16,6 +16,11 @@
16
16
  button_settings: Configuración
17
17
  button_show: Ver
18
18
  toolbar_search: Buscar...
19
+ message_operation_success: Operacion realizada satisfactoriamente
20
+ message_operation_error: Operación fallida. Por favor, inténtelo de nuevo.
21
+ application:
22
+ navigation_logout: Cerrar sesión
23
+ navigation_my_profile: Mi perfil
19
24
  users/sessions:
20
25
  view_username: Usuario
21
26
  dashboards:
@@ -23,6 +28,3 @@
23
28
  column_name: Nombre
24
29
  column_default: Default
25
30
  view_add_component: Agregar componente
26
- application:
27
- navigation_logout: Cerrar sesión
28
- navigation_my_profile: Mi perfil
@@ -16,6 +16,11 @@
16
16
  button_settings: ":lesli.shared.button_settings:"
17
17
  button_show: ":lesli.shared.button_show:"
18
18
  toolbar_search: ":lesli.shared.toolbar_search:"
19
+ message_operation_success: ":lesli.shared.message_operation_success:"
20
+ message_operation_error: ":lesli.shared.message_operation_error:"
21
+ application:
22
+ navigation_logout: ":lesli.application.navigation_logout:"
23
+ navigation_my_profile: ":lesli.application.navigation_my_profile:"
19
24
  users/sessions:
20
25
  view_username: ":lesli.users/sessions.view_username:"
21
26
  dashboards:
@@ -23,6 +28,3 @@
23
28
  column_name: ":lesli.dashboards.column_name:"
24
29
  column_default: ":lesli.dashboards.column_default:"
25
30
  view_add_component: ":lesli.dashboards.view_add_component:"
26
- application:
27
- navigation_logout: ":lesli.application.navigation_logout:"
28
- navigation_my_profile: ":lesli.application.navigation_my_profile:"
@@ -16,6 +16,11 @@
16
16
  button_settings: ":lesli.shared.button_settings:"
17
17
  button_show: ":lesli.shared.button_show:"
18
18
  toolbar_search: ":lesli.shared.toolbar_search:"
19
+ message_operation_success: ":lesli.shared.message_operation_success:"
20
+ message_operation_error: ":lesli.shared.message_operation_error:"
21
+ application:
22
+ navigation_logout: ":lesli.application.navigation_logout:"
23
+ navigation_my_profile: ":lesli.application.navigation_my_profile:"
19
24
  users/sessions:
20
25
  view_username: ":lesli.users/sessions.view_username:"
21
26
  dashboards:
@@ -23,6 +28,3 @@
23
28
  column_name: ":lesli.dashboards.column_name:"
24
29
  column_default: ":lesli.dashboards.column_default:"
25
30
  view_add_component: ":lesli.dashboards.view_add_component:"
26
- application:
27
- navigation_logout: ":lesli.application.navigation_logout:"
28
- navigation_my_profile: ":lesli.application.navigation_my_profile:"
@@ -16,6 +16,11 @@
16
16
  button_settings: ":lesli.shared.button_settings:"
17
17
  button_show: ":lesli.shared.button_show:"
18
18
  toolbar_search: ":lesli.shared.toolbar_search:"
19
+ message_operation_success: ":lesli.shared.message_operation_success:"
20
+ message_operation_error: ":lesli.shared.message_operation_error:"
21
+ application:
22
+ navigation_logout: ":lesli.application.navigation_logout:"
23
+ navigation_my_profile: ":lesli.application.navigation_my_profile:"
19
24
  users/sessions:
20
25
  view_username: ":lesli.users/sessions.view_username:"
21
26
  dashboards:
@@ -23,6 +28,3 @@
23
28
  column_name: ":lesli.dashboards.column_name:"
24
29
  column_default: ":lesli.dashboards.column_default:"
25
30
  view_add_component: ":lesli.dashboards.view_add_component:"
26
- application:
27
- navigation_logout: ":lesli.application.navigation_logout:"
28
- navigation_my_profile: ":lesli.application.navigation_my_profile:"