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.
Files changed (175) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/lesli_manifest.js +0 -13
  3. data/app/assets/icons/lesli/engine-security.svg +1 -0
  4. data/app/assets/icons/lesli/engine-shield.svg +1 -0
  5. data/app/assets/images/lesli/brand/app-logo.png +0 -0
  6. data/app/assets/images/lesli/lesli-logo.svg +4 -0
  7. data/app/assets/javascripts/lesli/templates/application.js +14 -0
  8. data/app/assets/javascripts/lesli/templates/public.js +14 -0
  9. data/app/assets/stylesheets/lesli/templates/application.css +1365 -293
  10. data/app/assets/stylesheets/lesli/templates/public.css +1 -1
  11. data/app/controllers/lesli/abouts_controller.rb +12 -18
  12. data/app/controllers/lesli/application_controller.rb +26 -25
  13. data/app/controllers/lesli/application_lesli_controller.rb +5 -6
  14. data/app/controllers/lesli/interfaces/application/authorization.rb +2 -2
  15. data/app/controllers/lesli/interfaces/application/customization.rb +1 -1
  16. data/app/controllers/lesli/interfaces/application/requester.rb +2 -2
  17. data/app/controllers/lesli/interfaces/application/responder.rb +8 -8
  18. data/app/controllers/lesli/interfaces/controllers/actions.rb +250 -0
  19. data/app/controllers/lesli/interfaces/controllers/activities.rb +215 -0
  20. data/app/controllers/lesli/interfaces/controllers/discussions.rb +270 -0
  21. data/app/controllers/lesli/interfaces/controllers/files.rb +467 -0
  22. data/app/controllers/lesli/interfaces/controllers/subscribers.rb +234 -0
  23. data/app/helpers/lesli/assets_helper.rb +26 -8
  24. data/app/helpers/lesli/navigation_helper.rb +53 -92
  25. data/app/lib/date2.rb +8 -0
  26. data/app/lib/lesli/system.rb +17 -4
  27. data/app/models/concerns/account_initializer.rb +46 -42
  28. data/app/models/concerns/user_extensions.rb +6 -0
  29. data/{lib/scss/devise/registrations.scss → app/models/lesli/account/detail.rb} +7 -3
  30. data/app/models/lesli/account.rb +12 -5
  31. data/app/models/lesli/cloud_object/action.rb +70 -0
  32. data/app/models/lesli/cloud_object/activity.rb +311 -0
  33. data/app/models/lesli/cloud_object/custom_field.rb +158 -0
  34. data/app/models/lesli/cloud_object/discussion.rb +219 -0
  35. data/app/models/lesli/cloud_object/subscriber.rb +186 -0
  36. data/app/models/lesli/shared/dashboard.rb +16 -5
  37. data/app/models/lesli/user/session.rb +0 -2
  38. data/app/models/lesli/user.rb +13 -13
  39. data/app/operators/lesli/controller_operator.rb +4 -1
  40. data/app/operators/lesli/user_registration_operator.rb +3 -3
  41. data/app/services/lesli/user_service.rb +1 -1
  42. data/app/views/lesli/layouts/application-devise.html.erb +6 -6
  43. data/app/views/lesli/layouts/application-lesli.html.erb +3 -1
  44. data/app/views/lesli/partials/_application-data.html.erb +5 -4
  45. data/app/views/lesli/partials/_application-lesli-engines.html.erb +14 -39
  46. data/app/views/lesli/partials/_application-lesli-header.html.erb +50 -25
  47. data/app/views/lesli/partials/_application-lesli-icons.html.erb +1 -1
  48. data/app/views/lesli/partials/_application-lesli-javascript.html.erb +2 -2
  49. data/app/views/lesli/partials/_application-lesli-navigation.html.erb +8 -1
  50. data/app/views/lesli/partials/_application-lesli-panels.html.erb +7 -7
  51. data/app/views/lesli/partials/_application-lesli-scss.html.erb +2 -2
  52. data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
  53. data/app/views/lesli/wrappers/_application-devise.html.erb +5 -7
  54. data/config/initializers/devise.rb +335 -335
  55. data/config/initializers/lesli.rb +9 -2
  56. data/config/locales/translations.en.yml +9 -3
  57. data/config/locales/translations.es.yml +9 -3
  58. data/config/locales/translations.fr.yml +30 -0
  59. data/config/locales/translations.it.yml +30 -0
  60. data/config/locales/translations.pt.yml +30 -0
  61. data/config/routes.rb +1 -10
  62. data/db/migrate/{v1.0/0010003010_create_lesli_user_details.rb → v1/0010000110_create_lesli_accounts.rb} +19 -13
  63. data/db/migrate/{v1.0/0010000110_create_lesli_accounts.rb → v1/0010001010_create_lesli_account_details.rb} +5 -7
  64. data/db/migrate/{v1.0/0010001010_create_lesli_account_settings.rb → v1/0010001110_create_lesli_account_settings.rb} +2 -2
  65. data/db/seed/development/accounts.rb +10 -7
  66. data/db/seed/development/users.rb +20 -20
  67. data/db/seed/production/accounts.rb +10 -7
  68. data/lib/generators/application_lesli_generator.rb +164 -0
  69. data/lib/generators/lesli/spec/USAGE +8 -0
  70. data/lib/generators/lesli/spec/spec_generator.rb +25 -0
  71. data/lib/generators/lesli/spec/templates/spec-factory.template +17 -0
  72. data/lib/generators/lesli/spec/templates/spec-model.template +70 -0
  73. data/lib/lesli/configuration.rb +1 -1
  74. data/lib/lesli/engine.rb +3 -14
  75. data/lib/{scss/devise/passwords.scss → lesli/r_spec.rb} +12 -5
  76. data/lib/lesli/routing.rb +51 -20
  77. data/lib/lesli/version.rb +2 -2
  78. data/lib/lesli.rb +1 -0
  79. data/lib/scss/cloud-objects/discussion.scss +8 -5
  80. data/lib/scss/layouts/application-component.scss +1 -1
  81. data/lib/scss/{devise/sessions.scss → layouts/application-content.scss} +4 -4
  82. data/lib/scss/layouts/application-header.scss +38 -108
  83. data/lib/scss/layouts/{application-navbar.scss → application-navigation.scss} +23 -5
  84. data/lib/scss/layouts/application-search.scss +1 -1
  85. data/lib/scss/{elements/msg.scss → overrides/notification.scss} +16 -18
  86. data/lib/scss/pages/devise-simple.scss +4 -2
  87. data/lib/scss/pages/devise.scss +111 -107
  88. data/lib/scss/panels/panel-notification.scss +1 -1
  89. data/lib/scss/panels/{panel-ticket.scss → panel-support-ticket.scss} +3 -4
  90. data/lib/scss/settings/variables.scss +1 -1
  91. data/lib/scss/templates/application.scss +14 -41
  92. data/lib/scss/templates/public.scss +6 -4
  93. data/lib/tasks/lesli/controllers.rake +1 -1
  94. data/lib/tasks/lesli/db.rake +24 -12
  95. data/lib/tasks/lesli_tasks.rake +7 -7
  96. data/lib/vue/application.js +18 -15
  97. data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion/content.vue +10 -8
  98. data/lib/vue/cloudobjects/discussion/element.vue +170 -0
  99. data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion/filters.vue +1 -1
  100. data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion/new.vue +20 -16
  101. data/lib/vue/{refactor/shared/cloudobjects → cloudobjects}/discussion.vue +25 -24
  102. data/lib/vue/{refactor/stores/cloudobjects → cloudobjects/stores}/discussion.js +7 -16
  103. data/lib/vue/layouts/application-component.vue +2 -2
  104. data/lib/vue/layouts/application-header.vue +109 -88
  105. data/lib/vue/panels/{panel-notifications.vue → panel-bell-notifications.vue} +15 -19
  106. data/lib/vue/panels/panel-support-tickets.vue +163 -0
  107. data/lib/vue/panels/stores/bell-notifications.js +46 -0
  108. data/lib/vue/panels/stores/support-tickets.js +103 -0
  109. data/lib/vue/shared/dashboards/apps/edit.vue +10 -10
  110. data/lib/vue/shared/dashboards/components/form.vue +31 -40
  111. data/lib/vue/shared/stores/dashboard.js +2 -0
  112. data/lib/vue/shared/stores/layout.js +2 -1
  113. data/lib/{scss/devise/confirmations.scss → vue/shared/stores/users.js} +22 -21
  114. data/lib/vue/stores/translations.json +119 -2
  115. data/lib/webpack/base.js +18 -12
  116. data/lib/webpack/core.js +16 -12
  117. data/lib/webpack/engines.js +3 -1
  118. data/lib/webpack/root.js +105 -0
  119. data/lib/webpack/version.js +37 -0
  120. data/readme.md +16 -15
  121. metadata +58 -92
  122. data/app/assets/icons/lesli/engine-guard.svg +0 -1
  123. data/app/assets/javascripts/lesli/users/sessions.js +0 -1
  124. data/app/assets/stylesheets/lesli/users/sessions.css +0 -1
  125. data/app/controllers/users/confirmations_controller.rb +0 -66
  126. data/app/controllers/users/omniauth_callbacks_controller.rb +0 -30
  127. data/app/controllers/users/passwords_controller.rb +0 -71
  128. data/app/controllers/users/registrations_controller.rb +0 -141
  129. data/app/controllers/users/sessions_controller.rb +0 -141
  130. data/app/controllers/users/unlocks_controller.rb +0 -30
  131. data/app/views/devise/confirmations/new.html.erb +0 -2
  132. data/app/views/devise/confirmations/show.html.erb +0 -63
  133. data/app/views/devise/mailer/confirmation_instructions.html.erb +0 -5
  134. data/app/views/devise/mailer/email_changed.html.erb +0 -7
  135. data/app/views/devise/mailer/password_change.html.erb +0 -3
  136. data/app/views/devise/mailer/reset_password_instructions.html.erb +0 -8
  137. data/app/views/devise/mailer/unlock_instructions.html.erb +0 -7
  138. data/app/views/devise/passwords/edit.html.erb +0 -79
  139. data/app/views/devise/passwords/new.html.erb +0 -75
  140. data/app/views/devise/registrations/edit.html.erb +0 -43
  141. data/app/views/devise/registrations/new.html.erb +0 -147
  142. data/app/views/devise/sessions/new.html.erb +0 -114
  143. data/app/views/devise/shared/_demo.html.erb +0 -7
  144. data/app/views/devise/shared/_error_messages.html.erb +0 -15
  145. data/app/views/devise/shared/_links.html.erb +0 -96
  146. data/app/views/devise/unlocks/new.html.erb +0 -16
  147. data/db/migrate/v1.0/0010000210_create_lesli_roles.rb +0 -59
  148. data/db/migrate/v1.0/0010000310_create_lesli_users.rb +0 -97
  149. data/db/migrate/v1.0/0010003110_create_lesli_user_settings.rb +0 -44
  150. data/db/migrate/v1.0/0010003210_create_lesli_user_sessions.rb +0 -55
  151. data/db/migrate/v1.0/0010003410_create_lesli_user_powers.rb +0 -43
  152. data/db/migrate/v1.0/0010004010_create_lesli_user_logs.rb +0 -45
  153. data/db/migrate/v1.0/0010005010_create_lesli_descriptors.rb +0 -44
  154. data/db/migrate/v1.0/0010005110_create_lesli_descriptor_privileges.rb +0 -45
  155. data/db/migrate/v1.0/0010005210_create_lesli_descriptor_activities.rb +0 -49
  156. data/db/migrate/v1.0/0010005510_create_lesli_role_powers.rb +0 -51
  157. data/db/migrate/v1.0/0010005710_create_lesli_role_privileges.rb +0 -45
  158. data/lib/scss/bulma/loader.scss +0 -92
  159. data/lib/scss/components/editor-richtext.scss +0 -88
  160. data/lib/scss/devise/oauth.scss +0 -34
  161. data/lib/scss/elements/avatar.scss +0 -48
  162. data/lib/scss/elements/calendar.scss +0 -47
  163. data/lib/scss/elements/toggle.scss +0 -102
  164. data/lib/vue/devise/confirmations.js +0 -33
  165. data/lib/vue/devise/passwords.js +0 -137
  166. data/lib/vue/devise/registrations.js +0 -157
  167. data/lib/vue/devise/sessions.js +0 -148
  168. data/lib/vue/panels/panel-tickets.vue +0 -181
  169. data/lib/vue/refactor/shared/cloudobjects/discussion/element.vue +0 -132
  170. data/lib/vue/shared/stores/account.js +0 -113
  171. /data/app/assets/icons/lesli/{engine-driver.svg → engine-calendar.svg} +0 -0
  172. /data/db/migrate/{v1.0 → v1}/0010000610_create_lesli_system_controllers.rb +0 -0
  173. /data/db/migrate/{v1.0 → v1}/0010000710_create_lesli_system_controller_actions.rb +0 -0
  174. /data/db/migrate/{v1.0 → v1}/0010001210_create_lesli_account_activities.rb +0 -0
  175. /data/db/migrate/{v1.0 → v1}/0010001410_create_lesli_account_logs.rb +0 -0
@@ -66,8 +66,8 @@ const props = defineProps({
66
66
 
67
67
  // · translations
68
68
  const translations = {
69
+ dashboards: {}, //i 18n.t("lesli.dashboards"),
69
70
  main: I18n.t(`${props.engine}.dashboards`),
70
- dashboards: I18n.t('core.dashboards'),
71
71
  core: I18n.t('core.shared')
72
72
  }
73
73
 
@@ -126,23 +126,23 @@ onMounted(() => {
126
126
  <!-- Dashboard components -->
127
127
  <template v-if="storeDashboard.dashboard.components">
128
128
  <div class="columns is-multiline is-variable is-4 dashboard-components">
129
- <template v-for="(component, index) in storeDashboard.dashboard.components" :key="index">
130
- <div :class="['column', 'is-' + component?.layout]">
129
+ <template v-for="(_component, index) in storeDashboard.dashboard.components" :key="index">
130
+ <div :class="['column', 'is-' + _component?.layout]">
131
131
 
132
132
  <!-- Dashboard widget component when in edition mode -->
133
133
  <div class="edit">
134
134
 
135
135
  <!-- Dashboard widget preview -->
136
136
  <component
137
- :component.sync="component"
138
- :is="props.components[component.component_id]">
137
+ :component.sync="_component"
138
+ :is="props.components[_component.component_id]">
139
139
  </component>
140
140
 
141
141
  <!-- Edition controls -->
142
142
  <div class="mt-4 mb-2">
143
143
  <div class="field has-addons is-justify-content-center">
144
144
  <p class="control">
145
- <button class="button is-small" @click="sizeDecrease(component)">
145
+ <button class="button is-small" @click="sizeDecrease(_component)">
146
146
  <span class="icon is-small">
147
147
  <span class="material-icons">
148
148
  remove
@@ -154,7 +154,7 @@ onMounted(() => {
154
154
  size
155
155
  </p>
156
156
  <p class="control">
157
- <button class="button is-small" @click="sizeIncrease(component)">
157
+ <button class="button is-small" @click="sizeIncrease(_component)">
158
158
  <span class="icon is-small">
159
159
  <span class="material-icons">
160
160
  add
@@ -166,7 +166,7 @@ onMounted(() => {
166
166
 
167
167
  <div class="field has-addons is-justify-content-center">
168
168
  <p class="control">
169
- <button class="button is-small" @click="sizeDecrease(component)">
169
+ <button class="button is-small" @click="sizeDecrease(_component)">
170
170
  <span class="icon is-small">
171
171
  <span class="material-icons">
172
172
  chevron_left
@@ -178,7 +178,7 @@ onMounted(() => {
178
178
  position
179
179
  </p>
180
180
  <p class="control">
181
- <button class="button is-small" @click="sizeIncrease(component)">
181
+ <button class="button is-small" @click="sizeIncrease(_component)">
182
182
  <span class="icon is-small">
183
183
  <span class="material-icons">
184
184
  chevron_right
@@ -189,7 +189,7 @@ onMounted(() => {
189
189
  </div>
190
190
 
191
191
  <div class="has-text-centered">
192
- <lesli-button small danger icon="delete" @click="remove(component)">
192
+ <lesli-button small danger icon="delete" @click="remove(_component)">
193
193
  remove
194
194
  </lesli-button>
195
195
  </div>
@@ -67,7 +67,9 @@ const props = defineProps({
67
67
 
68
68
  // · translations
69
69
  const translations = {
70
- dashboards: I18n.t('core.dashboards'),
70
+ shared: {}, //i 18n.t("lesli.shared"),
71
+ dashboards: {}, //i 18n.t("lesli.dashboards"),
72
+
71
73
  components: I18n.t('core.dashboard/components'),
72
74
  core: I18n.t('core.shared'),
73
75
  roles: I18n.t('core.roles'),
@@ -128,8 +130,9 @@ const onCreate = () => {
128
130
  // ·
129
131
  function addComponent(){
130
132
  msg.warning(translations.dashboards.messages_warning_save_changes_reminder)
133
+
131
134
  let new_component = {
132
- id: `${storeDashboard.new_component_id}-${storeDashboard.default_component_configuration.index}`,
135
+ //id: `${storeDashboard.new_component_id}-${storeDashboard.default_component_configuration.index}`,
133
136
  name: '',
134
137
  component_id: storeDashboard.new_component_id.replaceAll("_", "-"),
135
138
  layout: storeDashboard.default_component_configuration.layout,
@@ -192,7 +195,7 @@ onMounted(() => {
192
195
  <div class="column is-4">
193
196
  <div class="field">
194
197
  <label class="label">
195
- {{ "translations.dashboards.column_name" }}
198
+ {{ translations.dashboards.column_name }}
196
199
  </label>
197
200
  <div class="control">
198
201
  <input class="input" type="text" v-model="storeDashboard.dashboard.name" required>
@@ -200,56 +203,44 @@ onMounted(() => {
200
203
  </div>
201
204
  </div>
202
205
 
203
- <!-- Role -->
204
- <div class="column is-4">
205
- <div class="field">
206
- <label class="label">{{ "translations.dashboards.column_roles_id" }}</label>
207
- <div class="control">
208
- <lesli-select
209
- v-model="storeDashboard.dashboard.roles_id"
210
- :options="storeDashboard.options.roles"
211
- ></lesli-select>
212
- </div>
213
- </div>
214
- </div>
215
-
216
206
  <!-- Default -->
217
207
  <div class="column is-4">
218
208
  <div class="field">
219
- <label class="label">{{ "translations.dashboards.column_default" }}</label>
209
+ <label class="label">{{ translations.dashboards.column_default }}</label>
220
210
  <lesli-select
221
211
  v-model="storeDashboard.dashboard.default"
222
212
  :options="default_options">
223
213
  </lesli-select>
224
214
  </div>
225
215
  </div>
226
- </div>
227
-
228
- <div class="is-flex is-justify-content-space-between">
229
216
 
230
217
  <!-- Components -->
231
- <div class="field">
232
- <label class="label">
233
- {{ "translations.dashboards.view_title_add_component" }}
234
- </label>
235
- <div class="control">
236
- <lesli-select
237
- v-model="storeDashboard.new_component_id"
238
- :options="storeDashboard.options.component_ids"
239
- @change="addComponent">
240
- </lesli-select>
218
+ <div class="column is-4">
219
+ <div class="field">
220
+ <label class="label">
221
+ {{ translations.dashboards.view_add_component }}
222
+ </label>
223
+ <div class="control">
224
+ <lesli-select
225
+ v-model="storeDashboard.new_component_id"
226
+ :options="storeDashboard.options.component_ids"
227
+ @change="addComponent">
228
+ </lesli-select>
229
+ </div>
241
230
  </div>
242
- </div>
231
+ </div>
232
+ </div>
243
233
 
244
- <!-- Save button -->
245
- <div class="buttons">
246
- <lesli-button icon="save" :loading="storeDashboard.loading">
247
- {{ translations.dashboards.view_btn_save_dashboard }}
248
- </lesli-button>
249
- <lesli-button danger icon="delete" @click="onDeleteDashboard">
250
- {{ translations.dashboards.view_btn_delete_dashboard }}
251
- </lesli-button>
252
- </div>
234
+ <!-- Save button -->
235
+ <div class="buttons">
236
+ <lesli-button icon="save" :loading="storeDashboard.loading">
237
+ {{ translations.shared.button_save }}
238
+ </lesli-button>
239
+ <!--
240
+ <lesli-button danger icon="delete" @click="onDeleteDashboard">
241
+ {{ translations.dashboards.view_btn_delete_dashboard }}
242
+ </lesli-button>
243
+ -->
253
244
  </div>
254
245
  </lesli-form>
255
246
  </template>
@@ -168,6 +168,8 @@ export const useDashboard = defineStore("shared.dashboard", {
168
168
 
169
169
  const url = this.url[this.engine](`dashboards/${this.dashboard.id}`)
170
170
 
171
+ console.log(data)
172
+
171
173
  return this.http.put(url, data).then(result => {
172
174
  this.msg.success(I18n.t("core.users.messages_success_operation"))
173
175
  this.loading = false
@@ -39,10 +39,11 @@ export const useLayout = defineStore("lesli.layout", {
39
39
  state: () => {
40
40
  return {
41
41
  showEngines: false,
42
+ showSupportTickets: false,
43
+
42
44
  showNotifications: false,
43
45
  showTasks: false,
44
46
  showFiles: false,
45
- showTickets: false,
46
47
  showProfile: false,
47
48
  showAnnouncements: false,
48
49
  header: {
@@ -1,5 +1,4 @@
1
1
  /*
2
-
3
2
  Lesli
4
3
 
5
4
  Copyright (c) 2023, Lesli Technologies, S. A.
@@ -30,27 +29,29 @@ Building a better future, one line of code at a time.
30
29
  // ·
31
30
  */
32
31
 
33
- @import "lesli/pages/devise-simple";
34
-
35
32
 
36
33
  // ·
37
- div.confirmation-message {
38
- //box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
39
- padding: 4rem 0 5rem;
40
- text-align: center;
41
- max-width: 800px;
42
- margin: 0 auto;
43
- width: 90%;
44
-
45
- svg {
46
- max-width: 90px;
47
- margin-bottom: 1rem;
48
- fill: lesli-css-color(lime, 300);
49
- }
34
+ import { defineStore } from "pinia"
50
35
 
51
- p {
52
- font-weight: 100;
53
- font-size: 2rem;
54
- }
55
36
 
56
- }
37
+ // ·
38
+ export const useUsers = defineStore("lesli.users", {
39
+ state: () => {
40
+ return {
41
+ loading: false,
42
+ list: []
43
+ }
44
+ },
45
+ actions: {
46
+ list() {
47
+ this.loading = true
48
+ return this.http.get(this.url.admin("users/list")).then(response => {
49
+ this.list = response
50
+ }).catch(error => {
51
+
52
+ }).finally(() => {
53
+ this.loading = false
54
+ })
55
+ }
56
+ }
57
+ })
@@ -6,7 +6,10 @@
6
6
  "navigation_my_profile": "My profile"
7
7
  },
8
8
  "dashboards": {
9
- "title": "Dashboards"
9
+ "column_default": "Default",
10
+ "column_name": "Name",
11
+ "title": "Dashboards",
12
+ "view_add_component": "Add component"
10
13
  },
11
14
  "shared": {
12
15
  "button_add_new": "Add new",
@@ -17,6 +20,9 @@
17
20
  "button_save": "Save",
18
21
  "button_settings": "Settings",
19
22
  "button_show": "Show",
23
+ "message_operation_error": "Operation failed. Please try again.",
24
+ "message_operation_success": "Operation completed successfully",
25
+ "toolbar_search": "Search...",
20
26
  "view_discussions": "Discussions",
21
27
  "view_files": "Files",
22
28
  "view_quick_actions": "Quick actions",
@@ -35,7 +41,10 @@
35
41
  "navigation_my_profile": "Mi perfil"
36
42
  },
37
43
  "dashboards": {
38
- "title": "Dashboards"
44
+ "column_default": "Default",
45
+ "column_name": "Nombre",
46
+ "title": "Dashboards",
47
+ "view_add_component": "Agregar componente"
39
48
  },
40
49
  "shared": {
41
50
  "button_add_new": "Agregar nuevo",
@@ -46,6 +55,9 @@
46
55
  "button_save": "Guardar",
47
56
  "button_settings": "Configuración",
48
57
  "button_show": "Ver",
58
+ "message_operation_error": "Operación fallida. Por favor, inténtelo de nuevo.",
59
+ "message_operation_success": "Operacion realizada satisfactoriamente",
60
+ "toolbar_search": "Buscar...",
49
61
  "view_discussions": "Discusiones",
50
62
  "view_files": "Archivos",
51
63
  "view_quick_actions": "Acciones rapidas",
@@ -56,5 +68,110 @@
56
68
  "view_username": "Usuario"
57
69
  }
58
70
  }
71
+ },
72
+ "fr": {
73
+ "lesli": {
74
+ "application": {
75
+ "navigation_logout": ":lesli.application.navigation_logout:",
76
+ "navigation_my_profile": ":lesli.application.navigation_my_profile:"
77
+ },
78
+ "dashboards": {
79
+ "column_default": ":lesli.dashboards.column_default:",
80
+ "column_name": ":lesli.dashboards.column_name:",
81
+ "title": ":lesli.dashboards.title:",
82
+ "view_add_component": ":lesli.dashboards.view_add_component:"
83
+ },
84
+ "shared": {
85
+ "button_add_new": ":lesli.shared.button_add_new:",
86
+ "button_delete": ":lesli.shared.button_delete:",
87
+ "button_edit": ":lesli.shared.button_edit:",
88
+ "button_list": ":lesli.shared.button_list:",
89
+ "button_reload": ":lesli.shared.button_reload:",
90
+ "button_save": ":lesli.shared.button_save:",
91
+ "button_settings": ":lesli.shared.button_settings:",
92
+ "button_show": ":lesli.shared.button_show:",
93
+ "message_operation_error": ":lesli.shared.message_operation_error:",
94
+ "message_operation_success": ":lesli.shared.message_operation_success:",
95
+ "toolbar_search": ":lesli.shared.toolbar_search:",
96
+ "view_discussions": ":lesli.shared.view_discussions:",
97
+ "view_files": ":lesli.shared.view_files:",
98
+ "view_quick_actions": ":lesli.shared.view_quick_actions:",
99
+ "view_status_active": ":lesli.shared.view_status_active:",
100
+ "view_status_inactive": ":lesli.shared.view_status_inactive:"
101
+ },
102
+ "users/sessions": {
103
+ "view_username": ":lesli.users/sessions.view_username:"
104
+ }
105
+ }
106
+ },
107
+ "it": {
108
+ "lesli": {
109
+ "application": {
110
+ "navigation_logout": ":lesli.application.navigation_logout:",
111
+ "navigation_my_profile": ":lesli.application.navigation_my_profile:"
112
+ },
113
+ "dashboards": {
114
+ "column_default": ":lesli.dashboards.column_default:",
115
+ "column_name": ":lesli.dashboards.column_name:",
116
+ "title": ":lesli.dashboards.title:",
117
+ "view_add_component": ":lesli.dashboards.view_add_component:"
118
+ },
119
+ "shared": {
120
+ "button_add_new": ":lesli.shared.button_add_new:",
121
+ "button_delete": ":lesli.shared.button_delete:",
122
+ "button_edit": ":lesli.shared.button_edit:",
123
+ "button_list": ":lesli.shared.button_list:",
124
+ "button_reload": ":lesli.shared.button_reload:",
125
+ "button_save": ":lesli.shared.button_save:",
126
+ "button_settings": ":lesli.shared.button_settings:",
127
+ "button_show": ":lesli.shared.button_show:",
128
+ "message_operation_error": ":lesli.shared.message_operation_error:",
129
+ "message_operation_success": ":lesli.shared.message_operation_success:",
130
+ "toolbar_search": ":lesli.shared.toolbar_search:",
131
+ "view_discussions": ":lesli.shared.view_discussions:",
132
+ "view_files": ":lesli.shared.view_files:",
133
+ "view_quick_actions": ":lesli.shared.view_quick_actions:",
134
+ "view_status_active": ":lesli.shared.view_status_active:",
135
+ "view_status_inactive": ":lesli.shared.view_status_inactive:"
136
+ },
137
+ "users/sessions": {
138
+ "view_username": ":lesli.users/sessions.view_username:"
139
+ }
140
+ }
141
+ },
142
+ "pt": {
143
+ "lesli": {
144
+ "application": {
145
+ "navigation_logout": ":lesli.application.navigation_logout:",
146
+ "navigation_my_profile": ":lesli.application.navigation_my_profile:"
147
+ },
148
+ "dashboards": {
149
+ "column_default": ":lesli.dashboards.column_default:",
150
+ "column_name": ":lesli.dashboards.column_name:",
151
+ "title": ":lesli.dashboards.title:",
152
+ "view_add_component": ":lesli.dashboards.view_add_component:"
153
+ },
154
+ "shared": {
155
+ "button_add_new": ":lesli.shared.button_add_new:",
156
+ "button_delete": ":lesli.shared.button_delete:",
157
+ "button_edit": ":lesli.shared.button_edit:",
158
+ "button_list": ":lesli.shared.button_list:",
159
+ "button_reload": ":lesli.shared.button_reload:",
160
+ "button_save": ":lesli.shared.button_save:",
161
+ "button_settings": ":lesli.shared.button_settings:",
162
+ "button_show": ":lesli.shared.button_show:",
163
+ "message_operation_error": ":lesli.shared.message_operation_error:",
164
+ "message_operation_success": ":lesli.shared.message_operation_success:",
165
+ "toolbar_search": ":lesli.shared.toolbar_search:",
166
+ "view_discussions": ":lesli.shared.view_discussions:",
167
+ "view_files": ":lesli.shared.view_files:",
168
+ "view_quick_actions": ":lesli.shared.view_quick_actions:",
169
+ "view_status_active": ":lesli.shared.view_status_active:",
170
+ "view_status_inactive": ":lesli.shared.view_status_inactive:"
171
+ },
172
+ "users/sessions": {
173
+ "view_username": ":lesli.users/sessions.view_username:"
174
+ }
175
+ }
59
176
  }
60
177
  }
data/lib/webpack/base.js 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 https://www.lesli.tech
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
@@ -61,10 +61,10 @@ module.exports = env => ({
61
61
  },
62
62
 
63
63
 
64
- // Set max size limit for JS bundles to 0.98 MB
64
+ // Set max size limit for JS bundles to 1.5 MiB
65
65
  performance: {
66
- maxAssetSize: 1100000,
67
- maxEntrypointSize: 1100000
66
+ maxAssetSize: 1572864,
67
+ maxEntrypointSize: 1572864
68
68
  },
69
69
 
70
70
 
@@ -107,22 +107,25 @@ module.exports = env => ({
107
107
 
108
108
  vue: "vue/dist/vue.esm-bundler.js",
109
109
 
110
- // Set aliases as shortcuts to import modules
110
+ // Set aliases as shortcuts to import core modules
111
111
  Lesli: path.resolve("lib"),
112
112
  LesliVue: path.resolve("lib", "vue"),
113
113
  LesliStyle: path.resolve("lib", "scss"),
114
114
 
115
+ // Set aliases as shortcuts to import engine modules
115
116
  LesliBell: path.resolve("../", "LesliBell", "lib"),
116
117
  LesliAdmin: path.resolve("../", "LesliAdmin", "lib"),
117
118
  LesliAudit: path.resolve("../", "LesliAudit", "lib"),
118
119
  LesliBabel: path.resolve("../", "LesliBabel", "lib"),
119
- LesliGuard: path.resolve("../", "LesliGuard", "lib"),
120
+ LesliShield: path.resolve("../", "LesliShield", "lib"),
120
121
  LesliLetter: path.resolve("../", "LesliLetter", "lib"),
121
- LesliDriver: path.resolve("../", "LesliDriver", "lib"),
122
122
  LesliSupport: path.resolve("../", "LesliSupport", "lib"),
123
+ LesliSecurity: path.resolve("../", "LesliSecurity", "lib"),
124
+ LesliCalendar: path.resolve("../", "LesliCalendar", "lib"),
123
125
  LesliDashboard: path.resolve("../", "LesliDashboard", "lib"),
124
126
 
125
- LesliBuilder: path.resolve("engines", "lesli_builder", "lib", "vue")
127
+ // Set aliases as shortcuts to import root modules
128
+ Root: path.resolve("../", "../", "lib")
126
129
  }
127
130
  },
128
131
  module: {
@@ -133,7 +136,9 @@ module.exports = env => ({
133
136
  options: {
134
137
  compilerOptions: {
135
138
  // ignore custom html components & elements
136
- isCustomElement: tag => tag === 'trix-editor'
139
+ isCustomElement: tag => {
140
+ return tag.startsWith('trix-')
141
+ }
137
142
  }
138
143
  }
139
144
  }
@@ -152,7 +157,7 @@ module.exports = env => ({
152
157
  presets: [["@babel/preset-env", { "targets": "defaults" }]]
153
158
  }
154
159
  }
155
- },{
160
+ }, {
156
161
  test: /\.(scss)$/,
157
162
  use: [
158
163
  MiniCssExtractPlugin.loader,
@@ -160,7 +165,7 @@ module.exports = env => ({
160
165
  loader:'css-loader',
161
166
  options: { url: false }
162
167
  },
163
- 'sass-loader'
168
+ 'sass-loader' // required to compile sass files with webpack
164
169
  ]
165
170
  }]
166
171
  },
@@ -179,7 +184,8 @@ module.exports = env => ({
179
184
  lesli_application_development: JSON.stringify(!env.production),
180
185
  lesli_application_version: JSON.stringify(dayjs().format("YYMMDD.HHmm")),
181
186
  __VUE_OPTIONS_API__: true,
182
- __VUE_PROD_DEVTOOLS__: true
187
+ __VUE_PROD_DEVTOOLS__: false,
188
+ __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
183
189
  })
184
190
  ]
185
191
  })
data/lib/webpack/core.js 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 https://www.lesli.tech
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
@@ -48,7 +48,6 @@ module.exports = (env, requestedEngines) => {
48
48
  "users/registrations": "LesliApp/users/registrations.js",
49
49
 
50
50
 
51
-
52
51
  // alternative logins
53
52
  "mfas/application": "LesliApp/mfas/application.js",
54
53
  "otps/application": "LesliApp/otps/application.js",
@@ -63,27 +62,32 @@ module.exports = (env, requestedEngines) => {
63
62
  //"errors/application": "LesliApp/errors/app.js"
64
63
  },
65
64
  entry: {
66
- "lesli/users/registrations": "Lesli/devise/registrations.js",
67
- "lesli/users/confirmations": "Lesli/devise/confirmations.js",
68
- "lesli/users/passwords": "Lesli/devise/passwords.js"
65
+ "lesli/users/passwords": "Lesli/devise/passwords.js",
66
+
67
+ "lesli/users/registrations": ["Lesli/vue/devise/registrations.js", "Lesli/scss/devise/registrations.scss"],
68
+ "lesli/users/confirmations": ["Lesli/vue/devise/confirmations.js", "Lesli/scss/devise/confirmations.scss"],
69
+ "lesli/users/passwords": ["Lesli/vue/devise/passwords.js", "Lesli/scss/devise/passwords.scss"],
70
+ "lesli/users/sessions": ["Lesli/vue/devise/sessions.js", "Lesli/scss/devise/sessions.scss"]
69
71
  },
70
72
  entry: {
71
73
  "lesli/templates/public": "Lesli/scss/templates/public.scss",
72
- "lesli/templates/application": "Lesli/scss/templates/application.scss",
73
- "lesli/users/sessions": ["Lesli/vue/devise/sessions.js", "Lesli/scss/devise/sessions.scss"]
74
+ "lesli/templates/application": "Lesli/scss/templates/application.scss"
74
75
  },
76
+
77
+ // javascript output only,
78
+ // the output for stylesheets is defined in the webpack file itself
75
79
  output: {
76
- // the output for stylesheets is defined in the webpack file itself
77
80
  path: path.resolve("app", "assets"),
78
- filename: 'javascripts/[name].js'
81
+ filename: "javascripts/[name].js"
79
82
  }
80
83
  }
81
84
 
82
85
  // do not include the core apps if specific engines were requested
83
- if (requestedEngines.length > 0 && !requestedEngines.includes("core")) {
84
- config.entry = {}
86
+ if (requestedEngines.length > 0) {
87
+ if (!requestedEngines.includes("lesli")) {
88
+ config.entry = {}
89
+ }
85
90
  }
86
91
 
87
92
  return config
88
-
89
93
  }
@@ -52,7 +52,9 @@ function installedEngines(requestedEngines) {
52
52
 
53
53
 
54
54
  // remove the keep file from the engines directory
55
- engines = engines.filter(directory => directory != ".gitkeep")
55
+ engines = engines
56
+ .filter(directory => directory != ".gitkeep")
57
+ .filter(directory => directory != ".DS_Store")
56
58
 
57
59
 
58
60
  // filter found engines to get only the ones that are ready to work with vue