lesli 5.0.11 → 5.0.12
Sign up to get free protection for your applications and to get access to all the features.
- 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">
|