PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.9.1
ووسلام – همگام سازی ووکامرس و باسلام v1.9.1
1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 All 53 releases
sync-basalam / templates / admin / Ticket / List.php

List.php in ووسلام – همگام سازی ووکامرس و باسلام 1.9.1, at templates/admin/Ticket/List.php

159 lines 5.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use SyncBasalam\Services\TicketServiceManager;
4 use SyncBasalam\Utilities\DateConverter;
5 use SyncBasalam\Admin\Components\CommonComponents;
6
7 defined('ABSPATH') || exit;
8
9 $page = isset($_GET['paged']) ? max(1, intval($_GET['paged'])) : 1;
10
11 $ticketManager = new TicketServiceManager();
12 $fetchTickets = $ticketManager->fetchAllTickets($page);
13 $statusMap = TicketServiceManager::ticketStatuses();
14
15 if (TicketServiceManager::isUnauthorized($fetchTickets)) {
16 CommonComponents::renderUnauthorizedError();
17 return;
18 }
19
20 $tickets = isset($fetchTickets['body']) ? json_decode($fetchTickets['body'], true) : [];
21
22 $total_pages = intval($tickets['total_page'] ?? 1);
23 $current_page = intval($tickets['page'] ?? $page);
24
25
26 $base_url = add_query_arg(['page' => 'sync_basalam_tickets'],admin_url('admin.php'));
27
28 ?>
29
30 <div class="basalam-container">
31
32 <div class="basalam-header basalam-margin-top-17">
33
34 <div class="basalam-header-data ticket-header-data">
35
36 <div class="ticket-header-information">
37
38 <img src="<?php echo esc_url(syncBasalamPlugin()->assetsUrl() . '/images/basalam.svg'); ?>" alt="Basalam">
39
40 <div>
41 <h1 class="basalam-h basalam-text-justify ticket-header-data-heading">پشتیبانی ووسلا�
42 </h1>
43
44 <p class="basalam-p basalam-margin-top-17 basalam-text-right">در این صفحه �
45 یتوانید با پشتیبانی ووسلا�
46 ارتباط بگیرید</p>
47 </div>
48 </div>
49
50 <a href="<?php echo esc_url(add_query_arg(['page' => 'sync_basalam_new_ticket'],admin_url('admin.php'))); ?>"class="basalam-primary-button basalam-p basalam-btn-no-margin-bottom">ایجاد تیکت جدید
51 </a>
52 </div>
53 </div>
54 </div>
55
56
57 <div class="basalam-container ticket-container">
58 <div class="ticket-list">
59 <?php if (!empty($tickets['data'])): ?>
60 <?php foreach ($tickets['data'] as $ticket): ?>
61 <div class="ticket-card">
62 <div class="ticket-card__field">
63 <p class="basalam-p ticket-card__field-label">عنوان:</p>
64 <p class="basalam-p ticket-card__field-value"> <?php echo esc_html($ticket['title'] ?? ''); ?> </p>
65 </div>
66
67 <div class="ticket-card__field">
68 <p class="basalam-p ticket-card__field-label">�
69 وضوع:</p>
70 <p class="basalam-p ticket-card__field-value"><?php echo esc_html($ticket['subject'] ?? ''); ?></p>
71 </div>
72
73 <div class="ticket-card__field">
74 <p class="basalam-p ticket-card__field-label">وضعیت:</p>
75 <p class="basalam-p ticket-card__field-value ticket-card__field-status"> <?php echo esc_html($statusMap[$ticket['status'] ?? ''] ?? ($ticket['status'] ?? ''));?> </p>
76 </div>
77
78 <div class="ticket-card__field">
79 <p class="basalam-p ticket-card__field-label">آخرین آپدیت:</p>
80 <p class="basalam-p ticket-card__field-value"><?php echo esc_html(DateConverter::utcToJalaliDateTime($ticket['updated_at'] ?? ''));?></p>
81 </div>
82
83 <div class="ticket-card__field ticket-card__actions">
84 <a
85 class="basalam-primary-button basalam-p basalam-btn-no-margin-bottom"
86 href="<?php echo esc_url(add_query_arg(
87 [
88 'page' => 'sync_basalam_ticket',
89 'ticket_id' => intval($ticket['id'] ?? 0),
90 ],
91 admin_url('admin.php')
92 )); ?>"
93 >
94
95 شاهده تیکت
96 </a>
97 </div>
98 </div>
99
100 <?php endforeach; ?>
101 <?php else: ?>
102 <p class="basalam-p basalam-margin-top-17" style="text-align:center;">تیکتی یافت نشد.</p>
103 <?php endif; ?>
104 </div>
105 </div>
106
107
108 <?php if ($total_pages > 1): ?>
109
110 <div class="pagination">
111
112 <?php
113
114 $range = 2;
115
116 if ($current_page > 1) {
117 echo '<a class="pagination-link basalam-p" href="' . esc_url(add_query_arg('paged', $current_page - 1, $base_url)) . '">قبلی</a>';
118 }
119
120
121 if ($current_page > ($range + 1)) {
122 echo '<a class="pagination-link basalam-p" href="' . esc_url(add_query_arg('paged', 1, $base_url)) .'">1</a>';
123 }
124
125
126 if ($current_page > ($range + 2)) {
127 echo '<span class="pagination-dots">...</span>';
128 }
129
130
131 $start = max(1, $current_page - $range);
132 $end = min($total_pages, $current_page + $range);
133
134 for ($i = $start; $i <= $end; $i++) {
135 $class = 'pagination-link basalam-p';
136 if ($i === $current_page) $class .= ' pagination-link--active';
137
138 echo '<a class="' . esc_attr($class) . '" href="' . esc_url(add_query_arg('paged', $i, $base_url)) . '">' . $i . '</a>';
139 }
140
141
142 if ($current_page < ($total_pages - $range - 1)) {
143 echo '<span class="pagination-dots">...</span>';
144 }
145
146
147 if ($current_page < ($total_pages - $range)) {
148 echo '<a class="pagination-link basalam-p" href="' . esc_url(add_query_arg('paged', $total_pages, $base_url)) . '">' . $total_pages . '</a>';
149 }
150
151
152 if ($current_page < $total_pages) {
153 echo '<a class="pagination-link basalam-p" href="' . esc_url(add_query_arg('paged', $current_page + 1, $base_url)) . '">بعدی</a>';
154 }
155 ?>
156
157 </div>
158
159 <?php endif; ?>