lesli 5.0.11 → 5.0.12
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/lesli-logo.svg +4 -0
- data/app/assets/stylesheets/lesli/templates/application.css +21862 -209
- data/app/assets/stylesheets/lesli/templates/public.css +19098 -1
- data/app/assets/stylesheets/lesli/users/confirmations.css +19219 -0
- data/app/assets/stylesheets/lesli/users/passwords.css +19202 -0
- data/app/assets/stylesheets/lesli/users/registrations.css +19594 -0
- data/app/assets/stylesheets/lesli/users/sessions.css +19594 -1
- data/app/controllers/lesli/abouts_controller.rb +12 -18
- data/app/controllers/lesli/application_controller.rb +25 -25
- data/app/controllers/lesli/application_lesli_controller.rb +5 -6
- data/app/controllers/lesli/interfaces/application/authorization.rb +1 -1
- 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 +4 -4
- data/app/helpers/lesli/navigation_helper.rb +38 -81
- data/app/lib/lesli/system.rb +4 -3
- data/app/models/concerns/account_initializer.rb +46 -42
- 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/user_registration_operator.rb +3 -3
- data/app/views/lesli/layouts/application-devise.html.erb +6 -6
- data/app/views/lesli/layouts/application-lesli.html.erb +1 -1
- data/app/views/lesli/partials/_application-data.html.erb +2 -1
- data/app/views/lesli/partials/_application-lesli-engines.html.erb +14 -39
- data/app/views/lesli/partials/_application-lesli-header.html.erb +4 -4
- data/app/views/lesli/partials/_application-lesli-icons.html.erb +1 -1
- data/app/views/lesli/partials/_application-lesli-panels.html.erb +7 -7
- data/app/views/lesli/wrappers/_application-devise.html.erb +5 -7
- data/config/initializers/devise.rb +335 -335
- data/config/initializers/lesli.rb +2 -1
- data/config/locales/translations.en.yml +4 -0
- data/config/locales/translations.es.yml +4 -0
- data/config/locales/translations.fr.yml +28 -0
- data/config/locales/translations.it.yml +28 -0
- data/config/locales/translations.pt.yml +28 -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/lesli/engine.rb +2 -12
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +0 -1
- data/lib/scss/cloud-objects/discussion.scss +8 -5
- data/lib/scss/layouts/application-header.scss +3 -1
- data/lib/scss/layouts/application-navbar.scss +2 -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/templates/application.scss +7 -5
- data/lib/tasks/lesli/controllers.rake +1 -1
- data/lib/tasks/lesli/db.rake +24 -12
- data/lib/tasks/lesli_tasks.rake +6 -6
- data/lib/vue/application.js +13 -12
- 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-header.vue +5 -5
- data/lib/vue/panels/{panel-notifications.vue → panel-bell-notifications.vue} +15 -19
- data/lib/vue/panels/panel-support-tickets.vue +161 -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 +109 -2
- data/lib/webpack/base.js +9 -8
- data/lib/webpack/core.js +8 -6
- data/readme.md +16 -15
- metadata +49 -76
- data/app/assets/icons/lesli/engine-guard.svg +0 -1
- data/app/assets/javascripts/lesli/users/sessions.js +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/lesli/routing.rb +0 -26
- data/lib/scss/components/editor-richtext.scss +0 -88
- data/lib/scss/devise/oauth.scss +0 -34
- data/lib/scss/devise/passwords.scss +0 -33
- data/lib/scss/devise/sessions.scss +0 -35
- 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/scss/pages/devise.scss
CHANGED
|
@@ -17,9 +17,9 @@ GNU General Public License for more details.
|
|
|
17
17
|
You should have received a copy of the GNU General Public License
|
|
18
18
|
along with this program. If not, see http://www.gnu.org/licenses/.
|
|
19
19
|
|
|
20
|
-
Lesli · Ruby on Rails SaaS
|
|
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
|
|
@@ -27,7 +27,7 @@ Building a better future, one line of code at a time.
|
|
|
27
27
|
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
|
28
28
|
|
|
29
29
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
30
|
-
// ·
|
|
30
|
+
// ·
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
33
|
|
|
@@ -36,7 +36,27 @@ Building a better future, one line of code at a time.
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
// ·
|
|
39
|
-
@import "
|
|
39
|
+
@import "Lesli/scss/templates/public";
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// · reusable background styles
|
|
43
|
+
@mixin lesli-login-background() {
|
|
44
|
+
background: linear-gradient(0deg,
|
|
45
|
+
rgba(49, 106, 255, 0.4),
|
|
46
|
+
rgba(49, 106, 255, 0.4)),
|
|
47
|
+
url("lesli/brand/login-background.jpg");
|
|
48
|
+
background-position: center;
|
|
49
|
+
background-size: cover;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
// ·
|
|
54
|
+
h1,
|
|
55
|
+
.links,
|
|
56
|
+
.terms {
|
|
57
|
+
width: 100%;
|
|
58
|
+
max-width: 320px;
|
|
59
|
+
}
|
|
40
60
|
|
|
41
61
|
|
|
42
62
|
// ·
|
|
@@ -47,129 +67,113 @@ h1 {
|
|
|
47
67
|
}
|
|
48
68
|
|
|
49
69
|
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.columns {
|
|
55
|
-
width: 100%;
|
|
56
|
-
}
|
|
70
|
+
// column container
|
|
71
|
+
.column.login-form {
|
|
72
|
+
max-width: 550px;
|
|
73
|
+
margin: 0 auto;
|
|
57
74
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
75
|
+
// logo container
|
|
76
|
+
.logo {
|
|
77
|
+
img {
|
|
78
|
+
width: initial;
|
|
79
|
+
height: initial;
|
|
80
|
+
}
|
|
81
|
+
p {
|
|
82
|
+
font-weight: 600;
|
|
83
|
+
text-align: left;
|
|
84
|
+
}
|
|
61
85
|
}
|
|
62
86
|
|
|
63
|
-
|
|
64
|
-
min-height: 100vh;
|
|
87
|
+
form {
|
|
65
88
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
max-width: 320px;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// logo container
|
|
75
|
-
.logo {
|
|
76
|
-
img {
|
|
77
|
-
width: initial;
|
|
78
|
-
height: initial;
|
|
79
|
-
}
|
|
80
|
-
p {
|
|
81
|
-
font-weight: 600;
|
|
82
|
-
text-align: left;
|
|
89
|
+
.demo {
|
|
90
|
+
fieldset {
|
|
91
|
+
padding: 4px 8px;
|
|
92
|
+
border-radius: 4px;
|
|
93
|
+
border: 1px solid silver;
|
|
83
94
|
}
|
|
84
95
|
}
|
|
85
96
|
|
|
86
|
-
|
|
97
|
+
label {
|
|
98
|
+
font-weight: 400;
|
|
99
|
+
font-size: 15px;
|
|
100
|
+
line-height: 150%;
|
|
101
|
+
}
|
|
87
102
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
103
|
+
input {
|
|
104
|
+
border-radius: 6px;
|
|
105
|
+
box-shadow: none;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
input[type="password"] {
|
|
109
|
+
font-family: Verdana;
|
|
110
|
+
letter-spacing: 0.1rem;
|
|
111
|
+
}
|
|
95
112
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
font-size: 15px;
|
|
99
|
-
line-height: 150%;
|
|
100
|
-
}
|
|
101
|
-
input {
|
|
102
|
-
border-radius: 6px;
|
|
103
|
-
box-shadow: none;
|
|
104
|
-
}
|
|
105
|
-
input[type="submit"] {
|
|
106
|
-
font-weight: 600;
|
|
107
|
-
}
|
|
108
|
-
input[type="password"] {
|
|
109
|
-
font-family: Verdana;
|
|
110
|
-
letter-spacing: 0.125em;
|
|
111
|
-
}
|
|
112
|
-
p.help {
|
|
113
|
-
font-weight: 600;
|
|
114
|
-
}
|
|
115
|
-
p.account {
|
|
116
|
-
font-size: 15px;
|
|
117
|
-
font-weight: 400;
|
|
118
|
-
}
|
|
113
|
+
p.help {
|
|
114
|
+
font-weight: 600;
|
|
119
115
|
}
|
|
120
116
|
|
|
121
|
-
.
|
|
122
|
-
font-
|
|
123
|
-
|
|
124
|
-
font-family: "Exo";
|
|
117
|
+
p.account {
|
|
118
|
+
font-size: 15px;
|
|
119
|
+
font-weight: 400;
|
|
125
120
|
}
|
|
121
|
+
}
|
|
126
122
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
span {
|
|
138
|
-
font-family: "Domine";
|
|
139
|
-
font-weight: 500;
|
|
140
|
-
font-size: 14px;
|
|
141
|
-
//color: lesli-css-color(lesli, navy);
|
|
123
|
+
.links {
|
|
124
|
+
|
|
125
|
+
a {
|
|
126
|
+
width: 100%;
|
|
127
|
+
display: flex;
|
|
128
|
+
flex-grow: 1;
|
|
129
|
+
padding: .8rem 0;
|
|
130
|
+
&:not(:last-child) {
|
|
131
|
+
border-bottom: 1px solid lesli-css-color(silver, 300);
|
|
142
132
|
}
|
|
143
133
|
}
|
|
144
134
|
|
|
145
|
-
|
|
135
|
+
span {
|
|
146
136
|
font-family: "Domine";
|
|
147
|
-
font-weight:
|
|
148
|
-
font-size:
|
|
149
|
-
line-height: 19px;
|
|
150
|
-
letter-spacing: -44%;
|
|
137
|
+
font-weight: 500;
|
|
138
|
+
font-size: 14px;
|
|
151
139
|
}
|
|
140
|
+
}
|
|
152
141
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
font-family: "Exo";
|
|
160
|
-
font-weight: 600;
|
|
161
|
-
font-size: 12px;
|
|
162
|
-
line-height: 18px;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
142
|
+
.terms {
|
|
143
|
+
font-family: "Domine";
|
|
144
|
+
font-weight: 400;
|
|
145
|
+
font-size: 12px;
|
|
146
|
+
line-height: 19px;
|
|
147
|
+
letter-spacing: -44%;
|
|
165
148
|
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
// column with image background right side
|
|
153
|
+
.column.background {
|
|
154
|
+
@include lesli-login-background;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
@include lesli-css-breakpoint-until-tablet() {
|
|
166
159
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
160
|
+
// login column must be full width on mobile
|
|
161
|
+
.column.login-form {
|
|
162
|
+
width: 100%;
|
|
163
|
+
max-width: 100%;
|
|
164
|
+
@include lesli-login-background;
|
|
165
|
+
|
|
166
|
+
.hero {
|
|
167
|
+
padding: 2rem 0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// center the form
|
|
171
|
+
.hero-body {
|
|
172
|
+
margin: 0 auto;
|
|
173
|
+
max-width: 500px;
|
|
174
|
+
background-color: white;
|
|
175
|
+
border-radius: 6px;
|
|
176
|
+
padding: 1rem 3rem;
|
|
177
|
+
}
|
|
174
178
|
}
|
|
175
179
|
}
|
|
@@ -17,9 +17,9 @@ GNU General Public License for more details.
|
|
|
17
17
|
You should have received a copy of the GNU General Public License
|
|
18
18
|
along with this program. If not, see http://www.gnu.org/licenses/.
|
|
19
19
|
|
|
20
|
-
Lesli · Ruby on Rails SaaS
|
|
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
|
|
@@ -27,8 +27,7 @@ Building a better future, one line of code at a time.
|
|
|
27
27
|
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
|
28
28
|
|
|
29
29
|
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
30
|
-
// ·
|
|
31
|
-
|
|
30
|
+
// ·
|
|
32
31
|
*/
|
|
33
32
|
|
|
34
33
|
|
|
@@ -33,7 +33,8 @@ Building a better future, one line of code at a time.
|
|
|
33
33
|
|
|
34
34
|
// ·
|
|
35
35
|
@import "lesli-css";
|
|
36
|
-
@import "lesli-vue/
|
|
36
|
+
@import "lesli-vue/elements.css";
|
|
37
|
+
@import "lesli-vue/components.css";
|
|
37
38
|
|
|
38
39
|
// · Configuration & variables
|
|
39
40
|
@import "Lesli/scss/settings/variables";
|
|
@@ -68,9 +69,9 @@ Building a better future, one line of code at a time.
|
|
|
68
69
|
|
|
69
70
|
// · Lesli core panels
|
|
70
71
|
// @import "lesli/panels/panel-tasks";
|
|
71
|
-
|
|
72
|
+
@import "Lesli/scss/panels/panel-support-ticket";
|
|
72
73
|
// @import "lesli/panels/panel-profile";
|
|
73
|
-
|
|
74
|
+
@import "Lesli/scss/panels/panel-notification";
|
|
74
75
|
// @import "lesli/panels/panel-announcements";
|
|
75
76
|
|
|
76
77
|
|
|
@@ -83,17 +84,18 @@ Building a better future, one line of code at a time.
|
|
|
83
84
|
|
|
84
85
|
|
|
85
86
|
// · Lesli cloud objects
|
|
86
|
-
|
|
87
|
+
@import "Lesli/scss/cloud-objects/discussion";
|
|
87
88
|
// @import "lesli/cloud-objects/file";
|
|
88
89
|
|
|
89
90
|
|
|
90
91
|
// · Overrides for vendor libraries
|
|
91
92
|
// @import "lesli/overrides/sweetalert";
|
|
93
|
+
@import "Lesli/scss/overrides/notification";
|
|
92
94
|
|
|
93
95
|
|
|
94
96
|
// · Lesli vue components
|
|
95
97
|
// @import "lesli/elements/autocomplete";
|
|
96
|
-
// @import "
|
|
98
|
+
// @import "Lesli/scss/elements/avatar";
|
|
97
99
|
// @import "lesli/elements/empty";
|
|
98
100
|
// @import "lesli/elements/file-uploader";
|
|
99
101
|
// @import "lesli/elements/gallery";
|
|
@@ -36,7 +36,7 @@ namespace :lesli do
|
|
|
36
36
|
|
|
37
37
|
desc "Scan new routes added and create role privileges"
|
|
38
38
|
task build: :environment do
|
|
39
|
-
L2.msg("Registering engines, controllers and actions")
|
|
39
|
+
L2.msg("Lesli: Registering engines, controllers and actions")
|
|
40
40
|
Lesli::ControllerOperator.new.build
|
|
41
41
|
end
|
|
42
42
|
end
|
data/lib/tasks/lesli/db.rake
CHANGED
|
@@ -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
|
|
@@ -41,11 +41,13 @@ namespace :lesli do
|
|
|
41
41
|
migrate()
|
|
42
42
|
prepare()
|
|
43
43
|
seed()
|
|
44
|
+
status()
|
|
44
45
|
end
|
|
45
46
|
|
|
46
47
|
desc "Seed & prepare Lesli database (development only)"
|
|
47
48
|
task :seed => :environment do |task, args|
|
|
48
49
|
seed()
|
|
50
|
+
status()
|
|
49
51
|
end
|
|
50
52
|
|
|
51
53
|
desc "Migrate, seed & prepare the Lesli database (development only)"
|
|
@@ -53,20 +55,22 @@ namespace :lesli do
|
|
|
53
55
|
migrate()
|
|
54
56
|
prepare()
|
|
55
57
|
seed()
|
|
58
|
+
status()
|
|
56
59
|
end
|
|
57
60
|
|
|
58
|
-
desc "Migrate
|
|
59
|
-
task :
|
|
61
|
+
desc "Migrate, prepare && user the Lesli database"
|
|
62
|
+
task :deploy => :environment do |task, args|
|
|
63
|
+
create()
|
|
60
64
|
migrate()
|
|
61
65
|
prepare()
|
|
66
|
+
status()
|
|
62
67
|
end
|
|
63
68
|
|
|
64
|
-
desc "Migrate
|
|
65
|
-
task :
|
|
66
|
-
create()
|
|
69
|
+
desc "Migrate & prepare the Lesli database"
|
|
70
|
+
task :setup => :environment do |task, args|
|
|
67
71
|
migrate()
|
|
68
72
|
prepare()
|
|
69
|
-
|
|
73
|
+
status()
|
|
70
74
|
end
|
|
71
75
|
end
|
|
72
76
|
|
|
@@ -100,7 +104,6 @@ namespace :lesli do
|
|
|
100
104
|
Rake::Task['db:migrate'].invoke
|
|
101
105
|
end
|
|
102
106
|
|
|
103
|
-
desc "Seed the Lesli database"
|
|
104
107
|
def seed
|
|
105
108
|
|
|
106
109
|
# print a message to let the users show the action running
|
|
@@ -113,26 +116,35 @@ namespace :lesli do
|
|
|
113
116
|
Lesli::Engine.load_seed
|
|
114
117
|
LesliBell::Engine.load_seed if defined?(LesliBell)
|
|
115
118
|
LesliHelp::Engine.load_seed if defined?(LesliHelp)
|
|
119
|
+
LesliAdmin::Engine.load_seed if defined?(LesliAdmin)
|
|
116
120
|
LesliAudit::Engine.load_seed if defined?(LesliAudit)
|
|
117
121
|
LesliLetter::Engine.load_seed if defined?(LesliLetter)
|
|
122
|
+
LesliSupport::Engine.load_seed if defined?(LesliSupport)
|
|
123
|
+
LesliCalendar::Engine.load_seed if defined?(LesliCalendar)
|
|
118
124
|
end
|
|
119
125
|
|
|
120
|
-
desc "Prepare the Lesli database"
|
|
121
126
|
def prepare
|
|
122
127
|
|
|
123
128
|
# print a message to let the users show the action running
|
|
124
129
|
L2.msg("Prepare the Lesli database")
|
|
125
130
|
|
|
131
|
+
Lesli::Account.all.each do |account|
|
|
132
|
+
account.initialize_account
|
|
133
|
+
account.initialize_engines
|
|
134
|
+
end
|
|
135
|
+
|
|
126
136
|
# scan rails routes to build the controllers index
|
|
127
137
|
Rake::Task['lesli:controllers:build'].invoke
|
|
128
138
|
|
|
129
139
|
# scan rails routes to build the controllers index
|
|
130
|
-
Rake::Task['lesli:
|
|
140
|
+
Rake::Task['lesli:security:privileges'].invoke if defined?(LesliSecurity)
|
|
131
141
|
|
|
132
142
|
# scan rails routes to build the base of translations
|
|
133
|
-
Rake::Task['lesli:babel:
|
|
143
|
+
Rake::Task['lesli:babel:scan'].invoke if defined?(LesliBabel)
|
|
144
|
+
end
|
|
134
145
|
|
|
146
|
+
def status
|
|
135
147
|
# print the lesli gems
|
|
136
148
|
Rake::Task['lesli:status'].invoke
|
|
137
|
-
end
|
|
149
|
+
end
|
|
138
150
|
end
|
data/lib/tasks/lesli_tasks.rake
CHANGED
|
@@ -37,13 +37,13 @@ namespace :lesli do
|
|
|
37
37
|
namespace :babel do
|
|
38
38
|
|
|
39
39
|
desc "Scan and register labels"
|
|
40
|
-
task :
|
|
41
|
-
Rake::Task['lesli_babel:
|
|
40
|
+
task :scan => :environment do |task, args|
|
|
41
|
+
Rake::Task['lesli_babel:scan'].invoke
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
desc "Scan and register labels"
|
|
45
|
-
task :
|
|
46
|
-
Rake::Task['lesli_babel:
|
|
45
|
+
task :load => :environment do |task, args|
|
|
46
|
+
Rake::Task['lesli_babel:load'].invoke
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
desc "Export translations to json files"
|
|
@@ -52,11 +52,11 @@ namespace :lesli do
|
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
namespace :
|
|
55
|
+
namespace :security do
|
|
56
56
|
|
|
57
57
|
desc "Syncing privileges for all the available roles"
|
|
58
58
|
task :privileges => :environment do |task, args|
|
|
59
|
-
Rake::Task['
|
|
59
|
+
Rake::Task['lesli_security:privileges'].invoke
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
data/lib/vue/application.js
CHANGED
|
@@ -56,20 +56,22 @@ import componentApplicationSidebar from "Lesli/vue/layouts/application-sidebar.v
|
|
|
56
56
|
import componentApplicationAnnouncement from "Lesli/vue/layouts/application-announcements.vue"
|
|
57
57
|
import componentApplicationPanelTasks from "Lesli/vue/panels/panel-tasks.vue"
|
|
58
58
|
import componentApplicationPanelFiles from "Lesli/vue/panels/panel-files.vue"
|
|
59
|
-
import componentApplicationPanelTickets from "Lesli/vue/panels/panel-tickets.vue"
|
|
60
59
|
import componentApplicationPanelProfile from "Lesli/vue/panels/panel-profile.vue"
|
|
61
60
|
import componentApplicationPanelNotifications from "Lesli/vue/panels/panel-notifications.vue"
|
|
62
61
|
import componentApplicationPanelAnnouncements from "Lesli/vue/panels/panel-announcements.vue"
|
|
63
62
|
*/
|
|
64
63
|
|
|
64
|
+
import componentApplicationPanelSupportTickets from "Lesli/vue/panels/panel-support-tickets.vue"
|
|
65
|
+
import componentApplicationPanelBellNotifications from "Lesli/vue/panels/panel-bell-notifications.vue"
|
|
66
|
+
|
|
65
67
|
|
|
66
68
|
// · Loading global layout components
|
|
67
69
|
import {
|
|
68
70
|
// lesliElementAutocomplete,
|
|
69
|
-
|
|
71
|
+
LesliAvatar,
|
|
70
72
|
LesliButton,
|
|
71
73
|
// lesliElementButtonLink,
|
|
72
|
-
|
|
74
|
+
LesliCalendar,
|
|
73
75
|
LesliCard,
|
|
74
76
|
// lesliElementCollapse,
|
|
75
77
|
LesliColumn,
|
|
@@ -113,9 +115,8 @@ import {
|
|
|
113
115
|
|
|
114
116
|
|
|
115
117
|
|
|
116
|
-
// · engine:
|
|
118
|
+
// · engine: Engine name
|
|
117
119
|
// · routes: Array of routes for Vue
|
|
118
|
-
// · example: app("CloudAudit", [])
|
|
119
120
|
export default (engine, routes=[]) => {
|
|
120
121
|
|
|
121
122
|
// · Base path for the engines/core url's
|
|
@@ -130,6 +131,8 @@ export default (engine, routes=[]) => {
|
|
|
130
131
|
appbuilder["components"] = {
|
|
131
132
|
"lesli-application-header": lesliApplicationHeader,
|
|
132
133
|
"lesli-application-engines": lesliApplicationEngines,
|
|
134
|
+
"application-panel-support-tickets": componentApplicationPanelSupportTickets,
|
|
135
|
+
"application-panel-bell-notifications": componentApplicationPanelBellNotifications
|
|
133
136
|
/*
|
|
134
137
|
"application-component-footer": componentApplicationFooter,
|
|
135
138
|
"application-component-search": componentApplicationSearch,
|
|
@@ -137,10 +140,8 @@ export default (engine, routes=[]) => {
|
|
|
137
140
|
"application-component-announcements": componentApplicationAnnouncement,
|
|
138
141
|
"application-component-panel-tasks": componentApplicationPanelTasks,
|
|
139
142
|
"application-component-panel-files": componentApplicationPanelFiles,
|
|
140
|
-
"application-component-panel-tickets": componentApplicationPanelTickets,
|
|
141
143
|
"application-component-panel-profile": componentApplicationPanelProfile,
|
|
142
|
-
"application-component-panel-announcements": componentApplicationPanelAnnouncements
|
|
143
|
-
"application-component-panel-notifications": componentApplicationPanelNotifications
|
|
144
|
+
"application-component-panel-announcements": componentApplicationPanelAnnouncements
|
|
144
145
|
*/
|
|
145
146
|
}
|
|
146
147
|
|
|
@@ -207,7 +208,7 @@ export default (engine, routes=[]) => {
|
|
|
207
208
|
application.provide('msg', useLesliMsg())
|
|
208
209
|
application.provide('url', useLesliUrl())
|
|
209
210
|
application.provide('http', useLesliHttp())
|
|
210
|
-
application.provide('date', useLesliDate())
|
|
211
|
+
application.provide('date', useLesliDate()())
|
|
211
212
|
application.provide('utils', useLesliUtils())
|
|
212
213
|
application.provide('dialog', useLesliDialog())
|
|
213
214
|
|
|
@@ -224,6 +225,7 @@ export default (engine, routes=[]) => {
|
|
|
224
225
|
|
|
225
226
|
// · Loading Lesli handmade global components
|
|
226
227
|
// application.component("lesli-icon", lesliElementIcon)
|
|
228
|
+
application.component("lesli-avatar", LesliAvatar)
|
|
227
229
|
application.component("lesli-empty", LesliEmpty)
|
|
228
230
|
application.component("lesli-header", LesliHeader)
|
|
229
231
|
application.component("lesli-select", LesliSelect)
|
|
@@ -240,11 +242,11 @@ export default (engine, routes=[]) => {
|
|
|
240
242
|
application.component("lesli-panel", LesliPanel)
|
|
241
243
|
application.component("lesli-button", LesliButton)
|
|
242
244
|
// application.component("lesli-button-link", lesliElementButtonLink)
|
|
243
|
-
|
|
245
|
+
application.component("lesli-calendar", LesliCalendar)
|
|
244
246
|
// application.component("lesli-input-tag", lesliElementInputTag)
|
|
245
247
|
// application.component("lesli-file-uploader", lesliElementFileUploader)
|
|
246
248
|
// application.component("lesli-navigation-list", lesliElementNavigationList)
|
|
247
|
-
|
|
249
|
+
|
|
248
250
|
application.component("lesli-toggle", LesliToggle)
|
|
249
251
|
// application.component("lesli-dropdown", lesliElementDropdown)
|
|
250
252
|
// application.component("lesli-map", lesliElementMap)
|
|
@@ -255,7 +257,6 @@ export default (engine, routes=[]) => {
|
|
|
255
257
|
// application.component("lesli-input", lesliElementInput)
|
|
256
258
|
application.component("lesli-link", LesliLink)
|
|
257
259
|
|
|
258
|
-
|
|
259
260
|
|
|
260
261
|
|
|
261
262
|
// · Mount app once DOM is ready
|
|
@@ -18,30 +18,32 @@ 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 ·
|
|
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
|
|
27
|
-
@website https://lesli.tech
|
|
27
|
+
@website https://www.lesli.tech
|
|
28
28
|
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
|
29
29
|
|
|
30
|
-
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
30
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
|
31
31
|
// ·
|
|
32
|
-
|
|
33
32
|
*/
|
|
34
33
|
|
|
35
34
|
|
|
36
35
|
// · import store
|
|
37
|
-
import { useCloudObjectDiscussionStore } from "
|
|
36
|
+
import { useCloudObjectDiscussionStore } from "../stores/discussion.js"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
// ·
|
|
40
|
+
import DiscussionElement from "./element.vue"
|
|
38
41
|
|
|
39
|
-
import DiscussionElement from "Lesli/vue/cloudobjects/components/discussion/element.vue"
|
|
40
42
|
|
|
43
|
+
// ·
|
|
41
44
|
const discussionStore = useCloudObjectDiscussionStore()
|
|
42
45
|
|
|
43
46
|
</script>
|
|
44
|
-
|
|
45
47
|
<template>
|
|
46
48
|
<div class="discussion-content mt-6">
|
|
47
49
|
<discussion-element v-for="discussion in discussionStore.mergedArray" :key="discussion.id" :discussion="discussion">
|