lesli_support 0.1.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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/lesli_support/support-logo.svg +1 -9
  3. data/app/assets/javascripts/lesli_support/application.js +1 -4998
  4. data/app/assets/stylesheets/lesli_support/application.css +3 -3
  5. data/app/controllers/lesli_support/catalog/items_controller.rb +60 -0
  6. data/app/controllers/lesli_support/item/discussions_controller.rb +6 -0
  7. data/app/controllers/lesli_support/item/tasks_controller.rb +6 -0
  8. data/app/controllers/lesli_support/ticket/activities_controller.rb +60 -0
  9. data/app/controllers/lesli_support/ticket/discussions_controller.rb +1 -2
  10. data/app/controllers/lesli_support/tickets_controller.rb +37 -56
  11. data/app/helpers/lesli_support/{options_helper.rb → catalog/items_helper.rb} +1 -1
  12. data/app/helpers/lesli_support/ticket/activities_helper.rb +4 -0
  13. data/app/models/lesli_support/account.rb +5 -8
  14. data/app/models/lesli_support/catalog/item.rb +4 -0
  15. data/app/models/lesli_support/catalog.rb +3 -12
  16. data/app/models/lesli_support/dashboard.rb +6 -10
  17. data/app/models/lesli_support/item/activity.rb +4 -0
  18. data/app/models/lesli_support/item/discussion.rb +6 -0
  19. data/app/models/lesli_support/item/task.rb +6 -0
  20. data/app/models/lesli_support/ticket/activity.rb +4 -0
  21. data/app/models/lesli_support/ticket/discussion.rb +3 -4
  22. data/app/models/lesli_support/ticket.rb +66 -7
  23. data/app/services/lesli_support/ticket_service.rb +37 -55
  24. data/app/views/lesli_support/catalog/items/_form.html.erb +17 -0
  25. data/app/views/lesli_support/catalog/items/_item.html.erb +2 -0
  26. data/app/views/lesli_support/catalog/items/edit.html.erb +12 -0
  27. data/app/views/lesli_support/catalog/items/index.html.erb +16 -0
  28. data/app/views/lesli_support/catalog/items/new.html.erb +11 -0
  29. data/app/views/lesli_support/catalog/items/show.html.erb +10 -0
  30. data/app/views/lesli_support/dashboards/_component-latest-tickets.html.erb +34 -0
  31. data/app/views/lesli_support/dashboards/_component-tickets-by-category.html.erb +17 -0
  32. data/app/views/lesli_support/dashboards/_component-tickets-created.html.erb +10 -0
  33. data/app/views/lesli_support/dashboards/_component-tickets-open.html.erb +5 -0
  34. data/app/views/lesli_support/tickets/_form.html.erb +27 -0
  35. data/app/views/lesli_support/tickets/index.html.erb +35 -4
  36. data/app/views/lesli_support/tickets/new.html.erb +31 -14
  37. data/app/views/lesli_support/tickets/show.html.erb +30 -15
  38. data/config/locales/translations.en.yml +1 -42
  39. data/config/locales/translations.es.yml +1 -42
  40. data/config/locales/translations.fr.yml +1 -42
  41. data/config/locales/translations.it.yml +1 -42
  42. data/config/locales/translations.pt.yml +1 -42
  43. data/config/routes.rb +5 -25
  44. data/db/migrate/v1/0702000110_create_lesli_support_accounts.rb +10 -8
  45. data/db/migrate/v1/0702002010_create_lesli_support_catalogs.rb +37 -0
  46. data/db/migrate/v1/0702100110_create_lesli_support_slas.rb +2 -6
  47. data/db/migrate/v1/0702110110_create_lesli_support_tickets.rb +18 -49
  48. data/db/seed/development.rb +43 -22
  49. data/db/seed/production.rb +7 -2
  50. data/db/seed/seeds.json +64 -0
  51. data/db/seed/test.rb +2 -2
  52. data/db/seeds.rb +6 -13
  53. data/db/{migrate/v1/0702000210_create_lesli_support_account_settings.rb → tables/0010009010_create_feedbacks.rb} +21 -11
  54. data/db/{migrate/v1 → tables}/0702010110_create_lesli_support_catalog_workspaces.rb +7 -7
  55. data/db/{migrate/v1 → tables}/0702010210_create_lesli_support_catalog_types.rb +6 -6
  56. data/db/{migrate/v1 → tables}/0702010310_create_lesli_support_catalog_categories.rb +7 -7
  57. data/db/{migrate/v1 → tables}/0702010410_create_lesli_support_catalog_priorities.rb +7 -7
  58. data/lib/lesli_support/version.rb +2 -2
  59. data/readme.md +77 -25
  60. metadata +37 -91
  61. data/app/controllers/lesli_support/catalog_categories_controller.rb +0 -60
  62. data/app/controllers/lesli_support/catalog_priorities_controller.rb +0 -60
  63. data/app/controllers/lesli_support/catalog_types_controller.rb +0 -60
  64. data/app/controllers/lesli_support/catalog_workspaces_controller.rb +0 -60
  65. data/app/controllers/lesli_support/dashboard/components_controller.rb +0 -92
  66. data/app/controllers/lesli_support/options_controller.rb +0 -23
  67. data/app/helpers/lesli_support/catalog_categories_helper.rb +0 -4
  68. data/app/helpers/lesli_support/catalog_priorities_helper.rb +0 -4
  69. data/app/helpers/lesli_support/catalog_types_helper.rb +0 -4
  70. data/app/helpers/lesli_support/catalog_workspaces_helper.rb +0 -4
  71. data/app/models/lesli_support/catalog_category.rb +0 -5
  72. data/app/models/lesli_support/catalog_priority.rb +0 -5
  73. data/app/models/lesli_support/catalog_type.rb +0 -5
  74. data/app/models/lesli_support/catalog_workspace.rb +0 -5
  75. data/app/models/lesli_support/dashboard/component.rb +0 -18
  76. data/app/models/lesli_support/option.rb +0 -4
  77. data/app/views/layouts/lesli_support/application.html.erb +0 -15
  78. data/app/views/lesli_support/catalog_categories/_catalog_category.html.erb +0 -2
  79. data/app/views/lesli_support/catalog_categories/_form.html.erb +0 -17
  80. data/app/views/lesli_support/catalog_categories/edit.html.erb +0 -10
  81. data/app/views/lesli_support/catalog_categories/index.html.erb +0 -14
  82. data/app/views/lesli_support/catalog_categories/new.html.erb +0 -9
  83. data/app/views/lesli_support/catalog_categories/show.html.erb +0 -10
  84. data/app/views/lesli_support/catalog_priorities/_catalog_priority.html.erb +0 -2
  85. data/app/views/lesli_support/catalog_priorities/_form.html.erb +0 -17
  86. data/app/views/lesli_support/catalog_priorities/edit.html.erb +0 -10
  87. data/app/views/lesli_support/catalog_priorities/index.html.erb +0 -14
  88. data/app/views/lesli_support/catalog_priorities/new.html.erb +0 -9
  89. data/app/views/lesli_support/catalog_priorities/show.html.erb +0 -10
  90. data/app/views/lesli_support/catalog_types/_catalog_type.html.erb +0 -2
  91. data/app/views/lesli_support/catalog_types/_form.html.erb +0 -17
  92. data/app/views/lesli_support/catalog_types/edit.html.erb +0 -10
  93. data/app/views/lesli_support/catalog_types/index.html.erb +0 -14
  94. data/app/views/lesli_support/catalog_types/new.html.erb +0 -9
  95. data/app/views/lesli_support/catalog_types/show.html.erb +0 -10
  96. data/app/views/lesli_support/catalog_workspaces/_catalog_workspace.html.erb +0 -2
  97. data/app/views/lesli_support/catalog_workspaces/_form.html.erb +0 -17
  98. data/app/views/lesli_support/catalog_workspaces/edit.html.erb +0 -10
  99. data/app/views/lesli_support/catalog_workspaces/index.html.erb +0 -14
  100. data/app/views/lesli_support/catalog_workspaces/new.html.erb +0 -9
  101. data/app/views/lesli_support/catalog_workspaces/show.html.erb +0 -10
  102. data/app/views/lesli_support/dashboards/edit.html.erb +0 -1
  103. data/app/views/lesli_support/dashboards/index.html.erb +0 -1
  104. data/app/views/lesli_support/dashboards/new.html.erb +0 -1
  105. data/app/views/lesli_support/dashboards/show.html.erb +0 -1
  106. data/app/views/lesli_support/options/_form.html.erb +0 -17
  107. data/app/views/lesli_support/options/_option.html.erb +0 -2
  108. data/app/views/lesli_support/options/edit.html.erb +0 -10
  109. data/app/views/lesli_support/options/index.html.erb +0 -14
  110. data/app/views/lesli_support/options/new.html.erb +0 -9
  111. data/app/views/lesli_support/options/show.html.erb +0 -10
  112. data/app/views/lesli_support/ticket/discussions/_discussion.html.erb +0 -2
  113. data/app/views/lesli_support/ticket/discussions/_form.html.erb +0 -17
  114. data/app/views/lesli_support/ticket/discussions/edit.html.erb +0 -10
  115. data/app/views/lesli_support/ticket/discussions/index.html.erb +0 -14
  116. data/app/views/lesli_support/ticket/discussions/new.html.erb +0 -9
  117. data/app/views/lesli_support/ticket/discussions/show.html.erb +0 -10
  118. data/app/views/lesli_support/tickets/edit.html.erb +0 -20
  119. data/db/migrate/v1/0702050110_create_lesli_support_dashboards.rb +0 -50
  120. data/db/migrate/v1/0702050210_create_lesli_support_dashboard_components.rb +0 -50
  121. data/db/migrate/v1/0702110510_create_lesli_support_ticket_discussions.rb +0 -52
  122. data/lib/scss/application.scss +0 -11
  123. data/lib/vue/application.js +0 -93
  124. data/lib/vue/apps/dashboard/components/engine-version.vue +0 -71
  125. data/lib/vue/apps/dashboard/components/my-tasks.vue +0 -77
  126. data/lib/vue/apps/tickets/components/assignments.vue +0 -93
  127. data/lib/vue/apps/tickets/components/form.vue +0 -305
  128. data/lib/vue/apps/tickets/components/internal-comments.vue +0 -107
  129. data/lib/vue/apps/tickets/components/sla-info.vue +0 -115
  130. data/lib/vue/apps/tickets/index.vue +0 -145
  131. data/lib/vue/apps/tickets/new.vue +0 -78
  132. data/lib/vue/apps/tickets/show.vue +0 -183
  133. data/lib/vue/stores/tickets.js +0 -276
  134. data/lib/vue/stores/translations.json +0 -272
  135. /data/app/views/lesli_support/partials/{_engine-navigation.html.erb → _navigation.html.erb} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lesli
4
4
 
5
- Copyright (c) 2023, Lesli Technologies, S. A.
5
+ Copyright (c) 2025, Lesli Technologies, S. A.
6
6
 
7
7
  This program is free software: you can redistribute it and/or modify
8
8
  it under the terms of the GNU General Public License as published by
@@ -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
@@ -33,58 +33,40 @@ Building a better future, one line of code at a time.
33
33
  module LesliSupport
34
34
  class TicketService < Lesli::ApplicationLesliService
35
35
 
36
- def find ticket_id
37
- super(current_user.account.support.tickets.find_by(id: ticket_id))
36
+ def find(id: nil, uid: nil)
37
+ scope = current_user.account.support.tickets
38
+
39
+ # Use a hash to filter out nil values and find the record
40
+ params = { id: id, uid: uid }.compact
41
+
42
+ # Search and assign the resource if search params exist
43
+ super(scope.find_by(params)) if params.any?
38
44
  end
39
45
 
40
46
  def index
41
47
 
42
48
  return current_user.account.support.tickets.left_joins(
43
49
  :user,
44
- :creator,
45
- :catalog_priority
50
+ :owner,
51
+ :priority
46
52
  ).select(
47
53
  :id,
54
+ :uid,
48
55
  :subject,
49
- :deadline,
50
- :creator_id,
51
- :user_id,
56
+ Date2.new.db_column(:deadline_at),
52
57
  "CONCAT_WS(' ', lesli_users.first_name, lesli_users.last_name) as user_name",
53
- "CONCAT_WS(' ', creators_lesli_support_tickets.first_name, creators_lesli_support_tickets.last_name) as creator_name",
54
- "lesli_support_tickets.updated_at",
55
- "lesli_support_tickets.created_at",
56
- "lesli_support_catalog_priorities.name as priority_name"
58
+ "CONCAT_WS(' ', owners_lesli_support_tickets.first_name, owners_lesli_support_tickets.last_name) as agent_name",
59
+ "lesli_support_catalog_items.name as priority_name"
57
60
  ).order(id: :desc)
58
61
  .page(query[:pagination][:page])
59
62
  .per(query[:pagination][:perPage])
60
-
61
- current_user.account.help.tickets.left_joins(
62
- :priority,
63
- :type,
64
- :workspace,
65
- :category,
66
- :status,
67
- :assignments,
68
- :assigned,
69
- :user
70
- ).select(
71
- :id,
72
- :subject,
73
- :deadline,
74
- :assigned_id,
75
- :user_id,
76
- "CONCAT_WS(' ', users.first_name, users.last_name) as assigned_name",
77
- "CONCAT_WS(' ', users_cloud_help_tickets.first_name, users_cloud_help_tickets.last_name) as user_name",
78
- "cloud_help_tickets.updated_at",
79
- "cloud_help_tickets.created_at"
80
- )
81
63
  end
82
64
 
83
65
  def create(ticket_params)
84
66
 
85
67
  ticket = current_user.account.support.tickets.new(ticket_params)
86
68
  #ticket.source = Catalog::TicketSource.cloud_help_source(current_user.account.help)
87
- ticket.creator = current_user
69
+ ticket.owner = current_user
88
70
  ticket.user = current_user
89
71
 
90
72
  unless ticket_params.dig(:started_at)
@@ -106,26 +88,26 @@ module LesliSupport
106
88
 
107
89
  def show()
108
90
  return current_user.account.support.tickets.left_joins(
109
- :user, :creator
110
- ).select(
111
- :id,
112
- :subject,
113
- :description,
114
- :reference_url,
115
- :deadline,
116
- :started_at,
117
- :completed_at,
118
- :hours_worked,
119
- :creator_id,
120
- :user_id,
121
- :catalog_workspace_id,
122
- :catalog_type_id,
123
- :catalog_category_id,
124
- :catalog_priority_id,
125
- "CONCAT_WS(' ', lesli_users.first_name, lesli_users.last_name) as user_name",
126
- "CONCAT_WS(' ', creators_lesli_support_tickets.first_name, creators_lesli_support_tickets.last_name) as creator_name",
127
- "lesli_support_tickets.updated_at",
128
- "lesli_support_tickets.created_at"
91
+ :user, :owner
92
+ # ).select(
93
+ # :id,
94
+ # :subject,
95
+ # :description,
96
+ # :reference_url,
97
+ # :deadline,
98
+ # :started_at,
99
+ # :completed_at,
100
+ # :hours_worked,
101
+ # :creator_id,
102
+ # :user_id,
103
+ # :catalog_workspace_id,
104
+ # :catalog_type_id,
105
+ # :catalog_category_id,
106
+ # :catalog_priority_id,
107
+ # "CONCAT_WS(' ', lesli_users.first_name, lesli_users.last_name) as user_name",
108
+ # "CONCAT_WS(' ', creators_lesli_support_tickets.first_name, creators_lesli_support_tickets.last_name) as creator_name",
109
+ # "lesli_support_tickets.updated_at",
110
+ # "lesli_support_tickets.created_at"
129
111
  ).where("lesli_support_tickets.id = ?", self.resource.id).first
130
112
  end
131
113
 
@@ -0,0 +1,17 @@
1
+ <%= form_with(model: catalog_item) do |form| %>
2
+ <% if catalog_item.errors.any? %>
3
+ <div style="color: red">
4
+ <h2><%= pluralize(catalog_item.errors.count, "error") %> prohibited this catalog_item from being saved:</h2>
5
+
6
+ <ul>
7
+ <% catalog_item.errors.each do |error| %>
8
+ <li><%= error.full_message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div>
15
+ <%= form.submit %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <div id="<%= dom_id item %>">
2
+ </div>
@@ -0,0 +1,12 @@
1
+ <% content_for :title, "Editing item" %>
2
+
3
+ <h1>Editing item</h1>
4
+
5
+ <%= render "form", catalog_item: @catalog_item %>
6
+
7
+ <br>
8
+
9
+ <div>
10
+ <%= link_to "Show this item", @catalog_item %> |
11
+ <%= link_to "Back to items", catalog_items_path %>
12
+ </div>
@@ -0,0 +1,16 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <% content_for :title, "Items" %>
4
+
5
+ <h1>Items</h1>
6
+
7
+ <div id="catalog_items">
8
+ <% @catalog_items.each do |catalog_item| %>
9
+ <%= render catalog_item %>
10
+ <p>
11
+ <%= link_to "Show this item", catalog_item %>
12
+ </p>
13
+ <% end %>
14
+ </div>
15
+
16
+ <%= link_to "New item", new_catalog_item_path %>
@@ -0,0 +1,11 @@
1
+ <% content_for :title, "New item" %>
2
+
3
+ <h1>New item</h1>
4
+
5
+ <%= render "form", catalog_item: @catalog_item %>
6
+
7
+ <br>
8
+
9
+ <div>
10
+ <%= link_to "Back to items", catalog_items_path %>
11
+ </div>
@@ -0,0 +1,10 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <%= render @catalog_item %>
4
+
5
+ <div>
6
+ <%= link_to "Edit this item", edit_catalog_item_path(@catalog_item) %> |
7
+ <%= link_to "Back to items", catalog_items_path %>
8
+
9
+ <%= button_to "Destroy this item", @catalog_item, method: :delete %>
10
+ </div>
@@ -0,0 +1,34 @@
1
+ <%
2
+ tickets = current_user.account.support.tickets.left_joins(
3
+ :user,
4
+ :owner,
5
+ :priority
6
+ ).select(
7
+ :uid,
8
+ :subject,
9
+ Date2.new.db_column(:deadline_at),
10
+ "CONCAT_WS(' ', lesli_users.first_name, lesli_users.last_name) as user_name",
11
+ "CONCAT_WS(' ', owners_lesli_support_tickets.first_name, owners_lesli_support_tickets.last_name) as agent_name",
12
+ "lesli_support_catalog_items.name as priority_name"
13
+ ).order(id: :desc)
14
+ .limit(5)
15
+ %>
16
+
17
+ <%
18
+ columns = [{
19
+ label: "ID",
20
+ field: "uid"
21
+ }, {
22
+ label: "Subject",
23
+ field: "subject"
24
+ }, {
25
+ label: "Priority",
26
+ field: "priority_name"
27
+ }]
28
+ %>
29
+
30
+ <%= render(LesliView::Elements::Table.new(
31
+ :columns => columns,
32
+ :records => tickets,
33
+ #link: -> (ticket) { ticket_path(ticket.id) }
34
+ )) %>
@@ -0,0 +1,17 @@
1
+
2
+ <%
3
+ tickets = current_user.account.support.tickets
4
+ .joins(:priority)
5
+ .group('lesli_support_catalog_items.name')
6
+ .count
7
+ %>
8
+
9
+ <%= render(LesliView::Widgets::Chart.new('Priorities', tickets))%>
10
+
11
+ <%
12
+ tickets = current_user.account.support.tickets
13
+ .joins(:category)
14
+ .group('lesli_support_catalog_items.name')
15
+ .count
16
+ %>
17
+
@@ -0,0 +1,10 @@
1
+ <%
2
+ group = Date2.new.date.db_column(:created_at)
3
+ tickets = current_user.account.support.tickets
4
+ .group(group.sub('as created_at_string',''))
5
+ .order(created_at: :asc)
6
+ .limit(10)
7
+ .count
8
+ %>
9
+
10
+ <%= render(LesliView::Widgets::Chart.new('Tickets by date', tickets, type: :line)) %>
@@ -0,0 +1,5 @@
1
+
2
+ <%= render(LesliView::Widgets::Count.new(
3
+ 'Total tickets',
4
+ current_user.account.support.tickets.where(:closed_at => nil).count)
5
+ ) %>
@@ -0,0 +1,27 @@
1
+
2
+ <%= form_with(model: @ticket, builder: LesliView::Forms::Builder) do |form| %>
3
+ <%= form.fieldset do %>
4
+ <%= form.field_control(:subject) %>
5
+ <div class="columns">
6
+ <div class="column">
7
+ <%= form.field_control_select(:type_id, current_user.account.support.catalogs.items_for("Ticket Types").pluck(:name, :id)) %>
8
+ </div>
9
+ <div class="column">
10
+ <%= form.field_control_select(:category_id, current_user.account.support.catalogs.items_for("Ticket Categories").pluck(:name, :id)) %>
11
+ </div>
12
+ <div class="column">
13
+ <%= form.field_control_select(:priority_id, current_user.account.support.catalogs.items_for("Ticket Priorities").pluck(:name, :id)) %>
14
+ </div>
15
+ </div>
16
+
17
+ <div class="columns">
18
+ <div class="column">
19
+ <%= form.field_control_select(:owner_id, current_user.account.users.pluck(:first_name, :id)) %>
20
+ </div>
21
+ </div>
22
+
23
+ <%= form.field_control_textarea(:description, label:false) %>
24
+ <hr/>
25
+ <%= form.field_control_submit %>
26
+ <% end %>
27
+ <% end %>
@@ -1,5 +1,4 @@
1
- <%
2
- =begin
1
+ <%#
3
2
 
4
3
  Lesli
5
4
 
@@ -29,6 +28,38 @@ Building a better future, one line of code at a time.
29
28
 
30
29
  // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
31
30
  // ·
32
- =end
33
31
  %>
34
- <router-view></router-view>
32
+
33
+ <%
34
+ columns = [{
35
+ label: "ID",
36
+ field: "uid"
37
+ }, {
38
+ label: "Subject",
39
+ field: "subject"
40
+ }, {
41
+ label: "User",
42
+ field: "user_name"
43
+ }, {
44
+ label: "Agent",
45
+ field: "agent_name"
46
+ }, {
47
+ label: "Priority",
48
+ field: "priority_name"
49
+ }, {
50
+ label: "Deadline",
51
+ field: "deadline_at_string"
52
+ }]
53
+ %>
54
+
55
+ <%= render(LesliView::Layout::Container.new("support-tickets")) do %>
56
+
57
+ <%= render(LesliView::Components::Header.new("Tickets", new_path:new_ticket_path)) %>
58
+ <%= render(LesliView::Components::Toolbar.new()) %>
59
+
60
+ <%= render(LesliView::Elements::Table.new(
61
+ :columns => columns,
62
+ :records => @tickets.dig(:records),
63
+ link: -> (ticket) { ticket_path(ticket.id) }
64
+ )) %>
65
+ <% end %>
@@ -1,20 +1,37 @@
1
- <%
2
- =begin
3
- Copyright (c) 2020, all rights reserved.
1
+ <%#
4
2
 
5
- All the information provided by this platform is protected by international laws related to
6
- industrial property, intellectual property, copyright and relative international laws.
7
- All intellectual or industrial property rights of the code, texts, trade mark, design,
8
- pictures and any other information belongs to the owner of this platform.
3
+ Lesli
9
4
 
10
- Without the written permission of the owner, any replication, modification,
11
- transmission, publication is strictly forbidden.
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
12
6
 
13
- For more information read the license file including with this software.
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.
14
11
 
15
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
- // ·
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.
17
24
 
18
- =end
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
+ // ·
19
31
  %>
20
- <router-view></router-view>
32
+
33
+ <%= render(LesliView::Layout::Container.new("support-tickets")) do %>
34
+
35
+ <%= render(LesliView::Components::Header.new("Create ticket")) %>
36
+ <%= render("form") %>
37
+ <% end %>
@@ -1,20 +1,35 @@
1
- <%
2
- =begin
3
- Copyright (c) 2020, all rights reserved.
1
+ <%= render(LesliView::Layout::Container.new("support-tickets-#{@ticket.id}")) do %>
4
2
 
5
- All the information provided by this platform is protected by international laws related to
6
- industrial property, intellectual property, copyright and relative international laws.
7
- All intellectual or industrial property rights of the code, texts, trade mark, design,
8
- pictures and any other information belongs to the owner of this platform.
3
+ <%= render(LesliView::Components::Header.new("#{@ticket.uid} - #{@ticket.subject}")) %>
9
4
 
10
- Without the written permission of the owner, any replication, modification,
11
- transmission, publication is strictly forbidden.
5
+ <%= render LesliView::Components::Tabs.new(active_tab: "ticket-information") do |tabs| %>
12
6
 
13
- For more information read the license file including with this software.
7
+ <% tabs.with_tab(id:"ticket-information", title:"information", icon:"info") do %>
8
+ <%= render("form") %>
9
+ <% end %>
14
10
 
15
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
16
- // ·
11
+ <% tabs.with_tab(id:"ticket-discussions", title:"Discussions", icon:"forum") do %>
12
+ <%= render(LesliView::Items::Discussions.new(@ticket)) %>
13
+ <% end %>
17
14
 
18
- =end
19
- %>
20
- <router-view></router-view>
15
+ <% tabs.with_tab(id:"ticket-tasks", title:"Tasks", icon:"checklist") do %>
16
+ <%= render(LesliView::Items::Tasks.new(@ticket)) %>
17
+ <% end %>
18
+
19
+ <% tabs.with_tab(id:"ticket-activities", title:"Activities", icon:"search_activity") do %>
20
+ <%= render(LesliView::Items::Activities.new(@ticket, icons: {
21
+ type_id: 'star',
22
+ owner_id: 'favorite',
23
+ priority_id: 'sunny',
24
+ category_id: 'search'
25
+ })) %>
26
+ <% end %>
27
+
28
+ <% tabs.with_tab(id:"ticket-attachments", title:"Attachments", icon:"attach_file") do %>
29
+ <%#= render(LesliView::Items::Attachments.new(@ticket,
30
+ path_to_create:ticket_actions_path(@ticket),
31
+ path_to_update:->(action) {ticket_action_path(@ticket, action)}
32
+ )) %>
33
+ <% end %>
34
+ <% end %>
35
+ <% end %>
@@ -1,43 +1,2 @@
1
1
  ---
2
- :en:
3
- lesli_support:
4
- tickets:
5
- column_started_at: Started At
6
- column_completed_at: Completed At
7
- column_tags: Tags
8
- column_reference_url: Reference URL
9
- column_type: Type
10
- column_id: ID
11
- column_subject: Subject
12
- column_workspace: Workspace
13
- column_hours_worked: Hours Worked
14
- column_category: Category
15
- column_priority: Priority
16
- column_creator: Creator
17
- column_status: Status
18
- view_all_tickets: All tickets
19
- view_active_tickets: Active tickets
20
- view_inactive_tickets: Inactive tickets
21
- tab_information: Information
22
- column_description: Description
23
- column_deadline: Deadline
24
- view_own_tickets: Own tickets
25
- lesli:
26
- shared:
27
- view_discussions: Discussions
28
- button_add_new: Add new
29
- button_reload: Reload
30
- view_files: Files
31
- view_quick_actions: Quick actions
32
- button_list: List
33
- button_save: Save
34
- button_delete: Delete
35
- button_edit: Edit
36
- view_status_active: Active
37
- view_status_inactive: Inactive
38
- button_settings: Settings
39
- button_show: Show
40
- toolbar_search: Search...
41
- application:
42
- navigation_logout: Logout
43
- navigation_my_profile: My profile
2
+ :en: {}
@@ -1,43 +1,2 @@
1
1
  ---
2
- :es:
3
- lesli_support:
4
- tickets:
5
- column_started_at: Fecha inicio
6
- column_completed_at: Fecha completado
7
- column_tags: Etiquetas
8
- column_reference_url: URL de referencia
9
- column_type: Tipo
10
- column_id: ID
11
- column_subject: Asunto
12
- column_workspace: Workspace
13
- column_hours_worked: Horas trabajadas
14
- column_category: Categoria
15
- column_priority: Prioridad
16
- column_creator: Creador
17
- column_status: Estado
18
- view_all_tickets: Todos los tickets
19
- view_active_tickets: Tickets activos
20
- view_inactive_tickets: Tickets inactivos
21
- tab_information: Información
22
- column_description: Descripción
23
- column_deadline: Fecha limite
24
- view_own_tickets: Mis tickets
25
- lesli:
26
- shared:
27
- view_discussions: Discusiones
28
- button_add_new: Agregar nuevo
29
- button_reload: Recargar
30
- view_files: Archivos
31
- view_quick_actions: Acciones rapidas
32
- button_list: Lista
33
- button_save: Guardar
34
- button_delete: Eliminar
35
- button_edit: Editar
36
- view_status_active: Activo
37
- view_status_inactive: Inactivo
38
- button_settings: Configuración
39
- button_show: Ver
40
- toolbar_search: Buscar...
41
- application:
42
- navigation_logout: Cerrar sesión
43
- navigation_my_profile: Mi perfil
2
+ :es: {}
@@ -1,43 +1,2 @@
1
1
  ---
2
- :fr:
3
- lesli_support:
4
- tickets:
5
- column_started_at: ":lesli_support.tickets.column_started_at:"
6
- column_completed_at: ":lesli_support.tickets.column_completed_at:"
7
- column_tags: ":lesli_support.tickets.column_tags:"
8
- column_reference_url: ":lesli_support.tickets.column_reference_url:"
9
- column_type: ":lesli_support.tickets.column_type:"
10
- column_id: ":lesli_support.tickets.column_id:"
11
- column_subject: ":lesli_support.tickets.column_subject:"
12
- column_workspace: ":lesli_support.tickets.column_workspace:"
13
- column_hours_worked: ":lesli_support.tickets.column_hours_worked:"
14
- column_category: ":lesli_support.tickets.column_category:"
15
- column_priority: ":lesli_support.tickets.column_priority:"
16
- column_creator: ":lesli_support.tickets.column_creator:"
17
- column_status: ":lesli_support.tickets.column_status:"
18
- view_all_tickets: ":lesli_support.tickets.view_all_tickets:"
19
- view_active_tickets: ":lesli_support.tickets.view_active_tickets:"
20
- view_inactive_tickets: ":lesli_support.tickets.view_inactive_tickets:"
21
- tab_information: ":lesli_support.tickets.tab_information:"
22
- column_description: ":lesli_support.tickets.column_description:"
23
- column_deadline: ":lesli_support.tickets.column_deadline:"
24
- view_own_tickets: ":lesli_support.tickets.view_own_tickets:"
25
- lesli:
26
- shared:
27
- view_discussions: ":lesli.shared.view_discussions:"
28
- button_add_new: ":lesli.shared.button_add_new:"
29
- button_reload: ":lesli.shared.button_reload:"
30
- view_files: ":lesli.shared.view_files:"
31
- view_quick_actions: ":lesli.shared.view_quick_actions:"
32
- button_list: ":lesli.shared.button_list:"
33
- button_save: ":lesli.shared.button_save:"
34
- button_delete: ":lesli.shared.button_delete:"
35
- button_edit: ":lesli.shared.button_edit:"
36
- view_status_active: ":lesli.shared.view_status_active:"
37
- view_status_inactive: ":lesli.shared.view_status_inactive:"
38
- button_settings: ":lesli.shared.button_settings:"
39
- button_show: ":lesli.shared.button_show:"
40
- toolbar_search: ":lesli.shared.toolbar_search:"
41
- application:
42
- navigation_logout: ":lesli.application.navigation_logout:"
43
- navigation_my_profile: ":lesli.application.navigation_my_profile:"
2
+ :fr: {}
@@ -1,43 +1,2 @@
1
1
  ---
2
- :it:
3
- lesli_support:
4
- tickets:
5
- column_started_at: ":lesli_support.tickets.column_started_at:"
6
- column_completed_at: ":lesli_support.tickets.column_completed_at:"
7
- column_tags: ":lesli_support.tickets.column_tags:"
8
- column_reference_url: ":lesli_support.tickets.column_reference_url:"
9
- column_type: ":lesli_support.tickets.column_type:"
10
- column_id: ":lesli_support.tickets.column_id:"
11
- column_subject: ":lesli_support.tickets.column_subject:"
12
- column_workspace: ":lesli_support.tickets.column_workspace:"
13
- column_hours_worked: ":lesli_support.tickets.column_hours_worked:"
14
- column_category: ":lesli_support.tickets.column_category:"
15
- column_priority: ":lesli_support.tickets.column_priority:"
16
- column_creator: ":lesli_support.tickets.column_creator:"
17
- column_status: ":lesli_support.tickets.column_status:"
18
- view_all_tickets: ":lesli_support.tickets.view_all_tickets:"
19
- view_active_tickets: ":lesli_support.tickets.view_active_tickets:"
20
- view_inactive_tickets: ":lesli_support.tickets.view_inactive_tickets:"
21
- tab_information: ":lesli_support.tickets.tab_information:"
22
- column_description: ":lesli_support.tickets.column_description:"
23
- column_deadline: ":lesli_support.tickets.column_deadline:"
24
- view_own_tickets: ":lesli_support.tickets.view_own_tickets:"
25
- lesli:
26
- shared:
27
- view_discussions: ":lesli.shared.view_discussions:"
28
- button_add_new: ":lesli.shared.button_add_new:"
29
- button_reload: ":lesli.shared.button_reload:"
30
- view_files: ":lesli.shared.view_files:"
31
- view_quick_actions: ":lesli.shared.view_quick_actions:"
32
- button_list: ":lesli.shared.button_list:"
33
- button_save: ":lesli.shared.button_save:"
34
- button_delete: ":lesli.shared.button_delete:"
35
- button_edit: ":lesli.shared.button_edit:"
36
- view_status_active: ":lesli.shared.view_status_active:"
37
- view_status_inactive: ":lesli.shared.view_status_inactive:"
38
- button_settings: ":lesli.shared.button_settings:"
39
- button_show: ":lesli.shared.button_show:"
40
- toolbar_search: ":lesli.shared.toolbar_search:"
41
- application:
42
- navigation_logout: ":lesli.application.navigation_logout:"
43
- navigation_my_profile: ":lesli.application.navigation_my_profile:"
2
+ :it: {}