lesli_support 1.0.0 → 1.1.0

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/lesli_support/item/discussions_controller.rb +6 -0
  3. data/app/controllers/lesli_support/item/tasks_controller.rb +6 -0
  4. data/app/controllers/lesli_support/tickets_controller.rb +6 -5
  5. data/app/models/lesli_support/item/activity.rb +4 -0
  6. data/app/models/lesli_support/item/discussion.rb +6 -0
  7. data/app/models/lesli_support/item/task.rb +6 -0
  8. data/app/models/lesli_support/ticket.rb +14 -9
  9. data/app/views/lesli_support/dashboards/_component-latest-tickets.html.erb +1 -1
  10. data/app/views/lesli_support/tickets/show.html.erb +10 -7
  11. data/db/migrate/v1/0702000110_create_lesli_support_accounts.rb +7 -0
  12. data/db/migrate/v1/0702110110_create_lesli_support_tickets.rb +0 -7
  13. data/db/seeds.rb +1 -1
  14. data/lib/lesli_support/version.rb +2 -2
  15. metadata +8 -29
  16. data/app/controllers/lesli_support/options_controller.rb +0 -23
  17. data/app/controllers/lesli_support/ticket/actions_controller.rb +0 -4
  18. data/app/helpers/lesli_support/options_helper.rb +0 -4
  19. data/app/helpers/lesli_support/ticket/actions_helper.rb +0 -4
  20. data/app/models/lesli_support/option.rb +0 -4
  21. data/app/models/lesli_support/ticket/action.rb +0 -6
  22. data/app/views/lesli_support/options/_form.html.erb +0 -17
  23. data/app/views/lesli_support/options/_option.html.erb +0 -2
  24. data/app/views/lesli_support/options/edit.html.erb +0 -10
  25. data/app/views/lesli_support/options/index.html.erb +0 -14
  26. data/app/views/lesli_support/options/new.html.erb +0 -9
  27. data/app/views/lesli_support/options/show.html.erb +0 -10
  28. data/lib/scss/application.scss +0 -0
  29. data/lib/vue/application.js +0 -93
  30. data/lib/vue/apps/dashboard/components/engine-version.vue +0 -71
  31. data/lib/vue/apps/dashboard/components/my-tasks.vue +0 -77
  32. data/lib/vue/apps/tickets/components/assignments.vue +0 -93
  33. data/lib/vue/apps/tickets/components/form.vue +0 -305
  34. data/lib/vue/apps/tickets/components/internal-comments.vue +0 -107
  35. data/lib/vue/apps/tickets/components/sla-info.vue +0 -115
  36. data/lib/vue/apps/tickets/components/table.vue +0 -94
  37. data/lib/vue/apps/tickets/index.vue +0 -145
  38. data/lib/vue/apps/tickets/new.vue +0 -78
  39. data/lib/vue/apps/tickets/show.vue +0 -183
  40. data/lib/vue/stores/tickets.js +0 -276
  41. data/lib/vue/stores/translations.json +0 -162
@@ -1,94 +0,0 @@
1
- <script setup>
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 https://www.lesli.tech
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
- // · import vue tools
35
- import { useRouter } from "vue-router"
36
-
37
-
38
- // · import lesli stores
39
- import { useTickets } from "LesliSupport/vue/stores/tickets"
40
-
41
-
42
- // · initialize/inject plugins
43
- const url = inject("url")
44
-
45
-
46
- // · implement stores
47
- const storeTickets = useTickets()
48
-
49
-
50
- // · translations
51
- const translations = {
52
- tickets: i18n.t("lesli_support.tickets"),
53
- lesli: i18n.t("lesli")
54
- }
55
-
56
-
57
- // ·
58
- const columns = [{
59
- field: "id",
60
- label: translations.tickets.column_id,
61
- sort: true
62
- }, {
63
- field: "subject",
64
- label: translations.tickets.column_subject,
65
- sort: true
66
- }, {
67
- field: "deadline",
68
- label: translations.tickets.column_deadline,
69
- sort: true
70
- }, {
71
- field: "status_name",
72
- label: translations.tickets.column_status,
73
- align: "center",
74
- sort: true
75
- },{
76
- field: "priority_name",
77
- label: translations.tickets.column_priority,
78
- align: "center",
79
- sort: true
80
- }, {
81
- field: "user_name",
82
- label: translations.tickets.column_creator,
83
- sort: true
84
- }]
85
- </script>
86
- <template>
87
- <lesli-table
88
- :columns="columns"
89
- :records="storeTickets.index.records"
90
- :loading="storeTickets.index.loading"
91
- :pagination="storeTickets.index.pagination"
92
- :link="(ticket) => url.support('tickets/:id', ticket.id)">
93
- </lesli-table>
94
- </template>
@@ -1,145 +0,0 @@
1
- <script setup>
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 https://www.lesli.tech
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
- // · import vue tools
35
- import { onMounted, inject } from "vue"
36
- import { useRouter } from "vue-router"
37
-
38
-
39
- // · import lesli stores
40
- import { useTickets } from "LesliSupport/vue/stores/tickets"
41
- // import { useLesliMsg } from "../../../Lesli/lesli-vue/source/composables/msg/Msg.js"
42
-
43
- // const msg = useLesliMsg()
44
-
45
- // · initialize/inject plugins
46
- const router = useRouter()
47
- const date = inject("date")
48
- const url = inject("url")
49
-
50
-
51
- // · implement stores
52
- const storeTickets = useTickets()
53
-
54
-
55
- // · translations
56
- const translations = {
57
- tickets: i18n.t("lesli_support.tickets"),
58
- lesli: i18n.t("lesli")
59
- }
60
-
61
-
62
- // ·
63
- const columns = [{
64
- field: "id",
65
- label: translations.tickets.column_id,
66
- sort: true
67
- }, {
68
- field: "subject",
69
- label: translations.tickets.column_subject,
70
- sort: true
71
- }, {
72
- field: "deadline",
73
- label: translations.tickets.column_deadline,
74
- sort: true
75
- }, {
76
- field: "status_name",
77
- label: translations.tickets.column_status,
78
- align: "center",
79
- sort: true
80
- },{
81
- field: "priority_name",
82
- label: translations.tickets.column_priority,
83
- align: "center",
84
- sort: true
85
- }, {
86
- field: "user_name",
87
- label: translations.tickets.column_creator,
88
- sort: true
89
- }]
90
-
91
-
92
- // · initializing
93
- onMounted(() => {
94
- storeTickets.getTickets()
95
- })
96
- </script>
97
- <template>
98
- <lesli-application-container>
99
- <lesli-header title="Tickets">
100
- <lesli-button @click="storeTickets.reloadTickets" icon="refresh" :loading="storeTickets.loading">
101
- {{ translations.lesli.shared.button_reload }}
102
- </lesli-button>
103
- <lesli-link button solid :to="url.support('tickets/new')" icon="add">
104
- {{ translations.lesli.shared.button_add_new }}
105
- </lesli-link>
106
- </lesli-header>
107
- <lesli-toolbar
108
- @search="storeTickets.search"
109
- :placeholder="translations.lesli.shared.toolbar_search">
110
- <lesli-select
111
- :options="[{
112
- label: translations.tickets.view_all_tickets,
113
- value: null
114
- }, {
115
- label: translations.tickets.view_own_tickets,
116
- value: 'own'
117
- }]"
118
- v-model="storeTickets.filters.user_type"
119
- @change="storeTickets.getTickets()">
120
- </lesli-select>
121
- <lesli-select
122
- :options="[{
123
- label: translations.tickets.view_all_tickets,
124
- value: null
125
- }, {
126
- label: translations.tickets.view_active_tickets,
127
- value: 'active'
128
- }, {
129
- label: translations.tickets.view_inactive_tickets,
130
- value: 'inactive'
131
- }]"
132
- v-model="storeTickets.filters.search_type"
133
- @change="storeTickets.getTickets()">
134
- </lesli-select>
135
- </lesli-toolbar>
136
-
137
- <lesli-table
138
- :columns="columns"
139
- :records="storeTickets.index.records"
140
- :loading="storeTickets.index.loading"
141
- :pagination="storeTickets.index.pagination"
142
- :link="(ticket) => url.support('tickets/:id', ticket.id)">
143
- </lesli-table>
144
- </lesli-application-container>
145
- </template>
@@ -1,78 +0,0 @@
1
- <script setup>
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 https://www.lesli.tech
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
- // · import vue tools
35
- import { onMounted, inject } from "vue"
36
- import { useRouter } from "vue-router"
37
- // import { useLesliMsg } from "/Users/ldonis/code/Lesli/lesli-vue/source/composables/msg/msg.js"
38
-
39
- // const msg = useLesliMsg()
40
-
41
-
42
- // .
43
- const url = inject("url")
44
-
45
-
46
- // . import components
47
- import formTicket from "./components/form.vue"
48
-
49
-
50
- // · import lesli stores
51
- import { useTickets } from "LesliSupport/vue/stores/tickets"
52
-
53
-
54
- // · initialize/inject plugins
55
- const router = useRouter()
56
-
57
-
58
- // · implement stores
59
- const storeTickets = useTickets()
60
-
61
-
62
- //·
63
- const translations = {
64
- lesli: i18n.t("lesli"),
65
- tickets: i18n.t("lesli_support.tickets"),
66
- }
67
-
68
- </script>
69
- <template>
70
- <lesli-application-container>
71
- <lesli-header title="Create new ticket">
72
- <lesli-button :to="url.support('list')" icon="list">
73
- {{ translations.lesli.shared.button_list }}
74
- </lesli-button>
75
- </lesli-header>
76
- <form-ticket editable></form-ticket>
77
- </lesli-application-container>
78
- </template>
@@ -1,183 +0,0 @@
1
- <script setup>
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 https://www.lesli.tech
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
- // · import vue tools
35
- import { onMounted, computed, inject } from "vue"
36
- import { useRouter, useRoute } from "vue-router"
37
-
38
-
39
- // . import components
40
- import formTicket from "./components/form.vue"
41
- // import slaInfo from './components/sla-info.vue'
42
- // import internalComments from './components/internal-comments.vue'
43
- // import assignments from './components/assignments.vue'
44
-
45
-
46
- import ComponentDiscussions from "Lesli/vue/cloudobjects/discussion.vue"
47
- //import ComponentFiles from "Lesli/cloudobjects/components/file.vue"
48
- //import ComponentWorkflowStatusDropdown from "Lesli/shared/workflows/components/workflow-status-dropdown.vue"
49
- //import ComponentActions from "Lesli/cloudobjects/components/action.vue"
50
-
51
-
52
- // · import lesli stores
53
- import { useTickets } from "LesliSupport/vue/stores/tickets"
54
-
55
-
56
- // · initialize/inject plugins
57
- const route = useRoute()
58
- const router = useRouter()
59
- const url = inject("url")
60
-
61
-
62
- // · implement stores
63
- const storeTickets = useTickets()
64
-
65
-
66
- //·
67
- const translations = {
68
- tickets: i18n.t("lesli_support.tickets"),
69
- lesli: {
70
- shared: i18n.t("lesli.shared")
71
- },
72
-
73
-
74
- main: I18n.t('help.tickets'),
75
- sla: I18n.t('help.slas'),
76
- core: {
77
- shared: I18n.t('core.shared')
78
- },
79
- shared: I18n.t('help.shared')
80
- }
81
-
82
-
83
- //·
84
- const props = defineProps({
85
- editable: {
86
- type: Boolean,
87
- required: false,
88
- default: false,
89
- },
90
- appMountPath: {
91
- type: String,
92
- required: false,
93
- default: "help/tickets",
94
- }
95
- })
96
-
97
-
98
- //·
99
- onMounted(() => {
100
- if (route.params.id) {
101
- storeTickets.fetchTicket(route.params.id)
102
- }
103
- })
104
-
105
-
106
- //·
107
- const onUpdatedStatus = () => {
108
- //storeTickets.getTicket(route.params.id)
109
- }
110
-
111
-
112
- //·
113
- const onDelete = () => {
114
- storeTickets.deleteTicket().then(()=>{
115
- router.push(url.root(`${props.appMountPath}`).s)
116
- })
117
- }
118
-
119
- </script>
120
- <template>
121
- <lesli-application-container>
122
- <lesli-header :title="`${storeTickets.ticket.subject} (${storeTickets.ticket.status || 'open'})`">
123
- <lesli-link button icon="list" :to="url.support('tickets')">
124
- {{ translations.lesli.shared.button_list }}
125
- </lesli-link>
126
- <lesli-link v-if="!props.editable" button warning :to="url.support('tickets/:id/edit', route.params.id)" icon="edit">
127
- {{ translations.lesli.shared.button_edit }}
128
- </lesli-link>
129
- <lesli-link v-if="props.editable" button info :to="url.support('tickets/:id', route.params.id)" icon="visibility">
130
- {{ translations.lesli.shared.button_show }}
131
- </lesli-link>
132
- <lesli-button danger @click="onDelete" icon="delete">
133
- {{ translations.lesli.shared.button_delete }}
134
- </lesli-button>
135
- </lesli-header>
136
-
137
- <lesli-tabs v-model="tab">
138
- <lesli-tab-item title="Information" icon="info" paddingless>
139
- <form-ticket :path="props.appMountPath" :editable="props.editable"></form-ticket>
140
- </lesli-tab-item>
141
- <lesli-tab-item title="Discussions" icon="forum">
142
- <component-discussions
143
- cloud-module="support"
144
- cloud-object="tickets"
145
- :cloud-object-id="storeTickets.ticket.id"
146
- :onlyDiscussions="false">
147
- </component-discussions>
148
- </lesli-tab-item>
149
- </lesli-tabs>
150
- <!--
151
- <lesli-tab-item title="Information" icon="info" paddingless>
152
- <form-ticket :path="props.appMountPath" :editable="props.editable"></form-ticket>
153
- </lesli-tab-item>
154
- <lesli-tab-item :title="translations.tickets.tab_assignments" icon="group">
155
- <assignments></assignments>
156
- </lesli-tab-item>
157
- <lesli-tab-item :title="translations.lesli.shared.view_files" icon="attach_file">
158
- <component-files
159
- cloud-module="help"
160
- cloud-object="tickets"
161
- :cloud-object-id="storeTickets.ticket.id"
162
- :accepted-files="['images', 'documents', 'plaintext']">
163
- </component-files>
164
- </lesli-tab-item>
165
-
166
- <lesli-tab-item :title="translations.main.view_tab_title_histories" icon="comment">
167
- <internal-comments></internal-comments>
168
- </lesli-tab-item>
169
-
170
- <lesli-tab-item :title="translations.lesli.shared.view_quick_actions" icon="playlist_add_check">
171
- <component-actions
172
- cloud-module="help"
173
- cloud-object="tickets"
174
- :cloud-object-id="storeTickets.ticket.id">
175
- </component-actions>
176
- </lesli-tab-item>
177
-
178
- <lesli-tab-item :title="translations.main.view_tab_title_sla" icon="article" v-if="storeTickets.ticket.sla">
179
- <sla-info></sla-info>
180
- </lesli-tab-item>
181
- -->
182
- </lesli-application-container>
183
- </template>