lesli 5.0.14 → 5.0.16
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/controllers/lesli/abouts_controller.rb +4 -0
- data/app/views/lesli/abouts/welcome.html.erb +144 -0
- data/app/views/lesli/layouts/application-public.html.erb +1 -2
- data/app/views/lesli/partials/_application-public-scss.html.erb +1 -1
- data/app/views/lesli/shared/dashboards/_show.html.erb +6 -4
- data/lib/lesli/engine.rb +6 -1
- data/lib/lesli/routing.rb +2 -2
- data/lib/lesli/version.rb +2 -2
- data/lib/tasks/lesli/dev.rake +0 -15
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3df5368cbe7fef596fc11570d2b55dca003982b551fb55c46a4c492a4913e7e0
|
4
|
+
data.tar.gz: cc51e2812cad505575e7d1f131eb7d23ec59d45ba153d8b7c654c4a20fe5d0e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e50d7980d7380551ae202e58f5285b64e4dc97534950c30d81347a2ae9e85c82b3475f7435946ae20c34a2f473b7c10771f7b434f057043a84649d9fcfa2ba03
|
7
|
+
data.tar.gz: 9c316b8a9127f40f1b637f943eaec9299c532fb1bd91a5d1cb914bd599480499f5096c3eeb1064e4939a9e2a3888b7a77f6ab3f7e14d05cd5c138f329053c3e6
|
@@ -32,11 +32,15 @@ Building a better future, one line of code at a time.
|
|
32
32
|
|
33
33
|
module Lesli
|
34
34
|
class AboutsController < ApplicationLesliController
|
35
|
+
layout "lesli/layouts/application-public", only: [:welcome]
|
35
36
|
|
36
37
|
# def status
|
37
38
|
# respond_with_successful({ :Lesli => "Ruby on Rails SaaS Development Framework." })
|
38
39
|
# end
|
39
40
|
|
41
|
+
def welcome
|
42
|
+
end
|
43
|
+
|
40
44
|
# GET /status
|
41
45
|
def show
|
42
46
|
respond_to do |format|
|
@@ -0,0 +1,144 @@
|
|
1
|
+
<style>
|
2
|
+
html, body {
|
3
|
+
margin: 0;
|
4
|
+
padding: 0;
|
5
|
+
}
|
6
|
+
|
7
|
+
html, body, * {
|
8
|
+
box-sizing: border-box;
|
9
|
+
}
|
10
|
+
|
11
|
+
.page-welcome {
|
12
|
+
display: flex;
|
13
|
+
flex-direction: column;
|
14
|
+
justify-content: center;
|
15
|
+
align-content: center;
|
16
|
+
align-items: center;
|
17
|
+
height: 100vh;
|
18
|
+
padding-bottom: 4rem;
|
19
|
+
background-size: 115px 115px;
|
20
|
+
background-color: #ffffff;
|
21
|
+
background-position: 0 0,55px 55px;
|
22
|
+
background-image:
|
23
|
+
radial-gradient(#0d52bf 2px, transparent 2px),
|
24
|
+
radial-gradient(#0d52bf 2px, #ffffff 2px);
|
25
|
+
animation: rotateBackground 12s linear infinite;
|
26
|
+
}
|
27
|
+
|
28
|
+
.page-welcome svg {
|
29
|
+
width: 320px;
|
30
|
+
background-color: white;
|
31
|
+
}
|
32
|
+
|
33
|
+
.page-welcome h1 {
|
34
|
+
font-size: 4rem;
|
35
|
+
max-width: 960px;
|
36
|
+
font-weight: 900;
|
37
|
+
text-align: center;
|
38
|
+
line-height: 1.1;
|
39
|
+
margin: 0px auto 2rem;
|
40
|
+
letter-spacing: -.5px;
|
41
|
+
background-color: white;
|
42
|
+
color: #4d4d4d;
|
43
|
+
}
|
44
|
+
|
45
|
+
.page-welcome h1 span {
|
46
|
+
background: -webkit-linear-gradient(315deg,#0D52Bf 25%,#001F66);
|
47
|
+
background-clip: border-box;
|
48
|
+
background-clip: text;
|
49
|
+
-webkit-background-clip: text;
|
50
|
+
-webkit-text-fill-color: transparent;
|
51
|
+
}
|
52
|
+
|
53
|
+
.page-welcome a {
|
54
|
+
font-size: 1.4rem;
|
55
|
+
font-family: "OpenSans", "Ubuntu", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
|
56
|
+
background-color: white;
|
57
|
+
color: #001F66;
|
58
|
+
display: flex;
|
59
|
+
align-items: center;
|
60
|
+
}
|
61
|
+
|
62
|
+
.buttons {
|
63
|
+
margin-bottom: 2rem;
|
64
|
+
}
|
65
|
+
|
66
|
+
.buttons a {
|
67
|
+
border: none;
|
68
|
+
display: inline-block;
|
69
|
+
text-decoration: none;
|
70
|
+
border-radius: 8px;
|
71
|
+
box-shadow: 0 2px 8px -1px rgba(10, 22, 50, .24);
|
72
|
+
|
73
|
+
margin: 0;
|
74
|
+
color: #ffffff;
|
75
|
+
padding: 14px 40px;
|
76
|
+
text-align: center;
|
77
|
+
font-size: 1rem;
|
78
|
+
font-weight: 500;
|
79
|
+
line-height: 28px;
|
80
|
+
}
|
81
|
+
|
82
|
+
.buttons a.doc {
|
83
|
+
background: #184fee;
|
84
|
+
}
|
85
|
+
|
86
|
+
.buttons a.start {
|
87
|
+
background: #444444;
|
88
|
+
}
|
89
|
+
|
90
|
+
@media only screen and (max-width: 600px) {
|
91
|
+
.page-welcome svg {
|
92
|
+
width: 250px;
|
93
|
+
}
|
94
|
+
|
95
|
+
.page-welcome h1 {
|
96
|
+
padding: 0 1rem;
|
97
|
+
font-size: 2.7rem;
|
98
|
+
}
|
99
|
+
|
100
|
+
.buttons a {
|
101
|
+
padding: 14px 20px;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
@keyframes rotateBackground {
|
106
|
+
to {
|
107
|
+
background-position: 115px 115px, 170px 170px;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
</style>
|
111
|
+
|
112
|
+
<section class="page-welcome">
|
113
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="#0d52bf" data-name="Layer 1" viewBox="0 0 716.56 292.44">
|
114
|
+
<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"/>
|
115
|
+
<circle cx="580.006" cy="69.932" r="25.322" class="cls-1"/>
|
116
|
+
</svg>
|
117
|
+
<h1>
|
118
|
+
The Open Source Ruby on Rails <span>SaaS Development Framework</span>
|
119
|
+
</h1>
|
120
|
+
<div class="buttons">
|
121
|
+
<a class="doc" target="blank" href="https://www.lesli.dev/">
|
122
|
+
Documentation
|
123
|
+
</a>
|
124
|
+
<a class="start" target="blank" href="https://www.lesli.dev/start/">
|
125
|
+
Getting started
|
126
|
+
</a>
|
127
|
+
</div>
|
128
|
+
<% if defined?(LesliShield) %>
|
129
|
+
<%= link_to("Dashboard", "/dashboard") if user_signed_in? && defined?(LesliDashboard) %>
|
130
|
+
<%= link_to("Logout", "/logout") if user_signed_in? %>
|
131
|
+
<%= link_to("Login", "/login") unless user_signed_in? %>
|
132
|
+
<% end %>
|
133
|
+
</section>
|
134
|
+
|
135
|
+
<% if Rails.env.production? %>
|
136
|
+
<!-- Google tag (gtag.js) -->
|
137
|
+
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LJRTGWVRCC"></script>
|
138
|
+
<script>
|
139
|
+
window.dataLayer = window.dataLayer || [];
|
140
|
+
function gtag(){dataLayer.push(arguments);}
|
141
|
+
gtag('js', new Date());
|
142
|
+
gtag('config', 'G-LJRTGWVRCC');
|
143
|
+
</script>
|
144
|
+
<% end %>
|
@@ -51,8 +51,7 @@ Building a better future, one line of code at a time.
|
|
51
51
|
</head>
|
52
52
|
<body class="<%= application_body_class() %>">
|
53
53
|
<%#= yield :application_public_custom_header %>
|
54
|
-
|
55
|
-
<%#= yield %>
|
54
|
+
<%= yield %>
|
56
55
|
<%= render partial: "lesli/partials/application-public-javascript" %>
|
57
56
|
<%= render partial: "lesli/partials/application-analytics" %>
|
58
57
|
</body>
|
@@ -53,11 +53,13 @@ end
|
|
53
53
|
</div>
|
54
54
|
</section>
|
55
55
|
|
56
|
-
|
56
|
+
<%#= render(LesliView::Elements::Empty.new(text: "Empty dashboard")) if @dashboard[:components].blank? %>
|
57
|
+
|
58
|
+
<%= dd @dashboard %>
|
57
59
|
|
58
60
|
<div class="columns is-multiline is-variable is-4 dashboard-components">
|
59
|
-
|
60
|
-
|
61
|
-
|
61
|
+
<%# @dashboard[:components].each do |component| %>
|
62
|
+
<%#= render("#{controller.controller_path}/component-#{component}", { :component => component }) %>
|
63
|
+
<%# end %>
|
62
64
|
</div>
|
63
65
|
<% end %>
|
data/lib/lesli/engine.rb
CHANGED
@@ -40,8 +40,13 @@ require "ancestry"
|
|
40
40
|
require "useragent"
|
41
41
|
require "acts_as_paranoid"
|
42
42
|
|
43
|
-
require "
|
43
|
+
require "lesli_date"
|
44
|
+
require "lesli_view"
|
45
|
+
require "lesli_assets"
|
46
|
+
require "lesli_system"
|
47
|
+
|
44
48
|
require "importmap-rails"
|
49
|
+
require "turbo-rails"
|
45
50
|
|
46
51
|
module Lesli
|
47
52
|
class Engine < ::Rails::Engine
|
data/lib/lesli/routing.rb
CHANGED
@@ -40,7 +40,7 @@ module Lesli
|
|
40
40
|
LesliShield::Routing.mount_login_at(path) if defined?(LesliShield);
|
41
41
|
|
42
42
|
# Load generic yet standard routes if LesliShield is not installed
|
43
|
-
|
43
|
+
if !defined?(LesliShield) && defined?(Devise)
|
44
44
|
Rails.application.routes.draw do
|
45
45
|
devise_for(:users, class_name: "Lesli::User", module: :devise)
|
46
46
|
end
|
@@ -50,6 +50,7 @@ module Lesli
|
|
50
50
|
def self.mount
|
51
51
|
self.login
|
52
52
|
Rails.application.routes.draw do
|
53
|
+
root to: "lesli/abouts#welcome", as: :welcome
|
53
54
|
mount Lesli::Engine => "/lesli" if defined?(Lesli)
|
54
55
|
mount LesliBell::Engine => "/bell" if defined?(LesliBell)
|
55
56
|
mount LesliAdmin::Engine => "/admin" if defined?(LesliAdmin)
|
@@ -62,7 +63,6 @@ module Lesli
|
|
62
63
|
mount LesliSecurity::Engine => "/security" if defined?(LesliSecurity)
|
63
64
|
mount LesliCalendar::Engine => "/calendar" if defined?(LesliCalendar)
|
64
65
|
mount LesliDashboard::Engine => "/dashboard" if defined?(LesliDashboard)
|
65
|
-
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
data/lib/lesli/version.rb
CHANGED
data/lib/tasks/lesli/dev.rake
CHANGED
@@ -43,24 +43,9 @@ namespace :lesli do
|
|
43
43
|
# Seed database (development only)
|
44
44
|
def welcome
|
45
45
|
|
46
|
-
# do not execute this task if we are at production level
|
47
|
-
return if Rails.env.production?
|
48
|
-
|
49
46
|
L2.br(4)
|
50
47
|
|
51
48
|
# print the lesli gems
|
52
49
|
Rake::Task['lesli:status'].invoke
|
53
|
-
|
54
|
-
password = Lesli.config.security.dig(:password)
|
55
|
-
password = password + Time.now.year.to_s + "$"
|
56
|
-
user = Lesli::User.first
|
57
|
-
|
58
|
-
L2.line
|
59
|
-
L2.m(" Owner user credentials (demo):")
|
60
|
-
L2.m(" username: #{ user.email }")
|
61
|
-
L2.m(" password: #{ password }")
|
62
|
-
L2.line
|
63
|
-
|
64
|
-
L2.cow "Enjoy your Lesli demo"
|
65
50
|
end
|
66
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lesli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Lesli Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n-js
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '1.0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: lesli_system
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: L2
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -231,6 +245,7 @@ files:
|
|
231
245
|
- app/services/lesli/user_service.rb
|
232
246
|
- app/validators/lesli/application_lesli_validator.rb
|
233
247
|
- app/validators/lesli/users_validator.rb
|
248
|
+
- app/views/lesli/abouts/welcome.html.erb
|
234
249
|
- app/views/lesli/apps/show.html.erb
|
235
250
|
- app/views/lesli/emails/user_mailer/invitation.html.erb
|
236
251
|
- app/views/lesli/layouts/application-devise.html.erb
|