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.
- 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:"
|