lesli 5.0.24 → 5.1.0
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/stylesheets/lesli/application.css +1 -192
- data/app/helpers/lesli/customization_helper.rb +1 -1
- data/app/helpers/lesli/html_helper.rb +1 -1
- data/lib/generators/lesli/base_generator.rb +172 -0
- data/lib/generators/lesli/controller/controller_generator.rb +40 -0
- data/lib/generators/lesli/controller/templates/controller.rb.tt +86 -0
- data/lib/generators/lesli/model/model_generator.rb +44 -0
- data/lib/generators/lesli/model/templates/model.rb.tt +16 -0
- data/lib/generators/lesli/scaffold/scaffold_generator.rb +47 -0
- data/lib/generators/lesli/service/service_generator.rb +40 -0
- data/lib/generators/lesli/service/templates/service.rb.tt +44 -0
- data/lib/generators/lesli/views/templates/_form.html.erb.tt +22 -0
- data/lib/generators/lesli/views/templates/index.html.erb.tt +17 -0
- data/lib/generators/lesli/views/templates/new.html.erb.tt +4 -0
- data/lib/generators/lesli/views/templates/show.html.erb.tt +22 -0
- data/lib/generators/lesli/views/views_generator.rb +106 -0
- data/lib/lesli/engine.rb +1 -23
- data/lib/lesli/version.rb +2 -2
- metadata +48 -54
- data/app/assets/config/lesli_manifest.js +0 -42
- data/app/assets/images/lesli/brand/app-auth.svg +0 -9
- data/app/assets/images/lesli/brand/app-icon.svg +0 -48
- data/app/assets/images/lesli/brand/app-logo.png +0 -0
- data/app/assets/images/lesli/brand/app-logo.svg +0 -4
- data/app/assets/images/lesli/brand/favicon.png +0 -0
- data/app/assets/images/lesli/brand/favicon.svg +0 -61
- data/app/assets/images/lesli/brand/login-background.jpg +0 -0
- data/app/assets/images/lesli/brand/register-background.jpg +0 -0
- data/app/assets/javascripts/lesli/application.js +0 -1
- data/config/importmap.rb +0 -1
- data/lib/generators/application_lesli_generator_base.rb +0 -164
- data/lib/generators/lesli/spec/USAGE +0 -8
- data/lib/generators/lesli/spec/spec_generator.rb +0 -22
- data/lib/generators/lesli/spec/templates/spec-factory.template +0 -17
- data/lib/generators/lesli/spec/templates/spec-model.template +0 -70
- data/lib/generators/lesli/view/USAGE +0 -8
- data/lib/generators/lesli/view/templates/spec-factory.template +0 -17
- data/lib/generators/lesli/view/templates/spec-model.template +0 -70
- data/lib/generators/lesli/view/view_generator.rb +0 -22
- data/lib/lesli/r_spec.rb +0 -43
- data/lib/scss/_apps.scss +0 -94
- data/lib/scss/application.scss +0 -34
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module <%= engine_namespace %>
|
|
4
|
+
class <%= service_class_name %> < Lesli::ApplicationLesliService
|
|
5
|
+
|
|
6
|
+
def find(id: nil, uid: nil)
|
|
7
|
+
scope = current_user.account.<%= engine_domain_name %>.<%= resource_collection_name %>
|
|
8
|
+
|
|
9
|
+
# Build the search hash using only present values.
|
|
10
|
+
params = { id: id, uid: uid }.compact
|
|
11
|
+
|
|
12
|
+
# Only perform the lookup when at least one filter is present.
|
|
13
|
+
super(scope.find_by(params)) if params.any?
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def index
|
|
17
|
+
current_user.account.<%= engine_domain_name %>.<%= resource_collection_name %>.order(id: :desc)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create(<%= params_method_name %>)
|
|
21
|
+
<%= resource_name %> = current_user.account.<%= engine_domain_name %>.<%= resource_collection_name %>.new(<%= params_method_name %>)
|
|
22
|
+
|
|
23
|
+
if <%= resource_name %>.save
|
|
24
|
+
self.resource = <%= resource_name %>
|
|
25
|
+
else
|
|
26
|
+
self.error(<%= resource_name %>.errors.full_messages.to_sentence)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
self
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def show
|
|
33
|
+
self.resource
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def update(params)
|
|
37
|
+
self.resource.update(params)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def destroy
|
|
41
|
+
self.resource.destroy
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%%= form_with(model: <%= resource_instance %>, builder: LesliView::Forms::Builder) do |form| %>
|
|
2
|
+
<%%= form.fieldset do %>
|
|
3
|
+
<% form_attributes.each do |attribute| -%>
|
|
4
|
+
<% if attribute == "description" -%>
|
|
5
|
+
<%%= form.field_control_textarea(:<%= attribute %>, label: false) %>
|
|
6
|
+
<% else -%>
|
|
7
|
+
<%%= form.field_control(:<%= attribute %>) %>
|
|
8
|
+
<% end -%>
|
|
9
|
+
<% end -%>
|
|
10
|
+
|
|
11
|
+
<% if select_attributes.any? -%>
|
|
12
|
+
<div class="columns">
|
|
13
|
+
<% select_attributes.each do |attribute| -%>
|
|
14
|
+
<div class="column">
|
|
15
|
+
<%%= form.field_control_select(:<%= attribute %>, []) %>
|
|
16
|
+
</div>
|
|
17
|
+
<% end -%>
|
|
18
|
+
</div>
|
|
19
|
+
<% end -%>
|
|
20
|
+
<%%= form.field_control_submit %>
|
|
21
|
+
<%% end %>
|
|
22
|
+
<%% end %>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<%% columns = [
|
|
2
|
+
{
|
|
3
|
+
label: "ID",
|
|
4
|
+
field: "id"
|
|
5
|
+
}
|
|
6
|
+
] %>
|
|
7
|
+
|
|
8
|
+
<%%= render(LesliView::Layout::Container.new("<%= engine_domain_name %> - <%= resource_collection_name %>")) do %>
|
|
9
|
+
<%%= render(LesliView::Components::Header.new("<%= resource_collection_name.humanize %>", new_path: new_<%= resource_name %>_path)) %>
|
|
10
|
+
<%%= render(LesliView::Components::Toolbar.new) %>
|
|
11
|
+
|
|
12
|
+
<%%= render(LesliView::Elements::Table.new(
|
|
13
|
+
columns: columns,
|
|
14
|
+
records: <%= resource_collection_instance %>.dig(:records),
|
|
15
|
+
link: -> (<%= resource_name %>) { <%= resource_name %>_path(<%= resource_name %>.id) }
|
|
16
|
+
)) %>
|
|
17
|
+
<%% end %>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%%= render(LesliView::Layout::Container.new("<%= engine_domain_name %>-<%= resource_collection_name %>")) do %>
|
|
2
|
+
|
|
3
|
+
<%%= render(LesliView::Components::Header.new("<%= resource_class_name %>")) %>
|
|
4
|
+
|
|
5
|
+
<%%= render(LesliView::Components::Tabs.new(active_tab: "<%= resource_name %>-information")) do |tabs| %>
|
|
6
|
+
<%% tabs.with_tab(id:"<%= resource_name %>-information", title:"Information", icon:"info") do %>
|
|
7
|
+
<%%= render("form") %>
|
|
8
|
+
<%% end %>
|
|
9
|
+
|
|
10
|
+
<%% tabs.with_tab(id:"<%= resource_name %>-discussions", title:"Discussions", icon:"forum") do %>
|
|
11
|
+
<%%= render(LesliView::Items::Discussions.new(<%= resource_instance %>)) %>
|
|
12
|
+
<%% end %>
|
|
13
|
+
|
|
14
|
+
<%% tabs.with_tab(id:"<%= resource_name %>-tasks", title:"Tasks", icon:"checklist") do %>
|
|
15
|
+
<%%= render(LesliView::Item::Tasks.new(<%= resource_instance %>)) %>
|
|
16
|
+
<%% end %>
|
|
17
|
+
|
|
18
|
+
<%% tabs.with_tab(id:"<%= resource_name %>-activities", title:"Activities", icon:"search_activity") do %>
|
|
19
|
+
<%%= render(LesliView::Items::Activities.new(<%= resource_instance %>)) %>
|
|
20
|
+
<%% end %>
|
|
21
|
+
<%% end %>
|
|
22
|
+
<%% end %>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require_relative "../base_generator"
|
|
5
|
+
|
|
6
|
+
module Lesli
|
|
7
|
+
module Generators
|
|
8
|
+
# Generates Lesli-style views for a resource inside the current engine.
|
|
9
|
+
#
|
|
10
|
+
# Example:
|
|
11
|
+
# rails generate lesli:views tickets subject:string description:text owner_id:integer
|
|
12
|
+
#
|
|
13
|
+
# Result:
|
|
14
|
+
# app/views/lesli_support/tickets/
|
|
15
|
+
# _form.html.erb
|
|
16
|
+
# index.html.erb
|
|
17
|
+
# show.html.erb
|
|
18
|
+
# new.html.erb
|
|
19
|
+
# edit.html.erb
|
|
20
|
+
class ViewsGenerator < BaseGenerator
|
|
21
|
+
argument :attributes, type: :array, default: [], banner: "field:type field:type"
|
|
22
|
+
|
|
23
|
+
source_root File.expand_path("templates", __dir__)
|
|
24
|
+
|
|
25
|
+
# Creates the views directory if it does not exist.
|
|
26
|
+
def create_views_directory
|
|
27
|
+
empty_directory views_directory
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Generates the shared form partial.
|
|
31
|
+
def create_form_partial
|
|
32
|
+
template "_form.html.erb.tt", File.join(views_directory, "_form.html.erb")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Generates the index view.
|
|
36
|
+
def create_index_view
|
|
37
|
+
template "index.html.erb.tt", File.join(views_directory, "index.html.erb")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Generates the show view.
|
|
41
|
+
def create_show_view
|
|
42
|
+
template "show.html.erb.tt", File.join(views_directory, "show.html.erb")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Generates the new view.
|
|
46
|
+
def create_new_view
|
|
47
|
+
template "new.html.erb.tt", File.join(views_directory, "new.html.erb")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
# Returns the target views directory for the current resource.
|
|
53
|
+
#
|
|
54
|
+
# Example:
|
|
55
|
+
# app/views/lesli_support/tickets
|
|
56
|
+
def views_directory
|
|
57
|
+
File.join(ENGINE_ROOT, "app/views", engine_name, resource_collection_name)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Returns only scalar-like attributes that can be rendered
|
|
61
|
+
# as regular text inputs by default.
|
|
62
|
+
def form_attributes
|
|
63
|
+
permitted_attributes.reject do |attribute|
|
|
64
|
+
attribute.end_with?("_id") || attribute == "id"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Returns attributes that look like foreign keys.
|
|
69
|
+
#
|
|
70
|
+
# Example:
|
|
71
|
+
# owner_id, category_id, priority_id
|
|
72
|
+
#
|
|
73
|
+
# These are rendered as generic select controls.
|
|
74
|
+
def select_attributes
|
|
75
|
+
permitted_attributes.select { |attribute| attribute.end_with?("_id") }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Returns the default columns used for the index table.
|
|
79
|
+
#
|
|
80
|
+
# We prefer to include uid first when it exists.
|
|
81
|
+
def index_columns
|
|
82
|
+
columns = []
|
|
83
|
+
|
|
84
|
+
if permitted_attributes.include?("uid")
|
|
85
|
+
columns << { label: "ID", field: "uid" }
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
form_attributes.each do |attribute|
|
|
89
|
+
columns << {
|
|
90
|
+
label: attribute.humanize,
|
|
91
|
+
field: attribute
|
|
92
|
+
}
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
select_attributes.each do |attribute|
|
|
96
|
+
columns << {
|
|
97
|
+
label: attribute.delete_suffix("_id").humanize,
|
|
98
|
+
field: attribute
|
|
99
|
+
}
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
columns
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
data/lib/lesli/engine.rb
CHANGED
|
@@ -36,7 +36,7 @@ require "kaminari"
|
|
|
36
36
|
|
|
37
37
|
# · Tools used to build the Lesli Framework
|
|
38
38
|
require "L2"
|
|
39
|
-
|
|
39
|
+
require "termline"
|
|
40
40
|
require "acts_as_paranoid"
|
|
41
41
|
|
|
42
42
|
# The hole Lesli ecosystem depends on current_user, so we
|
|
@@ -48,26 +48,14 @@ require "lesli_view"
|
|
|
48
48
|
require "lesli_assets"
|
|
49
49
|
require "lesli_system"
|
|
50
50
|
|
|
51
|
-
require "importmap-rails"
|
|
52
51
|
require "turbo-rails"
|
|
53
52
|
|
|
54
53
|
module Lesli
|
|
55
54
|
class Engine < ::Rails::Engine
|
|
56
55
|
isolate_namespace Lesli
|
|
57
56
|
|
|
58
|
-
initializer "lesli.importmap", before: "importmap" do |app|
|
|
59
|
-
app.config.importmap.paths << Engine.root.join("config/importmap.rb")
|
|
60
|
-
end
|
|
61
|
-
|
|
62
57
|
initializer :lesli do |app|
|
|
63
58
|
|
|
64
|
-
|
|
65
|
-
# Lesli standard engine configuration
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
# register assets manifest
|
|
69
|
-
#config.assets.precompile += %w[lesli_manifest.js]
|
|
70
|
-
|
|
71
59
|
# register engine migrations path
|
|
72
60
|
unless app.root.to_s.match root.to_s
|
|
73
61
|
config.paths["db/migrate"].expanded.each do |expanded_path|
|
|
@@ -75,20 +63,10 @@ module Lesli
|
|
|
75
63
|
end
|
|
76
64
|
end
|
|
77
65
|
|
|
78
|
-
|
|
79
|
-
# Lesli Framework configuration
|
|
80
|
-
|
|
81
|
-
|
|
82
66
|
# Default languages
|
|
83
67
|
config.i18n.default_locale = :en
|
|
84
68
|
config.i18n.available_locales = [:en]
|
|
85
69
|
|
|
86
|
-
# Force to not use digest,
|
|
87
|
-
# if this is not false Rails will fingerprint the assets by default
|
|
88
|
-
# and precompile will be needed, so, donot digest if not production
|
|
89
|
-
#config.assets.digest = false unless Rails.env.production?
|
|
90
|
-
|
|
91
|
-
|
|
92
70
|
# Lesli Framework Mailer configuration
|
|
93
71
|
|
|
94
72
|
|
data/lib/lesli/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lesli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.0
|
|
4
|
+
version: 5.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- The Lesli Development Team
|
|
@@ -29,28 +29,14 @@ dependencies:
|
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version:
|
|
32
|
+
version: 2.0.0
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version:
|
|
40
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: importmap-rails
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '2.2'
|
|
47
|
-
type: :runtime
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '2.2'
|
|
39
|
+
version: 2.0.0
|
|
54
40
|
- !ruby/object:Gem::Dependency
|
|
55
41
|
name: acts_as_paranoid
|
|
56
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -85,70 +71,84 @@ dependencies:
|
|
|
85
71
|
requirements:
|
|
86
72
|
- - "~>"
|
|
87
73
|
- !ruby/object:Gem::Version
|
|
88
|
-
version:
|
|
74
|
+
version: 5.0.0
|
|
89
75
|
type: :runtime
|
|
90
76
|
prerelease: false
|
|
91
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
78
|
requirements:
|
|
93
79
|
- - "~>"
|
|
94
80
|
- !ruby/object:Gem::Version
|
|
95
|
-
version:
|
|
81
|
+
version: 5.0.0
|
|
96
82
|
- !ruby/object:Gem::Dependency
|
|
97
83
|
name: lesli_date
|
|
98
84
|
requirement: !ruby/object:Gem::Requirement
|
|
99
85
|
requirements:
|
|
100
86
|
- - "~>"
|
|
101
87
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: 1.
|
|
88
|
+
version: 1.1.0
|
|
103
89
|
type: :runtime
|
|
104
90
|
prerelease: false
|
|
105
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
92
|
requirements:
|
|
107
93
|
- - "~>"
|
|
108
94
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: 1.
|
|
95
|
+
version: 1.1.0
|
|
110
96
|
- !ruby/object:Gem::Dependency
|
|
111
97
|
name: lesli_view
|
|
112
98
|
requirement: !ruby/object:Gem::Requirement
|
|
113
99
|
requirements:
|
|
114
100
|
- - "~>"
|
|
115
101
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: 1.
|
|
102
|
+
version: 1.1.0
|
|
117
103
|
type: :runtime
|
|
118
104
|
prerelease: false
|
|
119
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
106
|
requirements:
|
|
121
107
|
- - "~>"
|
|
122
108
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: 1.
|
|
109
|
+
version: 1.1.0
|
|
124
110
|
- !ruby/object:Gem::Dependency
|
|
125
111
|
name: lesli_assets
|
|
126
112
|
requirement: !ruby/object:Gem::Requirement
|
|
127
113
|
requirements:
|
|
128
114
|
- - "~>"
|
|
129
115
|
- !ruby/object:Gem::Version
|
|
130
|
-
version: 1.
|
|
116
|
+
version: 1.1.0
|
|
131
117
|
type: :runtime
|
|
132
118
|
prerelease: false
|
|
133
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
134
120
|
requirements:
|
|
135
121
|
- - "~>"
|
|
136
122
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: 1.
|
|
123
|
+
version: 1.1.0
|
|
138
124
|
- !ruby/object:Gem::Dependency
|
|
139
125
|
name: lesli_system
|
|
140
126
|
requirement: !ruby/object:Gem::Requirement
|
|
141
127
|
requirements:
|
|
142
128
|
- - "~>"
|
|
143
129
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: 1.
|
|
130
|
+
version: 1.1.0
|
|
145
131
|
type: :runtime
|
|
146
132
|
prerelease: false
|
|
147
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
148
134
|
requirements:
|
|
149
135
|
- - "~>"
|
|
150
136
|
- !ruby/object:Gem::Version
|
|
151
|
-
version: 1.
|
|
137
|
+
version: 1.1.0
|
|
138
|
+
- !ruby/object:Gem::Dependency
|
|
139
|
+
name: termline
|
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - "~>"
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: 1.1.0
|
|
145
|
+
type: :runtime
|
|
146
|
+
prerelease: false
|
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - "~>"
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: 1.1.0
|
|
152
152
|
- !ruby/object:Gem::Dependency
|
|
153
153
|
name: L2
|
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -163,8 +163,9 @@ dependencies:
|
|
|
163
163
|
- - "~>"
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
165
|
version: '0.6'
|
|
166
|
-
description:
|
|
167
|
-
|
|
166
|
+
description: |
|
|
167
|
+
Lesli is a Ruby on Rails framework that provides modular architecture
|
|
168
|
+
and reusable engines for building scalable business software.
|
|
168
169
|
email:
|
|
169
170
|
- hello@lesli.tech
|
|
170
171
|
executables: []
|
|
@@ -172,17 +173,7 @@ extensions: []
|
|
|
172
173
|
extra_rdoc_files: []
|
|
173
174
|
files:
|
|
174
175
|
- Rakefile
|
|
175
|
-
- app/assets/config/lesli_manifest.js
|
|
176
|
-
- app/assets/images/lesli/brand/app-auth.svg
|
|
177
|
-
- app/assets/images/lesli/brand/app-icon.svg
|
|
178
|
-
- app/assets/images/lesli/brand/app-logo.png
|
|
179
|
-
- app/assets/images/lesli/brand/app-logo.svg
|
|
180
|
-
- app/assets/images/lesli/brand/favicon.png
|
|
181
|
-
- app/assets/images/lesli/brand/favicon.svg
|
|
182
|
-
- app/assets/images/lesli/brand/login-background.jpg
|
|
183
|
-
- app/assets/images/lesli/brand/register-background.jpg
|
|
184
176
|
- app/assets/images/lesli/lesli-logo.svg
|
|
185
|
-
- app/assets/javascripts/lesli/application.js
|
|
186
177
|
- app/assets/stylesheets/lesli/application.css
|
|
187
178
|
- app/controllers/lesli/abouts_controller.rb
|
|
188
179
|
- app/controllers/lesli/application_controller.rb
|
|
@@ -250,7 +241,6 @@ files:
|
|
|
250
241
|
- app/views/lesli/shared/dashboards/edit.html.erb
|
|
251
242
|
- app/views/lesli/shared/dashboards/show.html.erb
|
|
252
243
|
- config/brakeman.yml
|
|
253
|
-
- config/importmap.rb
|
|
254
244
|
- config/initializers/devise.rb
|
|
255
245
|
- config/initializers/lesli.rb
|
|
256
246
|
- config/initializers/lesli_migration_helpers.rb
|
|
@@ -269,23 +259,26 @@ files:
|
|
|
269
259
|
- db/seed/users.rb
|
|
270
260
|
- db/seed/xyz.rb
|
|
271
261
|
- db/seeds.rb
|
|
272
|
-
- lib/generators/
|
|
262
|
+
- lib/generators/lesli/base_generator.rb
|
|
263
|
+
- lib/generators/lesli/controller/controller_generator.rb
|
|
264
|
+
- lib/generators/lesli/controller/templates/controller.rb.tt
|
|
273
265
|
- lib/generators/lesli/install/USAGE
|
|
274
266
|
- lib/generators/lesli/install/install_generator.rb
|
|
275
267
|
- lib/generators/lesli/install/templates/lesli.rb
|
|
276
|
-
- lib/generators/lesli/
|
|
277
|
-
- lib/generators/lesli/
|
|
278
|
-
- lib/generators/lesli/
|
|
279
|
-
- lib/generators/lesli/
|
|
280
|
-
- lib/generators/lesli/
|
|
281
|
-
- lib/generators/lesli/
|
|
282
|
-
- lib/generators/lesli/
|
|
283
|
-
- lib/generators/lesli/
|
|
268
|
+
- lib/generators/lesli/model/model_generator.rb
|
|
269
|
+
- lib/generators/lesli/model/templates/model.rb.tt
|
|
270
|
+
- lib/generators/lesli/scaffold/scaffold_generator.rb
|
|
271
|
+
- lib/generators/lesli/service/service_generator.rb
|
|
272
|
+
- lib/generators/lesli/service/templates/service.rb.tt
|
|
273
|
+
- lib/generators/lesli/views/templates/_form.html.erb.tt
|
|
274
|
+
- lib/generators/lesli/views/templates/index.html.erb.tt
|
|
275
|
+
- lib/generators/lesli/views/templates/new.html.erb.tt
|
|
276
|
+
- lib/generators/lesli/views/templates/show.html.erb.tt
|
|
277
|
+
- lib/generators/lesli/views/views_generator.rb
|
|
284
278
|
- lib/lesli.rb
|
|
285
279
|
- lib/lesli/configuration.rb
|
|
286
280
|
- lib/lesli/courier.rb
|
|
287
281
|
- lib/lesli/engine.rb
|
|
288
|
-
- lib/lesli/r_spec.rb
|
|
289
282
|
- lib/lesli/router.rb
|
|
290
283
|
- lib/lesli/version.rb
|
|
291
284
|
- lib/migrate/common.rb
|
|
@@ -297,8 +290,6 @@ files:
|
|
|
297
290
|
- lib/migrate/items/version_structure.rb
|
|
298
291
|
- lib/migrate/shared/account_structure.rb
|
|
299
292
|
- lib/migrate/shared/catalog_structure.rb
|
|
300
|
-
- lib/scss/_apps.scss
|
|
301
|
-
- lib/scss/application.scss
|
|
302
293
|
- lib/tasks/lesli/db.rake
|
|
303
294
|
- lib/tasks/lesli/dev.rake
|
|
304
295
|
- lib/tasks/lesli/engine.rake
|
|
@@ -323,7 +314,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
323
314
|
requirements:
|
|
324
315
|
- - ">="
|
|
325
316
|
- !ruby/object:Gem::Version
|
|
326
|
-
version: '3.
|
|
317
|
+
version: '3.0'
|
|
318
|
+
- - "<"
|
|
319
|
+
- !ruby/object:Gem::Version
|
|
320
|
+
version: '4.0'
|
|
327
321
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
328
322
|
requirements:
|
|
329
323
|
- - ">="
|
|
@@ -332,5 +326,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
332
326
|
requirements: []
|
|
333
327
|
rubygems_version: 3.7.1
|
|
334
328
|
specification_version: 4
|
|
335
|
-
summary: Ruby on Rails
|
|
329
|
+
summary: A modular framework for building business software with Ruby on Rails.
|
|
336
330
|
test_files: []
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Lesli
|
|
3
|
-
|
|
4
|
-
Copyright (c) 2023, Lesli Technologies, S. A.
|
|
5
|
-
|
|
6
|
-
This program is free software: you can redistribute it and/or modify
|
|
7
|
-
it under the terms of the GNU General Public License as published by
|
|
8
|
-
the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
(at your option) any later version.
|
|
10
|
-
|
|
11
|
-
This program is distributed in the hope that it will be useful,
|
|
12
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
GNU General Public License for more details.
|
|
15
|
-
|
|
16
|
-
You should have received a copy of the GNU General Public License
|
|
17
|
-
along with this program. If not, see http://www.gnu.org/licenses/.
|
|
18
|
-
|
|
19
|
-
Lesli · Ruby on Rails SaaS Development Framework.
|
|
20
|
-
|
|
21
|
-
Made with ♥ by https://www.lesli.tech
|
|
22
|
-
Building a better future, one line of code at a time.
|
|
23
|
-
|
|
24
|
-
@contact hello@lesli.tech
|
|
25
|
-
@website https://www.lesli.dev
|
|
26
|
-
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
|
27
|
-
|
|
28
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
29
|
-
// ·
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// · Engine images
|
|
34
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
35
|
-
//= link_tree ../images/lesli .png
|
|
36
|
-
//= link_tree ../images/lesli .jpg
|
|
37
|
-
//= link_tree ../images/lesli .svg
|
|
38
|
-
|
|
39
|
-
// · Engine styles and scripts
|
|
40
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
41
|
-
//= link lesli/application.css
|
|
42
|
-
//= link lesli/application.js
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" width="100" height="91.877" viewBox="0 0 100 91.877">
|
|
2
|
-
<path fill="#214fbd" d="M19.697 45.94 34.85 72.18H65.15l15.147-26.24L65.15 19.698H34.85Z"/>
|
|
3
|
-
<path fill="#214fbd" d="M34.596 39.395c10.878 0 19.697-8.82 19.697-19.698S45.474 0 34.596 0C23.717 0 14.898 8.819 14.898 19.697c0 10.879 8.819 19.698 19.698 19.698z"/>
|
|
4
|
-
<path fill="#214fbd" d="M65.293 39.395c10.878 0 19.697-8.82 19.697-19.698S76.17 0 65.293 0C54.414 0 45.595 8.819 45.595 19.697c0 10.879 8.819 19.698 19.698 19.698zM34.596 91.877c10.878 0 19.697-8.819 19.697-19.697 0-10.879-8.819-19.698-19.697-19.698-10.879 0-19.698 8.819-19.698 19.698 0 10.878 8.819 19.697 19.698 19.697z"/>
|
|
5
|
-
<path fill="#214fbd" d="M65.293 91.877c10.878 0 19.697-8.819 19.697-19.697 0-10.879-8.819-19.698-19.697-19.698-10.879 0-19.698 8.819-19.698 19.698 0 10.878 8.819 19.697 19.698 19.697z"/>
|
|
6
|
-
<path fill="#214fbd" d="M80.303 65.638C91.18 65.638 100 56.82 100 45.941c0-10.879-8.819-19.697-19.697-19.697-10.879 0-19.698 8.818-19.698 19.697 0 10.878 8.82 19.697 19.698 19.697zM19.697 65.638c10.879 0 19.698-8.819 19.698-19.697 0-10.879-8.82-19.697-19.698-19.697S0 35.062 0 45.94c0 10.878 8.819 19.697 19.697 19.697Z"/>
|
|
7
|
-
<path fill="#fff" d="M51.192 25.635h-6.06V65.03h6.06z"/>
|
|
8
|
-
<path fill="#fff" d="M28.468 42.305v6.06h39.394v-6.06Z"/>
|
|
9
|
-
</svg>
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
-
<svg
|
|
3
|
-
inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
|
|
4
|
-
height="792.88586"
|
|
5
|
-
width="913.88531"
|
|
6
|
-
sodipodi:docname="app-icon.svg"
|
|
7
|
-
version="1.1"
|
|
8
|
-
viewBox="0 0 913.88531 792.88586"
|
|
9
|
-
data-name="Layer 1"
|
|
10
|
-
id="Layer_1"
|
|
11
|
-
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
12
|
-
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
13
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
14
|
-
xmlns:svg="http://www.w3.org/2000/svg">
|
|
15
|
-
<sodipodi:namedview
|
|
16
|
-
inkscape:current-layer="Layer_1"
|
|
17
|
-
inkscape:window-maximized="0"
|
|
18
|
-
inkscape:window-y="25"
|
|
19
|
-
inkscape:window-x="0"
|
|
20
|
-
inkscape:cy="396.13491"
|
|
21
|
-
inkscape:cx="457.9763"
|
|
22
|
-
inkscape:zoom="0.85703125"
|
|
23
|
-
showgrid="false"
|
|
24
|
-
id="namedview19"
|
|
25
|
-
inkscape:window-height="996"
|
|
26
|
-
inkscape:window-width="1792"
|
|
27
|
-
inkscape:pageshadow="2"
|
|
28
|
-
inkscape:pageopacity="0"
|
|
29
|
-
guidetolerance="10"
|
|
30
|
-
gridtolerance="10"
|
|
31
|
-
objecttolerance="10"
|
|
32
|
-
borderopacity="1"
|
|
33
|
-
bordercolor="#666666"
|
|
34
|
-
pagecolor="#ffffff"
|
|
35
|
-
inkscape:showpageshadow="2"
|
|
36
|
-
inkscape:pagecheckerboard="0"
|
|
37
|
-
inkscape:deskcolor="#d1d1d1" />
|
|
38
|
-
<defs
|
|
39
|
-
id="defs12">
|
|
40
|
-
<style
|
|
41
|
-
id="style10">.cls-1{fill:#214FBD;}</style>
|
|
42
|
-
</defs>
|
|
43
|
-
<path
|
|
44
|
-
style="stroke-width:1.32288"
|
|
45
|
-
id="path16"
|
|
46
|
-
d="M 820.53981,396.44304 A 143.16576,140.81379 0 0 0 702.2777,257.84649 143.1124,140.76129 0 0 0 456.54962,120.56192 143.07239,140.72194 0 0 0 210.86154,257.95145 a 143.1124,140.76129 0 0 0 0,276.98318 A 143.1124,140.76129 0 0 0 456.54962,672.32416 143.07239,140.72194 0 0 0 702.2777,535.03958 143.16576,140.81379 0 0 0 820.53981,396.44304 Z M 465.64669,508.53778 v 24.44202 h -44.01816 v -93.64846 a 25.984058,25.557183 0 0 0 -26.03741,-25.55718 h -95.21263 v -43.29502 h 95.21263 a 25.997396,25.570302 0 0 0 25.98405,-25.5703 v -93.6878 h 44.01816 v 93.63533 a 26.010735,25.583422 0 0 0 26.03742,25.5703 h 95.1993 v 43.29502 h -95.1993 a 25.997396,25.570302 0 0 0 -25.9974,25.55718 v 69.20644 z"
|
|
47
|
-
class="cls-1" />
|
|
48
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="#0d52bf" data-name="Layer 1" viewBox="0 0 716.56 292.44">
|
|
2
|
-
<path d="M214.181 204.066v40.883H105.328V59.095h42.48v144.97zM294.859 213.088c10.885 0 20.18-4.242 25.49-10.09l31.86 18.324c-13.014 18.051-32.656 27.346-57.916 27.346-45.404 0-73.546-30.535-73.546-70.092s28.756-70.099 70.685-70.099c38.762 0 67.44 30.005 67.44 70.099a77.279 77.279 0 0 1-1.59 15.93h-94.256c5.045 13.802 17.256 18.582 31.833 18.582zm24.422-48.321c-4.243-15.4-16.196-20.975-28.142-20.975-15.134 0-25.224 7.438-28.936 20.975zM476.476 205.126c0 30.528-26.515 43.542-55.222 43.542-26.515 0-46.751-10.09-57.085-31.596l34.519-19.649c3.447 10.09 10.885 15.665 22.566 15.665 9.56 0 14.332-2.917 14.332-8.227 0-14.604-65.312-6.908-65.312-52.836 0-28.943 24.423-43.548 52.04-43.548 21.506 0 40.625 9.56 51.776 28.414L440.1 155.207c-3.72-6.9-9.022-11.68-17.786-11.68-6.901 0-11.165 2.658-11.165 7.43.014 15.136 65.326 5.046 65.326 54.17zM493.725 51.134h39.823v193.815h-39.823zM560.091 112.196h39.83V244.95h-39.83z" class="cls-1"/>
|
|
3
|
-
<circle cx="580.006" cy="69.932" r="25.322" class="cls-1"/>
|
|
4
|
-
</svg>
|
|
Binary file
|