lesli 5.0.12 → 5.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/lesli/brand/app-logo.png +0 -0
- data/app/assets/javascripts/lesli/templates/application.js +14 -0
- data/app/assets/javascripts/lesli/templates/public.js +14 -0
- data/app/assets/stylesheets/lesli/templates/application.css +851 -21432
- data/app/assets/stylesheets/lesli/templates/public.css +1 -19098
- data/app/controllers/lesli/application_controller.rb +1 -0
- data/app/controllers/lesli/interfaces/application/authorization.rb +1 -1
- data/app/helpers/lesli/assets_helper.rb +24 -6
- data/app/helpers/lesli/navigation_helper.rb +15 -11
- data/app/lib/date2.rb +8 -0
- data/app/lib/lesli/system.rb +13 -1
- data/app/models/concerns/user_extensions.rb +6 -0
- data/app/models/lesli/user.rb +2 -2
- data/app/operators/lesli/controller_operator.rb +4 -1
- data/app/services/lesli/user_service.rb +1 -1
- data/app/views/lesli/layouts/application-lesli.html.erb +2 -0
- data/app/views/lesli/partials/_application-data.html.erb +3 -3
- data/app/views/lesli/partials/_application-lesli-header.html.erb +47 -22
- data/app/views/lesli/partials/_application-lesli-javascript.html.erb +2 -2
- data/app/views/lesli/partials/_application-lesli-navigation.html.erb +8 -1
- data/app/views/lesli/partials/_application-lesli-scss.html.erb +2 -2
- data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
- data/config/initializers/lesli.rb +7 -1
- data/config/locales/translations.en.yml +5 -3
- data/config/locales/translations.es.yml +5 -3
- data/config/locales/translations.fr.yml +5 -3
- data/config/locales/translations.it.yml +5 -3
- data/config/locales/translations.pt.yml +5 -3
- data/lib/generators/application_lesli_generator.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/lesli/configuration.rb +1 -1
- data/lib/lesli/engine.rb +2 -3
- data/lib/lesli/r_spec.rb +40 -0
- data/lib/lesli/routing.rb +57 -0
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +2 -0
- data/lib/scss/layouts/application-component.scss +1 -1
- data/lib/scss/layouts/application-content.scss +35 -0
- data/lib/scss/layouts/application-header.scss +37 -109
- data/lib/scss/layouts/{application-navbar.scss → application-navigation.scss} +21 -4
- data/lib/scss/layouts/application-search.scss +1 -1
- data/lib/scss/settings/variables.scss +1 -1
- data/lib/scss/templates/application.scss +8 -37
- data/lib/scss/templates/public.scss +6 -4
- data/lib/tasks/lesli_tasks.rake +3 -3
- data/lib/vue/application.js +6 -4
- data/lib/vue/layouts/application-component.vue +2 -2
- data/lib/vue/layouts/application-header.vue +108 -87
- data/lib/vue/panels/panel-support-tickets.vue +4 -2
- data/lib/vue/shared/dashboards/apps/edit.vue +1 -1
- data/lib/vue/shared/dashboards/components/form.vue +2 -2
- data/lib/vue/stores/translations.json +10 -0
- data/lib/webpack/base.js +11 -6
- data/lib/webpack/core.js +8 -6
- data/lib/webpack/engines.js +3 -1
- data/lib/webpack/root.js +105 -0
- data/lib/webpack/version.js +37 -0
- metadata +17 -24
- 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/lib/scss/bulma/loader.scss +0 -92
@@ -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
|
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
|
-
|
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
|
-
|
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(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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")
|
data/app/lib/lesli/system.rb
CHANGED
@@ -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
|
data/app/models/lesli/user.rb
CHANGED
@@ -63,7 +63,7 @@ module Lesli
|
|
63
63
|
|
64
64
|
|
65
65
|
# devise implementation
|
66
|
-
if defined?
|
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
|
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
|
@@ -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
|
21
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
22
22
|
|
23
|
-
Made with ♥ by
|
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
|
-
|
37
|
-
<%= "show-bell" if defined?(LesliBell) %>
|
49
|
+
engine-path="<%= "/dashboard" if defined?(LesliDashboard) %>"
|
38
50
|
<%= "show-focus" if defined?(LesliFocus) %>
|
39
|
-
|
40
|
-
|
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="
|
51
|
-
<div class="dropdown-
|
52
|
-
<
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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
|
-
|
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
|
21
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
22
22
|
|
23
|
-
Made with ♥ by
|
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
|
-
<%
|
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
|
21
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
22
22
|
|
23
|
-
Made with ♥ by
|
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: "
|
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:"
|