lesli 5.0.11 → 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/config/lesli_manifest.js +0 -13
- data/app/assets/icons/lesli/engine-security.svg +1 -0
- data/app/assets/icons/lesli/engine-shield.svg +1 -0
- data/app/assets/images/lesli/brand/app-logo.png +0 -0
- data/app/assets/images/lesli/lesli-logo.svg +4 -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 +1365 -293
- data/app/assets/stylesheets/lesli/templates/public.css +1 -1
- data/app/controllers/lesli/abouts_controller.rb +12 -18
- data/app/controllers/lesli/application_controller.rb +26 -25
- data/app/controllers/lesli/application_lesli_controller.rb +5 -6
- data/app/controllers/lesli/interfaces/application/authorization.rb +2 -2
- data/app/controllers/lesli/interfaces/application/customization.rb +1 -1
- data/app/controllers/lesli/interfaces/application/requester.rb +2 -2
- data/app/controllers/lesli/interfaces/application/responder.rb +8 -8
- data/app/controllers/lesli/interfaces/controllers/actions.rb +250 -0
- data/app/controllers/lesli/interfaces/controllers/activities.rb +215 -0
- data/app/controllers/lesli/interfaces/controllers/discussions.rb +270 -0
- data/app/controllers/lesli/interfaces/controllers/files.rb +467 -0
- data/app/controllers/lesli/interfaces/controllers/subscribers.rb +234 -0
- data/app/helpers/lesli/assets_helper.rb +26 -8
- data/app/helpers/lesli/navigation_helper.rb +53 -92
- data/app/lib/date2.rb +8 -0
- data/app/lib/lesli/system.rb +17 -4
- data/app/models/concerns/account_initializer.rb +46 -42
- data/app/models/concerns/user_extensions.rb +6 -0
- data/{lib/scss/devise/registrations.scss → app/models/lesli/account/detail.rb} +7 -3
- data/app/models/lesli/account.rb +12 -5
- data/app/models/lesli/cloud_object/action.rb +70 -0
- data/app/models/lesli/cloud_object/activity.rb +311 -0
- data/app/models/lesli/cloud_object/custom_field.rb +158 -0
- data/app/models/lesli/cloud_object/discussion.rb +219 -0
- data/app/models/lesli/cloud_object/subscriber.rb +186 -0
- data/app/models/lesli/shared/dashboard.rb +16 -5
- data/app/models/lesli/user/session.rb +0 -2
- data/app/models/lesli/user.rb +13 -13
- data/app/operators/lesli/controller_operator.rb +4 -1
- data/app/operators/lesli/user_registration_operator.rb +3 -3
- data/app/services/lesli/user_service.rb +1 -1
- data/app/views/lesli/layouts/application-devise.html.erb +6 -6
- data/app/views/lesli/layouts/application-lesli.html.erb +3 -1
- data/app/views/lesli/partials/_application-data.html.erb +5 -4
- data/app/views/lesli/partials/_application-lesli-engines.html.erb +14 -39
- data/app/views/lesli/partials/_application-lesli-header.html.erb +50 -25
- data/app/views/lesli/partials/_application-lesli-icons.html.erb +1 -1
- 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-panels.html.erb +7 -7
- data/app/views/lesli/partials/_application-lesli-scss.html.erb +2 -2
- data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
- data/app/views/lesli/wrappers/_application-devise.html.erb +5 -7
- data/config/initializers/devise.rb +335 -335
- data/config/initializers/lesli.rb +9 -2
- data/config/locales/translations.en.yml +9 -3
- data/config/locales/translations.es.yml +9 -3
- data/config/locales/translations.fr.yml +30 -0
- data/config/locales/translations.it.yml +30 -0
- data/config/locales/translations.pt.yml +30 -0
- data/config/routes.rb +1 -10
- data/db/migrate/{v1.0/0010003010_create_lesli_user_details.rb → v1/0010000110_create_lesli_accounts.rb} +19 -13
- data/db/migrate/{v1.0/0010000110_create_lesli_accounts.rb → v1/0010001010_create_lesli_account_details.rb} +5 -7
- data/db/migrate/{v1.0/0010001010_create_lesli_account_settings.rb → v1/0010001110_create_lesli_account_settings.rb} +2 -2
- data/db/seed/development/accounts.rb +10 -7
- data/db/seed/development/users.rb +20 -20
- data/db/seed/production/accounts.rb +10 -7
- 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 +3 -14
- data/lib/{scss/devise/passwords.scss → lesli/r_spec.rb} +12 -5
- data/lib/lesli/routing.rb +51 -20
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +1 -0
- data/lib/scss/cloud-objects/discussion.scss +8 -5
- data/lib/scss/layouts/application-component.scss +1 -1
- data/lib/scss/{devise/sessions.scss → layouts/application-content.scss} +4 -4
- data/lib/scss/layouts/application-header.scss +38 -108
- data/lib/scss/layouts/{application-navbar.scss → application-navigation.scss} +23 -5
- data/lib/scss/layouts/application-search.scss +1 -1
- data/lib/scss/{elements/msg.scss → overrides/notification.scss} +16 -18
- data/lib/scss/pages/devise-simple.scss +4 -2
- data/lib/scss/pages/devise.scss +111 -107
- data/lib/scss/panels/panel-notification.scss +1 -1
- data/lib/scss/panels/{panel-ticket.scss → panel-support-ticket.scss} +3 -4
- data/lib/scss/settings/variables.scss +1 -1
- data/lib/scss/templates/application.scss +14 -41
- data/lib/scss/templates/public.scss +6 -4
- data/lib/tasks/lesli/controllers.rake +1 -1
- data/lib/tasks/lesli/db.rake +24 -12
- data/lib/tasks/lesli_tasks.rake +7 -7
- data/lib/vue/application.js +18 -15
- data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion/content.vue +10 -8
- data/lib/vue/cloudobjects/discussion/element.vue +170 -0
- data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion/filters.vue +1 -1
- data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion/new.vue +20 -16
- data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion.vue +25 -24
- data/lib/vue/{refactor/stores/cloudobjects → cloudobjects/stores}/discussion.js +7 -16
- data/lib/vue/layouts/application-component.vue +2 -2
- data/lib/vue/layouts/application-header.vue +109 -88
- data/lib/vue/panels/{panel-notifications.vue → panel-bell-notifications.vue} +15 -19
- data/lib/vue/panels/panel-support-tickets.vue +163 -0
- data/lib/vue/panels/stores/bell-notifications.js +46 -0
- data/lib/vue/panels/stores/support-tickets.js +103 -0
- data/lib/vue/shared/dashboards/apps/edit.vue +10 -10
- data/lib/vue/shared/dashboards/components/form.vue +31 -40
- data/lib/vue/shared/stores/dashboard.js +2 -0
- data/lib/vue/shared/stores/layout.js +2 -1
- data/lib/{scss/devise/confirmations.scss → vue/shared/stores/users.js} +22 -21
- data/lib/vue/stores/translations.json +119 -2
- data/lib/webpack/base.js +18 -12
- data/lib/webpack/core.js +16 -12
- data/lib/webpack/engines.js +3 -1
- data/lib/webpack/root.js +105 -0
- data/lib/webpack/version.js +37 -0
- data/readme.md +16 -15
- metadata +58 -92
- data/app/assets/icons/lesli/engine-guard.svg +0 -1
- data/app/assets/javascripts/lesli/users/sessions.js +0 -1
- data/app/assets/stylesheets/lesli/users/sessions.css +0 -1
- data/app/controllers/users/confirmations_controller.rb +0 -66
- data/app/controllers/users/omniauth_callbacks_controller.rb +0 -30
- data/app/controllers/users/passwords_controller.rb +0 -71
- data/app/controllers/users/registrations_controller.rb +0 -141
- data/app/controllers/users/sessions_controller.rb +0 -141
- data/app/controllers/users/unlocks_controller.rb +0 -30
- data/app/views/devise/confirmations/new.html.erb +0 -2
- data/app/views/devise/confirmations/show.html.erb +0 -63
- data/app/views/devise/mailer/confirmation_instructions.html.erb +0 -5
- data/app/views/devise/mailer/email_changed.html.erb +0 -7
- data/app/views/devise/mailer/password_change.html.erb +0 -3
- data/app/views/devise/mailer/reset_password_instructions.html.erb +0 -8
- data/app/views/devise/mailer/unlock_instructions.html.erb +0 -7
- data/app/views/devise/passwords/edit.html.erb +0 -79
- data/app/views/devise/passwords/new.html.erb +0 -75
- data/app/views/devise/registrations/edit.html.erb +0 -43
- data/app/views/devise/registrations/new.html.erb +0 -147
- data/app/views/devise/sessions/new.html.erb +0 -114
- data/app/views/devise/shared/_demo.html.erb +0 -7
- data/app/views/devise/shared/_error_messages.html.erb +0 -15
- data/app/views/devise/shared/_links.html.erb +0 -96
- data/app/views/devise/unlocks/new.html.erb +0 -16
- data/db/migrate/v1.0/0010000210_create_lesli_roles.rb +0 -59
- data/db/migrate/v1.0/0010000310_create_lesli_users.rb +0 -97
- data/db/migrate/v1.0/0010003110_create_lesli_user_settings.rb +0 -44
- data/db/migrate/v1.0/0010003210_create_lesli_user_sessions.rb +0 -55
- data/db/migrate/v1.0/0010003410_create_lesli_user_powers.rb +0 -43
- data/db/migrate/v1.0/0010004010_create_lesli_user_logs.rb +0 -45
- data/db/migrate/v1.0/0010005010_create_lesli_descriptors.rb +0 -44
- data/db/migrate/v1.0/0010005110_create_lesli_descriptor_privileges.rb +0 -45
- data/db/migrate/v1.0/0010005210_create_lesli_descriptor_activities.rb +0 -49
- data/db/migrate/v1.0/0010005510_create_lesli_role_powers.rb +0 -51
- data/db/migrate/v1.0/0010005710_create_lesli_role_privileges.rb +0 -45
- data/lib/scss/bulma/loader.scss +0 -92
- data/lib/scss/components/editor-richtext.scss +0 -88
- data/lib/scss/devise/oauth.scss +0 -34
- data/lib/scss/elements/avatar.scss +0 -48
- data/lib/scss/elements/calendar.scss +0 -47
- data/lib/scss/elements/toggle.scss +0 -102
- data/lib/vue/devise/confirmations.js +0 -33
- data/lib/vue/devise/passwords.js +0 -137
- data/lib/vue/devise/registrations.js +0 -157
- data/lib/vue/devise/sessions.js +0 -148
- data/lib/vue/panels/panel-tickets.vue +0 -181
- data/lib/vue/refactor/shared/cloudobjects/discussion/element.vue +0 -132
- data/lib/vue/shared/stores/account.js +0 -113
- /data/app/assets/icons/lesli/{engine-driver.svg → engine-calendar.svg} +0 -0
- /data/db/migrate/{v1.0 → v1}/0010000610_create_lesli_system_controllers.rb +0 -0
- /data/db/migrate/{v1.0 → v1}/0010000710_create_lesli_system_controller_actions.rb +0 -0
- /data/db/migrate/{v1.0 → v1}/0010001210_create_lesli_account_activities.rb +0 -0
- /data/db/migrate/{v1.0 → v1}/0010001410_create_lesli_account_logs.rb +0 -0
data/lib/webpack/root.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict"
|
|
2
|
+
/*
|
|
3
|
+
Lesli
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
|
6
|
+
|
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
|
8
|
+
it under the terms of the GNU General Public License as published by
|
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
10
|
+
(at your option) any later version.
|
|
11
|
+
|
|
12
|
+
This program is distributed in the hope that it will be useful,
|
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
+
GNU General Public License for more details.
|
|
16
|
+
|
|
17
|
+
You should have received a copy of the GNU General Public License
|
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
|
19
|
+
|
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
|
21
|
+
|
|
22
|
+
Made with ♥ by LesliTech
|
|
23
|
+
Building a better future, one line of code at a time.
|
|
24
|
+
|
|
25
|
+
@contact hello@lesli.tech
|
|
26
|
+
@website https://www.lesli.tech
|
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
|
28
|
+
|
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
30
|
+
// ·
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
// ·
|
|
35
|
+
const fs = require("fs")
|
|
36
|
+
const path = require("path")
|
|
37
|
+
const engine_dir = path.resolve("../", "../", "lib")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
// ·
|
|
41
|
+
module.exports = (env, requestedEngines) => {
|
|
42
|
+
|
|
43
|
+
var entries = []
|
|
44
|
+
|
|
45
|
+
var config = {
|
|
46
|
+
|
|
47
|
+
entry: {
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
// javascript output only,
|
|
51
|
+
// the output for stylesheets is defined in the webpack file itself
|
|
52
|
+
output: {
|
|
53
|
+
path: path.resolve("../", "../", "app", "assets"),
|
|
54
|
+
filename: "javascripts/[name].js"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// scan the vue folder to get all the vue apps
|
|
59
|
+
const vueFolder = path.resolve("../", "../", "lib", "vue")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
if (!fs.existsSync(vueFolder)) {
|
|
63
|
+
return config
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
// filter to remove the folders to get only .js files
|
|
68
|
+
const files = fs.readdirSync(vueFolder, { withFileTypes: true })
|
|
69
|
+
.filter(item => !item.isDirectory())
|
|
70
|
+
.map(item => item.name)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
// register every vue app found
|
|
74
|
+
files.forEach(file => {
|
|
75
|
+
|
|
76
|
+
// path to the vue app main mount file
|
|
77
|
+
const appPath = path.resolve(vueFolder, file)
|
|
78
|
+
|
|
79
|
+
// stop process if vue app does not exists
|
|
80
|
+
if (!fs.existsSync(appPath)) { return; }
|
|
81
|
+
|
|
82
|
+
const appname = path.parse(file).name
|
|
83
|
+
|
|
84
|
+
// add vue apps found into the webpack compilation pipeline
|
|
85
|
+
config.entry[(`${appname}`)] = [
|
|
86
|
+
`${engine_dir}/vue/${appname}.js`,
|
|
87
|
+
`${engine_dir}/scss/${appname}.scss`
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
// check if the engine has vue apps to compile
|
|
94
|
+
if (Object.keys(config.entry).length <= 0) { return }
|
|
95
|
+
|
|
96
|
+
entries.push({ code: "root", dir: engine_dir, config })
|
|
97
|
+
|
|
98
|
+
// do not include the core apps if specific engines were requested
|
|
99
|
+
if (requestedEngines.length > 0 && !requestedEngines.includes("root")) {
|
|
100
|
+
config.entry = {}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return config
|
|
104
|
+
|
|
105
|
+
}
|
data/lib/webpack/version.js
CHANGED
|
@@ -1,8 +1,43 @@
|
|
|
1
|
+
"use strict"
|
|
2
|
+
/*
|
|
3
|
+
Lesli
|
|
1
4
|
|
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
|
6
|
+
|
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
|
8
|
+
it under the terms of the GNU General Public License as published by
|
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
10
|
+
(at your option) any later version.
|
|
11
|
+
|
|
12
|
+
This program is distributed in the hope that it will be useful,
|
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
+
GNU General Public License for more details.
|
|
16
|
+
|
|
17
|
+
You should have received a copy of the GNU General Public License
|
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
|
19
|
+
|
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
|
21
|
+
|
|
22
|
+
Made with ♥ by LesliTech
|
|
23
|
+
Building a better future, one line of code at a time.
|
|
24
|
+
|
|
25
|
+
@contact hello@lesli.tech
|
|
26
|
+
@website https://www.lesli.tech
|
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
|
28
|
+
|
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
30
|
+
// ·
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
// ·
|
|
2
35
|
const fs = require("fs")
|
|
3
36
|
const dayjs = require("dayjs")
|
|
4
37
|
const { useLesliDebug } = require("lesli-vue/composables")
|
|
5
38
|
const advancedFormat = require("dayjs/plugin/advancedFormat")
|
|
39
|
+
|
|
40
|
+
// ·
|
|
6
41
|
dayjs.extend(advancedFormat)
|
|
7
42
|
const debug = useLesliDebug()
|
|
8
43
|
|
|
@@ -19,6 +54,8 @@ module.exports = (env, engine) => {
|
|
|
19
54
|
// set the path to the engine version file by default
|
|
20
55
|
let engine_version_file = `../../engines/${engine.dir}/lib/${engine.code}/version.rb`
|
|
21
56
|
|
|
57
|
+
|
|
58
|
+
//
|
|
22
59
|
fs.readFile(engine_version_file, "utf8", (err, data) => {
|
|
23
60
|
|
|
24
61
|
if (err) {
|
data/readme.md
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img width="200" alt="Lesli logo" src="./app/assets/images/lesli/
|
|
3
|
-
<
|
|
2
|
+
<img width="200" alt="Lesli logo" src="./app/assets/images/lesli/lesli-logo.svg" />
|
|
3
|
+
<h1 align="center">Ruby on Rails SaaS Development Framework.</h1>
|
|
4
4
|
</p>
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
<hr/>
|
|
8
|
-
<p align="center">
|
|
9
|
-
<a target="blank" href="https://rubygems.org/gems/lesli">
|
|
10
|
-
<img height="22" alt="Gem Version" src="https://badge.fury.io/rb/lesli.svg"/>
|
|
11
|
-
</a>
|
|
12
|
-
<a href="https://codecov.io/github/LesliTech/Lesli">
|
|
13
|
-
<img height="22" src="https://codecov.io/github/LesliTech/Lesli/graph/badge.svg?token=2O12NENK5Y"/>
|
|
14
|
-
</a>
|
|
15
|
-
<a href="https://codecov.io/github/LesliTech/Lesli">
|
|
16
|
-
<img height="22" src="https://sonarcloud.io/api/project_badges/measure?project=LesliTech_Lesli&metric=sqale_rating"/>
|
|
17
|
-
</a>
|
|
18
|
-
</p>
|
|
19
|
-
<hr/>
|
|
20
8
|
|
|
9
|
+
<p align="center" class="is-flex is-justify-content-center">
|
|
10
|
+
<a target="blank" href="https://rubygems.org/gems/lesli">
|
|
11
|
+
<img height="22" alt="Gem Version" src="https://badge.fury.io/rb/lesli.svg"/>
|
|
12
|
+
</a>
|
|
13
|
+
<a class="mx-2" href="https://codecov.io/github/LesliTech/Lesli">
|
|
14
|
+
<img height="22" src="https://codecov.io/github/LesliTech/Lesli/graph/badge.svg?token=2O12NENK5Y"/>
|
|
15
|
+
</a>
|
|
16
|
+
<a href="https://codecov.io/github/LesliTech/LesliBabel">
|
|
17
|
+
<img height="22" src="https://sonarcloud.io/api/project_badges/measure?project=LesliTech_LesliBabel&metric=sqale_rating"/>
|
|
18
|
+
</a>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<hr/>
|
|
21
22
|
|
|
22
23
|
<br />
|
|
23
24
|
|
|
24
25
|
<div align="center">
|
|
25
26
|
<img
|
|
26
27
|
style="width:100%;max-width:800px;border-radius:6px;"
|
|
27
|
-
alt="Lesli
|
|
28
|
+
alt="Lesli screenshot" src="./docs/images/screenshot.png" />
|
|
28
29
|
</div>
|
|
29
30
|
|
|
30
31
|
### Introduction
|
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.13
|
|
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: 2024-
|
|
11
|
+
date: 2024-10-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -58,20 +58,6 @@ dependencies:
|
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
60
|
version: 4.2.3
|
|
61
|
-
- !ruby/object:Gem::Dependency
|
|
62
|
-
name: pg
|
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - "~>"
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: 1.5.3
|
|
68
|
-
type: :runtime
|
|
69
|
-
prerelease: false
|
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - "~>"
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: 1.5.3
|
|
75
61
|
- !ruby/object:Gem::Dependency
|
|
76
62
|
name: acts_as_paranoid
|
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -101,33 +87,33 @@ dependencies:
|
|
|
101
87
|
- !ruby/object:Gem::Version
|
|
102
88
|
version: 1.2.2
|
|
103
89
|
- !ruby/object:Gem::Dependency
|
|
104
|
-
name:
|
|
90
|
+
name: ancestry
|
|
105
91
|
requirement: !ruby/object:Gem::Requirement
|
|
106
92
|
requirements:
|
|
107
93
|
- - "~>"
|
|
108
94
|
- !ruby/object:Gem::Version
|
|
109
|
-
version:
|
|
95
|
+
version: 4.1.0
|
|
110
96
|
type: :runtime
|
|
111
97
|
prerelease: false
|
|
112
98
|
version_requirements: !ruby/object:Gem::Requirement
|
|
113
99
|
requirements:
|
|
114
100
|
- - "~>"
|
|
115
101
|
- !ruby/object:Gem::Version
|
|
116
|
-
version:
|
|
102
|
+
version: 4.1.0
|
|
117
103
|
- !ruby/object:Gem::Dependency
|
|
118
|
-
name:
|
|
104
|
+
name: L2
|
|
119
105
|
requirement: !ruby/object:Gem::Requirement
|
|
120
106
|
requirements:
|
|
121
107
|
- - "~>"
|
|
122
108
|
- !ruby/object:Gem::Version
|
|
123
|
-
version:
|
|
109
|
+
version: 0.6.5
|
|
124
110
|
type: :runtime
|
|
125
111
|
prerelease: false
|
|
126
112
|
version_requirements: !ruby/object:Gem::Requirement
|
|
127
113
|
requirements:
|
|
128
114
|
- - "~>"
|
|
129
115
|
- !ruby/object:Gem::Version
|
|
130
|
-
version:
|
|
116
|
+
version: 0.6.5
|
|
131
117
|
- !ruby/object:Gem::Dependency
|
|
132
118
|
name: useragent
|
|
133
119
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -181,11 +167,10 @@ files:
|
|
|
181
167
|
- app/assets/icons/lesli/engine-babel.svg
|
|
182
168
|
- app/assets/icons/lesli/engine-bell.svg
|
|
183
169
|
- app/assets/icons/lesli/engine-books.svg
|
|
170
|
+
- app/assets/icons/lesli/engine-calendar.svg
|
|
184
171
|
- app/assets/icons/lesli/engine-dashboard.svg
|
|
185
172
|
- app/assets/icons/lesli/engine-dispatcher.svg
|
|
186
|
-
- app/assets/icons/lesli/engine-driver.svg
|
|
187
173
|
- app/assets/icons/lesli/engine-focus.svg
|
|
188
|
-
- app/assets/icons/lesli/engine-guard.svg
|
|
189
174
|
- app/assets/icons/lesli/engine-kb.svg
|
|
190
175
|
- app/assets/icons/lesli/engine-leaf.svg
|
|
191
176
|
- app/assets/icons/lesli/engine-lesli.svg
|
|
@@ -195,7 +180,9 @@ files:
|
|
|
195
180
|
- app/assets/icons/lesli/engine-profile.svg
|
|
196
181
|
- app/assets/icons/lesli/engine-proposal.svg
|
|
197
182
|
- app/assets/icons/lesli/engine-scraper.svg
|
|
183
|
+
- app/assets/icons/lesli/engine-security.svg
|
|
198
184
|
- app/assets/icons/lesli/engine-shared.svg
|
|
185
|
+
- app/assets/icons/lesli/engine-shield.svg
|
|
199
186
|
- app/assets/icons/lesli/engine-storage.svg
|
|
200
187
|
- app/assets/icons/lesli/engine-support.svg
|
|
201
188
|
- app/assets/icons/lesli/engine-talk.svg
|
|
@@ -209,14 +196,16 @@ files:
|
|
|
209
196
|
- app/assets/icons/readme.md
|
|
210
197
|
- app/assets/images/lesli/brand/app-auth.svg
|
|
211
198
|
- app/assets/images/lesli/brand/app-icon.svg
|
|
199
|
+
- app/assets/images/lesli/brand/app-logo.png
|
|
212
200
|
- app/assets/images/lesli/brand/app-logo.svg
|
|
213
201
|
- app/assets/images/lesli/brand/favicon.png
|
|
214
202
|
- app/assets/images/lesli/brand/favicon.svg
|
|
215
203
|
- app/assets/images/lesli/brand/login-background.jpg
|
|
216
|
-
- app/assets/
|
|
204
|
+
- app/assets/images/lesli/lesli-logo.svg
|
|
205
|
+
- app/assets/javascripts/lesli/templates/application.js
|
|
206
|
+
- app/assets/javascripts/lesli/templates/public.js
|
|
217
207
|
- app/assets/stylesheets/lesli/templates/application.css
|
|
218
208
|
- app/assets/stylesheets/lesli/templates/public.css
|
|
219
|
-
- app/assets/stylesheets/lesli/users/sessions.css
|
|
220
209
|
- app/controllers/lesli/abouts_controller.rb
|
|
221
210
|
- app/controllers/lesli/application_controller.rb
|
|
222
211
|
- app/controllers/lesli/application_devise_controller.rb
|
|
@@ -226,16 +215,15 @@ files:
|
|
|
226
215
|
- app/controllers/lesli/interfaces/application/logger.rb
|
|
227
216
|
- app/controllers/lesli/interfaces/application/requester.rb
|
|
228
217
|
- app/controllers/lesli/interfaces/application/responder.rb
|
|
218
|
+
- app/controllers/lesli/interfaces/controllers/actions.rb
|
|
219
|
+
- app/controllers/lesli/interfaces/controllers/activities.rb
|
|
220
|
+
- app/controllers/lesli/interfaces/controllers/discussions.rb
|
|
221
|
+
- app/controllers/lesli/interfaces/controllers/files.rb
|
|
222
|
+
- app/controllers/lesli/interfaces/controllers/subscribers.rb
|
|
229
223
|
- app/controllers/lesli/roles_controller.rb
|
|
230
224
|
- app/controllers/lesli/shared/dashboards_controller.rb
|
|
231
225
|
- app/controllers/lesli/system_controllers_controller.rb
|
|
232
226
|
- app/controllers/lesli/users_controller.rb
|
|
233
|
-
- app/controllers/users/confirmations_controller.rb
|
|
234
|
-
- app/controllers/users/omniauth_callbacks_controller.rb
|
|
235
|
-
- app/controllers/users/passwords_controller.rb
|
|
236
|
-
- app/controllers/users/registrations_controller.rb
|
|
237
|
-
- app/controllers/users/sessions_controller.rb
|
|
238
|
-
- app/controllers/users/unlocks_controller.rb
|
|
239
227
|
- app/helpers/lesli/assets_helper.rb
|
|
240
228
|
- app/helpers/lesli/customization_helper.rb
|
|
241
229
|
- app/helpers/lesli/general_helper.rb
|
|
@@ -251,9 +239,15 @@ files:
|
|
|
251
239
|
- app/models/concerns/user_extensions.rb
|
|
252
240
|
- app/models/concerns/user_security.rb
|
|
253
241
|
- app/models/lesli/account.rb
|
|
242
|
+
- app/models/lesli/account/detail.rb
|
|
254
243
|
- app/models/lesli/account/log.rb
|
|
255
244
|
- app/models/lesli/account/request.rb
|
|
256
245
|
- app/models/lesli/application_lesli_record.rb
|
|
246
|
+
- app/models/lesli/cloud_object/action.rb
|
|
247
|
+
- app/models/lesli/cloud_object/activity.rb
|
|
248
|
+
- app/models/lesli/cloud_object/custom_field.rb
|
|
249
|
+
- app/models/lesli/cloud_object/discussion.rb
|
|
250
|
+
- app/models/lesli/cloud_object/subscriber.rb
|
|
257
251
|
- app/models/lesli/descriptor.rb
|
|
258
252
|
- app/models/lesli/descriptor/privilege.rb
|
|
259
253
|
- app/models/lesli/role.rb
|
|
@@ -279,22 +273,6 @@ files:
|
|
|
279
273
|
- app/services/lesli/user_session_service.rb
|
|
280
274
|
- app/validators/lesli/application_lesli_validator.rb
|
|
281
275
|
- app/validators/lesli/users_validator.rb
|
|
282
|
-
- app/views/devise/confirmations/new.html.erb
|
|
283
|
-
- app/views/devise/confirmations/show.html.erb
|
|
284
|
-
- app/views/devise/mailer/confirmation_instructions.html.erb
|
|
285
|
-
- app/views/devise/mailer/email_changed.html.erb
|
|
286
|
-
- app/views/devise/mailer/password_change.html.erb
|
|
287
|
-
- app/views/devise/mailer/reset_password_instructions.html.erb
|
|
288
|
-
- app/views/devise/mailer/unlock_instructions.html.erb
|
|
289
|
-
- app/views/devise/passwords/edit.html.erb
|
|
290
|
-
- app/views/devise/passwords/new.html.erb
|
|
291
|
-
- app/views/devise/registrations/edit.html.erb
|
|
292
|
-
- app/views/devise/registrations/new.html.erb
|
|
293
|
-
- app/views/devise/sessions/new.html.erb
|
|
294
|
-
- app/views/devise/shared/_demo.html.erb
|
|
295
|
-
- app/views/devise/shared/_error_messages.html.erb
|
|
296
|
-
- app/views/devise/shared/_links.html.erb
|
|
297
|
-
- app/views/devise/unlocks/new.html.erb
|
|
298
276
|
- app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb
|
|
299
277
|
- app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb
|
|
300
278
|
- app/views/lesli/emails/user_mailer/invitation.html.erb
|
|
@@ -328,25 +306,17 @@ files:
|
|
|
328
306
|
- config/locales/devise.en.yml
|
|
329
307
|
- config/locales/translations.en.yml
|
|
330
308
|
- config/locales/translations.es.yml
|
|
309
|
+
- config/locales/translations.fr.yml
|
|
310
|
+
- config/locales/translations.it.yml
|
|
311
|
+
- config/locales/translations.pt.yml
|
|
331
312
|
- config/routes.rb
|
|
332
|
-
- db/migrate/v1
|
|
333
|
-
- db/migrate/v1
|
|
334
|
-
- db/migrate/v1
|
|
335
|
-
- db/migrate/v1
|
|
336
|
-
- db/migrate/v1
|
|
337
|
-
- db/migrate/v1
|
|
338
|
-
- db/migrate/v1
|
|
339
|
-
- db/migrate/v1.0/0010001410_create_lesli_account_logs.rb
|
|
340
|
-
- db/migrate/v1.0/0010003010_create_lesli_user_details.rb
|
|
341
|
-
- db/migrate/v1.0/0010003110_create_lesli_user_settings.rb
|
|
342
|
-
- db/migrate/v1.0/0010003210_create_lesli_user_sessions.rb
|
|
343
|
-
- db/migrate/v1.0/0010003410_create_lesli_user_powers.rb
|
|
344
|
-
- db/migrate/v1.0/0010004010_create_lesli_user_logs.rb
|
|
345
|
-
- db/migrate/v1.0/0010005010_create_lesli_descriptors.rb
|
|
346
|
-
- db/migrate/v1.0/0010005110_create_lesli_descriptor_privileges.rb
|
|
347
|
-
- db/migrate/v1.0/0010005210_create_lesli_descriptor_activities.rb
|
|
348
|
-
- db/migrate/v1.0/0010005510_create_lesli_role_powers.rb
|
|
349
|
-
- db/migrate/v1.0/0010005710_create_lesli_role_privileges.rb
|
|
313
|
+
- db/migrate/v1/0010000110_create_lesli_accounts.rb
|
|
314
|
+
- db/migrate/v1/0010000610_create_lesli_system_controllers.rb
|
|
315
|
+
- db/migrate/v1/0010000710_create_lesli_system_controller_actions.rb
|
|
316
|
+
- db/migrate/v1/0010001010_create_lesli_account_details.rb
|
|
317
|
+
- db/migrate/v1/0010001110_create_lesli_account_settings.rb
|
|
318
|
+
- db/migrate/v1/0010001210_create_lesli_account_activities.rb
|
|
319
|
+
- db/migrate/v1/0010001410_create_lesli_account_logs.rb
|
|
350
320
|
- db/seed/development.rb
|
|
351
321
|
- db/seed/development/accounts.rb
|
|
352
322
|
- db/seed/development/users.rb
|
|
@@ -386,25 +356,22 @@ files:
|
|
|
386
356
|
- db/tables/0010005610_create_role_activities.rb
|
|
387
357
|
- db/tables/0010009010_create_feedbacks.rb
|
|
388
358
|
- lib/assets/javascripts/lesli/i18n.js
|
|
359
|
+
- lib/generators/application_lesli_generator.rb
|
|
360
|
+
- lib/generators/lesli/spec/USAGE
|
|
361
|
+
- lib/generators/lesli/spec/spec_generator.rb
|
|
362
|
+
- lib/generators/lesli/spec/templates/spec-factory.template
|
|
363
|
+
- lib/generators/lesli/spec/templates/spec-model.template
|
|
389
364
|
- lib/lesli.rb
|
|
390
365
|
- lib/lesli/configuration.rb
|
|
391
366
|
- lib/lesli/engine.rb
|
|
367
|
+
- lib/lesli/r_spec.rb
|
|
392
368
|
- lib/lesli/routing.rb
|
|
393
369
|
- lib/lesli/version.rb
|
|
394
370
|
- lib/mailer_previews/devise_mailer_preview.rb
|
|
395
|
-
- lib/scss/bulma/loader.scss
|
|
396
371
|
- lib/scss/cloud-objects/discussion.scss
|
|
397
372
|
- lib/scss/cloud-objects/file.scss
|
|
398
|
-
- lib/scss/components/editor-richtext.scss
|
|
399
373
|
- lib/scss/components/keypad.scss
|
|
400
|
-
- lib/scss/devise/confirmations.scss
|
|
401
|
-
- lib/scss/devise/oauth.scss
|
|
402
|
-
- lib/scss/devise/passwords.scss
|
|
403
|
-
- lib/scss/devise/registrations.scss
|
|
404
|
-
- lib/scss/devise/sessions.scss
|
|
405
374
|
- lib/scss/elements/autocomplete.scss
|
|
406
|
-
- lib/scss/elements/avatar.scss
|
|
407
|
-
- lib/scss/elements/calendar.scss
|
|
408
375
|
- lib/scss/elements/card.scss
|
|
409
376
|
- lib/scss/elements/empty.scss
|
|
410
377
|
- lib/scss/elements/file-uploader.scss
|
|
@@ -412,10 +379,8 @@ files:
|
|
|
412
379
|
- lib/scss/elements/input-tag.scss
|
|
413
380
|
- lib/scss/elements/loading.scss
|
|
414
381
|
- lib/scss/elements/map.scss
|
|
415
|
-
- lib/scss/elements/msg.scss
|
|
416
382
|
- lib/scss/elements/navbar.scss
|
|
417
383
|
- lib/scss/elements/table.scss
|
|
418
|
-
- lib/scss/elements/toggle.scss
|
|
419
384
|
- lib/scss/elements/toolbar.scss
|
|
420
385
|
- lib/scss/fonts/families.scss
|
|
421
386
|
- lib/scss/fonts/mdicons.scss
|
|
@@ -425,12 +390,14 @@ files:
|
|
|
425
390
|
- lib/scss/layouts/application-announcements.scss
|
|
426
391
|
- lib/scss/layouts/application-component.scss
|
|
427
392
|
- lib/scss/layouts/application-container.scss
|
|
393
|
+
- lib/scss/layouts/application-content.scss
|
|
428
394
|
- lib/scss/layouts/application-engines.scss
|
|
429
395
|
- lib/scss/layouts/application-footer.scss
|
|
430
396
|
- lib/scss/layouts/application-header.scss
|
|
431
|
-
- lib/scss/layouts/application-
|
|
397
|
+
- lib/scss/layouts/application-navigation.scss
|
|
432
398
|
- lib/scss/layouts/application-search.scss
|
|
433
399
|
- lib/scss/layouts/application-sidebar.scss
|
|
400
|
+
- lib/scss/overrides/notification.scss
|
|
434
401
|
- lib/scss/overrides/sweetalert.scss
|
|
435
402
|
- lib/scss/pages/devise-simple.scss
|
|
436
403
|
- lib/scss/pages/devise.scss
|
|
@@ -438,8 +405,8 @@ files:
|
|
|
438
405
|
- lib/scss/panels/panel-announcements.scss
|
|
439
406
|
- lib/scss/panels/panel-notification.scss
|
|
440
407
|
- lib/scss/panels/panel-profile.scss
|
|
408
|
+
- lib/scss/panels/panel-support-ticket.scss
|
|
441
409
|
- lib/scss/panels/panel-tasks.scss
|
|
442
|
-
- lib/scss/panels/panel-ticket.scss
|
|
443
410
|
- lib/scss/settings/variables.scss
|
|
444
411
|
- lib/scss/shared/workflow-status-progress.scss
|
|
445
412
|
- lib/scss/templates/application.scss
|
|
@@ -456,10 +423,12 @@ files:
|
|
|
456
423
|
- lib/tasks/lesli/git.rake
|
|
457
424
|
- lib/tasks/lesli_tasks.rake
|
|
458
425
|
- lib/vue/application.js
|
|
459
|
-
- lib/vue/
|
|
460
|
-
- lib/vue/
|
|
461
|
-
- lib/vue/
|
|
462
|
-
- lib/vue/
|
|
426
|
+
- lib/vue/cloudobjects/discussion.vue
|
|
427
|
+
- lib/vue/cloudobjects/discussion/content.vue
|
|
428
|
+
- lib/vue/cloudobjects/discussion/element.vue
|
|
429
|
+
- lib/vue/cloudobjects/discussion/filters.vue
|
|
430
|
+
- lib/vue/cloudobjects/discussion/new.vue
|
|
431
|
+
- lib/vue/cloudobjects/stores/discussion.js
|
|
463
432
|
- lib/vue/layouts/application-announcements.vue
|
|
464
433
|
- lib/vue/layouts/application-component.vue
|
|
465
434
|
- lib/vue/layouts/application-container.vue
|
|
@@ -487,18 +456,15 @@ files:
|
|
|
487
456
|
- lib/vue/pages/passes/application.js
|
|
488
457
|
- lib/vue/pages/websites/application.js
|
|
489
458
|
- lib/vue/panels/panel-announcements.vue
|
|
459
|
+
- lib/vue/panels/panel-bell-notifications.vue
|
|
490
460
|
- lib/vue/panels/panel-files.vue
|
|
491
|
-
- lib/vue/panels/panel-notifications.vue
|
|
492
461
|
- lib/vue/panels/panel-profile.vue
|
|
462
|
+
- lib/vue/panels/panel-support-tickets.vue
|
|
493
463
|
- lib/vue/panels/panel-tasks.vue
|
|
494
|
-
- lib/vue/panels/
|
|
464
|
+
- lib/vue/panels/stores/bell-notifications.js
|
|
465
|
+
- lib/vue/panels/stores/support-tickets.js
|
|
495
466
|
- lib/vue/public.js
|
|
496
467
|
- lib/vue/refactor/shared/cloudobjects/action.vue
|
|
497
|
-
- lib/vue/refactor/shared/cloudobjects/discussion.vue
|
|
498
|
-
- lib/vue/refactor/shared/cloudobjects/discussion/content.vue
|
|
499
|
-
- lib/vue/refactor/shared/cloudobjects/discussion/element.vue
|
|
500
|
-
- lib/vue/refactor/shared/cloudobjects/discussion/filters.vue
|
|
501
|
-
- lib/vue/refactor/shared/cloudobjects/discussion/new.vue
|
|
502
468
|
- lib/vue/refactor/shared/cloudobjects/file.vue
|
|
503
469
|
- lib/vue/refactor/shared/cloudobjects/file/grid.vue
|
|
504
470
|
- lib/vue/refactor/shared/cloudobjects/file/list.vue
|
|
@@ -521,7 +487,6 @@ files:
|
|
|
521
487
|
- lib/vue/refactor/shared/workflows2/components/workflow-form.vue
|
|
522
488
|
- lib/vue/refactor/shared/workflows2/components/workflow-status-dropdown.vue
|
|
523
489
|
- lib/vue/refactor/stores/cloudobjects/action.js
|
|
524
|
-
- lib/vue/refactor/stores/cloudobjects/discussion.js
|
|
525
490
|
- lib/vue/refactor/stores/cloudobjects/file.js
|
|
526
491
|
- lib/vue/refactor/stores/entities/announcements.js
|
|
527
492
|
- lib/vue/refactor/stores/entities/dashboard.js
|
|
@@ -540,16 +505,17 @@ files:
|
|
|
540
505
|
- lib/vue/shared/dashboards/components/form.vue
|
|
541
506
|
- lib/vue/shared/services/firebase.js
|
|
542
507
|
- lib/vue/shared/services/translator.js
|
|
543
|
-
- lib/vue/shared/stores/account.js
|
|
544
508
|
- lib/vue/shared/stores/command.js
|
|
545
509
|
- lib/vue/shared/stores/dashboard.js
|
|
546
510
|
- lib/vue/shared/stores/layout.js
|
|
547
511
|
- lib/vue/shared/stores/systemController.js
|
|
512
|
+
- lib/vue/shared/stores/users.js
|
|
548
513
|
- lib/vue/stores/translations.json
|
|
549
514
|
- lib/vue/translation.js
|
|
550
515
|
- lib/webpack/base.js
|
|
551
516
|
- lib/webpack/core.js
|
|
552
517
|
- lib/webpack/engines.js
|
|
518
|
+
- lib/webpack/root.js
|
|
553
519
|
- lib/webpack/version.js
|
|
554
520
|
- license
|
|
555
521
|
- readme.md
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xml:space="preserve" width="72" height="72" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-28 -28)"><path d="M90.4 100H37.6c-5.3 0-9.6-4.3-9.6-9.6V37.6c0-5.3 4.3-9.6 9.6-9.6h52.8c5.3 0 9.6 4.3 9.6 9.6v52.8c0 5.3-4.3 9.6-9.6 9.6z" fill="#e6e8eb"/><path d="M90.4 93H37.6c-1.4 0-2.6-1.2-2.6-2.6V37.6c0-1.4 1.2-2.6 2.6-2.6h52.8c1.4 0 2.6 1.2 2.6 2.6v52.8c0 1.4-1.2 2.6-2.6 2.6ZM37.6 37c-.3 0-.6.3-.6.6v52.8c0 .3.3.6.6.6h52.8c.3 0 .6-.3.6-.6V37.6c0-.3-.3-.6-.6-.6Z" fill="#cfd5df"/><path d="M94 56.6h-1.4c-.9 0-1.7-.7-1.7-1.7V43.1c0-.9.7-1.7 1.7-1.7H94c.9 0 1.7.7 1.7 1.7V55c0 .9-.8 1.6-1.7 1.6zm0 29.9h-1.4c-.9 0-1.7-.7-1.7-1.7V73c0-.9.7-1.7 1.7-1.7H94c.9 0 1.7.7 1.7 1.7v11.8c0 1-.8 1.7-1.7 1.7z" fill="#cfd5df"/><circle cx="53.8" cy="64" fill="#fff" r="12.6"/><circle cx="53.8" cy="64" fill="#cfd5df" r="10.9"/><circle cx="53.8" cy="64" fill="#e6e8eb" r="8.1"/><path d="M42.6 75.2c-.7-.7-.7-1.9 0-2.6l19.7-19.7c.7-.7 1.9-.7 2.6 0 .7.7.7 1.9 0 2.6L45.3 75.2c-.7.7-1.9.7-2.7 0z" fill="#454e5c"/><path d="M42.6 52.8c.7-.7 1.9-.7 2.6 0L65 72.5c.7.7.7 1.9 0 2.6-.7.7-1.9.7-2.6 0L42.6 55.5c-.7-.7-.7-1.9 0-2.7z" fill="#454e5c"/><circle cx="53.8" cy="64" fill="#545e70" r="5.8"/><circle cx="53.8" cy="64" fill="#acb2b9" r="3.1"/><circle cx="78.8" cy="63.2" fill="#acb2b9" r="6.3"/><circle cx="78.8" cy="63.2" fill="#e6e8eb" r="4.9"/><circle cx="78.8" cy="63.2" fill="#cfd5df" r="3.6"/><g fill="#cfd5df"><path d="M78.7 59.2h.3v8.1h-.3z"/><path d="M74.8 63h8.1v.3h-8.1z"/><path d="m81.568 60.267.213.213-5.728 5.727-.212-.212z"/><path d="m81.774 65.918-.212.212-5.727-5.728.212-.212z"/></g><g fill="#cfd5df"><path d="m77.184 59.56.277-.115 3.1 7.483-.277.115z"/><path d="m82.48 61.535.115.278-7.484 3.1-.115-.278z"/><path d="m80.241 59.451.277.115-3.1 7.484-.277-.115z"/><path d="m82.597 64.597-.115.277-7.483-3.1.114-.277z"/></g><circle cx="78.8" cy="63.2" fill="#fff" r="2.2"/></g></svg>
|