Di kedua versi osTicket, yaitu 1.6 RC4 dan 1.6 RC5 belum menyertakan nomor pesan, nama pengirim, dan durasi waktu dari setiap pesan di sebuah tiket. Itulah mengapa saya membuat modifikasi berikut. Hal ini penting bagi Anda sebagai staf atau admin dari sistem tiket yang Anda gunakan, jika Anda ingin mengetahui dengan cepat berapa lama waktu yang dibutuhkan untuk merespon antara satu pesan dengan pesan berikutnya di dalam sebuah nomor tiket. Apalagi, Anda juga menjadi dapat mengetahui berapa lama total waktu yang terdapat di dalam sebuah tiket yang statusnya masih terbuka ketika Anda menampilkan tiket tersebut.
Ikutilah petunjuk berikut ini.
- Buat sebuah file, copy-paste kode berikut ini ke file tadi, lalu letakkan file tersebut di dalam sub direktori \include\ dari Sistem osTicket Anda, dan simpan dengan nama class.duration.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
<?php /**************************************************************************/ /* [MOD] Add #Post, SenderName, Time Duration in Each Message, */ /* by Masino Sinaga, May 7, 2009 */ /* Website: - http://www.masinosinaga.com */ /* - http://osticket.masinosinaga.com */ /**************************************************************************/ class Duration { var $begindate; var $enddate; function Duration($parambegindate, $paramenddate) { $this->begindate = strtotime($parambegindate); $this->enddate = strtotime($paramenddate); $diff = intval($this->enddate) - intval($this->begindate); $diffday = intval(floor($diff/86400)); $modday = ($diff%86400); $diffhour = intval(floor($modday/3600)); $diffminute = intval(floor(($modday%3600)/60)); $diffsecond = ($modday%60); return round($diffday)." Day(s), ".round($diffhour)." Hour(s), ".round($diffminute,0)." Minute(s), ".round($diffsecond,0)." Second(s)."; } } ?>
- Buka file \scp\tickets.php, lalu cari kode ini:
21
require_once(INCLUDE_DIR.'class.banlist.php');
setelah kode di atas, tambahkan kode berikut di bawah ini:
22 23 24
// MOD Show Post#, SenderName, and Duration on Each Message by Masino Sinaga, July 20, 2009 require_once(INCLUDE_DIR.'class.duration.php'); // MOD Show Post#, SenderName, and Duration on Each Message by Masino Sinaga, July 20, 2009
- Buka file \include\staff\viewticket.inc.php, lalu cari kode ini:
274 275 276
$msgres =db_query($sql); while ($msg_row = db_fetch_array($msgres)) { ?>
timpa dengan:
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
$msgres =db_query($sql); $i=1; while ($msg_row = db_fetch_array($msgres)) { if ($i!=1) { $dateend = $msg_row['created']; } else if ($i==1) { $datebegin = $msg_row['created']; $firstdate = $datebegin; $dateend = $msg_row['created']; } $lastdate = $dateend; $datediff = new Duration($datebegin,$dateend); $resultdiff=$datediff->Duration($datebegin,$dateend); $datebegin = $dateend; ?>
cari kode ini:
288 289 290 291 292 293 294 295 296 297 298 299 300
<table align="center" class="message" cellspacing="0" cellpadding="1" width="100%" border=0> <tr> <th><?=Format::db_daydatetime($msg_row['created'])?></th> </tr> <?if($msg_row['attachments']>0){ ?> <tr class="header"> <td><?=$ticket->getAttachmentStr($msg_row['msg_id'],'M')?></td> </tr> <?}?> <tr> <td><?=Format::display($msg_row['message'])?> </td> </tr> </table>
timpa dengan:
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305
<table align="center" class="message" cellspacing="0" cellpadding="1" width="100%" border=0> <tr> <th><?php echo "(#".$i.") "; echo Format::db_daydatetime($msg_row['created']); echo " - ".Format::htmlchars($ticket->getName()); ?></th> </tr> <?php if($msg_row['attachments']>0){ ?> <tr class="header"> <td><?php echo $ticket->getAttachmentStr($msg_row['msg_id'],'M')?></td> </tr> <?php }?> <tr> <td> <?php echo Format::display($msg_row['message']); ?></td> </tr> <tr class="header"> <td align="right"><?php echo "Duration: ".$resultdiff." "; ?></td> </tr> </table>
cari kode ini:
305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325
$resp =db_query($sql); while ($resp_row = db_fetch_array($resp)) { $respID=$resp_row['response_id']; ?> <table align="center" class="response" cellspacing="0" cellpadding="1" width="100%" border=0> <tr> <th><?=Format::db_daydatetime($resp_row['created'])?> - <?=$resp_row['staff_name']?></th> </tr> <?if($resp_row['attachments']>0){ ?> <tr class="header"> <td><?=$ticket->getAttachmentStr($respID,'R')?></td> </tr> <?}?> <tr> <td> <?=Format::display($resp_row['response'])?></td> </tr> </table> <?} $msgid =$msg_row['msg_id']; }?></div> </div>timpa dengan:
305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363
$resp =db_query($sql); $j=1; while ($resp_row = db_fetch_array($resp)) { $i++; $respID=$resp_row['response_id']; $dateend = $resp_row['created']; $lastdate = $dateend; $datediff = new Duration($datebegin,$dateend); $resultdiff=$datediff->Duration($datebegin,$dateend); ?> <table align="center" class="response" cellspacing="0" cellpadding="1" width="100%" border=0> <tr> <th><?php echo "(#".$i.") "; echo Format::db_daydatetime($resp_row['created'])?> - <?php echo $resp_row['staff_name']?></th> </tr> <?php if($resp_row['attachments']>0){ ?> <tr class="header"> <td><?php echo $ticket->getAttachmentStr($respID,'R')?></td> </tr> <?php }?> <tr> <td><?php echo Format::display($resp_row['response']); ?></td> </tr> <tr class="header"> <td align="right"><?php echo "Duration: ".$resultdiff." "; ?></td> </tr> </table> <?php $datebegin = $dateend; $j++; } $msgid =$msg_row['msg_id']; $i++; } $datediff = new Duration($firstdate,$lastdate); $resultdiff=$datediff->Duration($firstdate,$lastdate); ?></div> </div> <?php $totalpost = $i-1; if ($ticket->getStatus()=='open') { echo " <div align='right'> <b>Total: ".$totalpost." post(s), Duration: ".$resultdiff."</b></div> "; $lastdate = date("Y-m-d H:i:s"); //userdate(); //date("Y-m-d H:i:s"); $datediff = new Duration($firstdate,$lastdate); $resultdiff=$datediff->Duration($firstdate,$lastdate); echo " <div align='right'> <b>Ticket still opened, Total Duration: ".$resultdiff."</b></div> "; } else { echo " <div align='right'> <b>Total: ".$totalpost." post(s), Duration: ".$resultdiff."</b></div> "; } ?>
Sekarang Anda dapat melihat nomor pesan, nama pengirim, dan durasi waktu di setiap pesan di bagian sejarah dari sebuah nomor tiket. Anda juga dapat melihat di bagian bawah dari sejarah tiket, total durasi waktu dari tiket tersebut. Paling tidak, hal ini dapat membantu Anda untuk mengetahui total waktu khususnya untuk tiket yang masih terbuka, sehingga Anda dapat mengambil langkah lebih lanjut terhadap tiket tadi.


info yang bermanfaat walau saya masih awam, saya liat osticket tidak ada captcha ya? web anda : http://osticket.masinosinaga.com kok bisa ada capcthanya? apakah ada tutorial cara menambahkan captcha di osticket? dan pilihan bhs indonesia, jika atidak keberatan mohon infoka ke email sy, thanks banget bantuannya…
semoga web ini semakin berguna… maju terus opensource indonesia…
Halo mas Bayu,
Untuk menambahkan captcha di osTicket System, sudah saya tambahkan artikelnya beberapa menit yang lalu. Silahkan langsung ke sini: http://www.openscriptsolution.com/2009/09/11/how-to-add-captcha-security-code-in-osticket-system-1-6-rc5/
Semoga dapat membantu.
thanks mas, sangat membantu sy yg sedang belajar…
Sama-sama mas. Sering-sering saja mampir ke sini. Setiap hari pasti ada saja ilmu baru yang saya share, termasuk mengenai osTicket.
can this function use with http://www.openscriptsolution.com/2009/11/08/add-auto-staff-time-sheet-feature-into-osticket-v1-6-rc5/ ? I need these 2 function to be enabled.
@s16pt
Yes, it can. I had tried implemented both MODs and everything seemed okay.