viewticket.tpl 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. {*
  2. **********************************************************
  3. * Developed by: Team Theme Metro
  4. * Website: http://www.thememetro.com
  5. **********************************************************
  6. *}
  7. {if $invalidTicketId}
  8. {include file="$template/includes/alert.tpl" type="danger" title="{lang key='thereisaproblem'}" msg="{lang key='supportticketinvalid'}" textcenter=true}
  9. {else}
  10. {if $closedticket}
  11. {include file="$template/includes/alert.tpl" type="warning" msg="{lang key='supportticketclosedmsg'}" textcenter=true}
  12. {/if}
  13. {if $errormessage}
  14. {include file="$template/includes/alert.tpl" type="error" errorshtml=$errormessage}
  15. {/if}
  16. {/if}
  17. {if !$invalidTicketId}
  18. <div class="border-bottom pl-3 pr-3 pb-3 mb-3">
  19. {lang key='supportticketssubject'}:
  20. <strong>{$subject}</strong>
  21. </div>
  22. <div class="mb-4 clearfix">
  23. <div class="ticket-actions btn-group float-sm-right">
  24. <button id="ticketReply" type="button" class="btn btn-primary btn-sm" onclick="smoothScroll('#ticketReplyContainer')">
  25. {lang key='supportticketsreply'}
  26. </button>
  27. {if $showCloseButton}
  28. {if $closedticket}
  29. <button class="btn btn-danger btn-sm" disabled="disabled">
  30. {lang key='supportticketsstatusclosed'}
  31. </button>
  32. {else}
  33. <button class="btn btn-danger btn-sm" onclick="window.location='?tid={$tid}&amp;c={$c}&amp;closeticket=true'">
  34. {lang key='supportticketsclose'}
  35. </button>
  36. {/if}
  37. {/if}
  38. </div>
  39. </div>
  40. <div class="cards view-ticket">
  41. {foreach $descreplies as $reply}
  42. <div class="card">
  43. <div class="card-body">
  44. <div class="ticket-reply markdown-content{if $reply.admin} staff{/if}">
  45. <div class="posted-by">
  46. <div class="user">
  47. <div class="user-avatar avatar-mid mr-2">
  48. {if $themesettings.clientarea.gravatar}
  49. {if !$reply.admin}
  50. <img src="https://www.gravatar.com/avatar/{$reply.requestor.email|md5}" alt="{$reply.requestor.name}" />
  51. {else}
  52. {if $themesettings.clientarea.staffavatar}
  53. <img src="{$themesettings.clientarea.staffavatar}" alt="{$reply.requestor.name}" />
  54. {else}
  55. <i class="fad fa-user-tie fa-fw text-muted"></i>
  56. {/if}
  57. {/if}
  58. {else}
  59. <i class="fas fa-user{if $reply.admin}-tie{/if} text-muted fa-fw"></i>
  60. {/if}
  61. </div>
  62. <div class="name">
  63. <span class="posted-by-name fw-500">
  64. {$reply.requestor.name}
  65. </span>
  66. <span class="type">
  67. <span class="label requestor-badge requestor-type-{$reply.requestor.type_normalised}">{lang key='support.requestor.'|cat:$reply.requestor.type_normalised}</span>
  68. </span>
  69. </div>
  70. </div>
  71. <span class="posted-on">
  72. {$reply.date}
  73. </span>
  74. </div>
  75. <div class="message p-3">
  76. {$reply.message}
  77. {if $reply.ipaddress}
  78. <hr>
  79. {lang key='support.ipAddress'}: {$reply.ipaddress}
  80. {/if}
  81. {if $reply.id && $reply.admin && $ratingenabled}
  82. <div class="clearfix">
  83. {if $reply.rating}
  84. <div class="rating-done">
  85. {for $rating=1 to 5}
  86. <span class="star{if (5 - $reply.rating) < $rating} active{/if}"></span>
  87. {/for}
  88. <div class="rated">{lang key='ticketreatinggiven'}</div>
  89. </div>
  90. {else}
  91. <div class="rating" ticketid="{$tid}" ticketkey="{$c}" ticketreplyid="{$reply.id}">
  92. <span class="star" rate="5"></span>
  93. <span class="star" rate="4"></span>
  94. <span class="star" rate="3"></span>
  95. <span class="star" rate="2"></span>
  96. <span class="star" rate="1"></span>
  97. </div>
  98. {/if}
  99. </div>
  100. {/if}
  101. </div>
  102. {if $reply.attachments}
  103. <div class="attachments p-3">
  104. <strong>
  105. <i class="far fa-paperclip fa-fw"></i>
  106. {lang key='supportticketsticketattachments'} ({$reply.attachments|count})
  107. </strong>
  108. {if $reply.attachments_removed} - {lang key='support.attachmentsRemoved'}{/if}
  109. <ul class="attachment-list">
  110. {foreach $reply.attachments as $num => $attachment}
  111. <li>
  112. {if $reply.attachments_removed}
  113. <span>
  114. <figure>
  115. <i class="far fa-file-minus"></i>
  116. </figure>
  117. <div class="caption">
  118. {$attachment}
  119. </div>
  120. </span>
  121. {else}
  122. <a href="dl.php?type={if $reply.id}ar&id={$reply.id}{else}a&id={$id}{/if}&i={$num}">
  123. <span>
  124. <figure>
  125. <i class="far fa-file"></i>
  126. </figure>
  127. <div class="caption">
  128. {$attachment}
  129. </div>
  130. </span>
  131. </a>
  132. {/if}
  133. </li>
  134. {/foreach}
  135. </ul>
  136. </div>
  137. {/if}
  138. </div>
  139. </div>
  140. </div>
  141. {/foreach}
  142. </div>
  143. <div class="card d-print-none" id="ticketReplyContainer">
  144. <div class="card-body">
  145. <h3 class="card-title">{lang key='supportticketsreply'}</h3>
  146. <form method="post" action="{$smarty.server.PHP_SELF}?tid={$tid}&amp;c={$c}&amp;postreply=true" enctype="multipart/form-data" role="form" id="frmReply">
  147. <div class="row">
  148. <div class="form-group col-md-4">
  149. <label for="inputName">{lang key='supportticketsclientname'}</label>
  150. <input class="form-control" type="text" name="replyname" id="inputName" value="{$replyname}"{if $loggedin} disabled="disabled"{/if}>
  151. </div>
  152. <div class="form-group col-md-5">
  153. <label for="inputEmail">{lang key='supportticketsclientemail'}</label>
  154. <input class="form-control" type="text" name="replyemail" id="inputEmail" value="{$replyemail}"{if $loggedin} disabled="disabled"{/if}>
  155. </div>
  156. </div>
  157. <div class="form-group">
  158. <label for="inputMessage">{lang key='contactmessage'}</label>
  159. <textarea name="replymessage" id="inputMessage" rows="12" class="form-control markdown-editor" data-auto-save-name="ctr{$tid}">{$replymessage}</textarea>
  160. </div>
  161. <div class="form-group">
  162. <label for="inputAttachments">{lang key='supportticketsticketattachments'}</label>
  163. <div class="input-group mb-1 attachment-group">
  164. <div class="custom-file">
  165. <label class="custom-file-label text-truncate" for="inputAttachment1" data-default="Choose file">
  166. {lang key='chooseFile'}
  167. </label>
  168. <input type="file" class="custom-file-input" name="attachments[]" id="inputAttachment1">
  169. </div>
  170. <div class="input-group-append">
  171. <button class="btn btn-default" type="button" id="btnTicketAttachmentsAdd">
  172. <i class="fas fa-plus"></i>
  173. {lang key='addmore'}
  174. </button>
  175. </div>
  176. </div>
  177. <div class="file-upload w-hidden">
  178. <div class="input-group mb-1 attachment-group">
  179. <div class="custom-file">
  180. <label class="custom-file-label text-truncate">
  181. {lang key='chooseFile'}
  182. </label>
  183. <input type="file" class="custom-file-input" name="attachments[]">
  184. </div>
  185. </div>
  186. </div>
  187. <div id="fileUploadsContainer"></div>
  188. <div class="text-muted">
  189. <small>{lang key='supportticketsallowedextensions'}: {$allowedfiletypes}</small>
  190. </div>
  191. </div>
  192. <div class="form-actions">
  193. <input class="btn btn-primary" type="submit" name="save" value="{lang key='supportticketsticketsubmit'}" />
  194. <input class="btn btn-default" type="reset" value="{lang key='cancel'}" onclick="jQuery('#ticketReply').click()" />
  195. </div>
  196. </form>
  197. </div>
  198. </div>
  199. {/if}