2014-03-23 16:03:30 -04:00
< ? php
2016-11-16 21:16:25 -05:00
/**
*
* This file is part of HESK - PHP Help Desk Software .
*
* ( c ) Copyright Klemen Stirn . All rights reserved .
2016-11-18 12:57:17 -05:00
* https :// www . hesk . com
2016-11-16 21:16:25 -05:00
*
* For the full copyright and license agreement information visit
2016-11-18 12:57:17 -05:00
* https :// www . hesk . com / eula . php
2016-11-16 21:16:25 -05:00
*
*/
2015-09-12 00:46:46 -04:00
define ( 'IN_SCRIPT' , 1 );
define ( 'HESK_PATH' , '../' );
define ( 'WYSIWYG' , 1 );
2016-11-16 13:21:26 -05:00
define ( 'VALIDATOR' , 1 );
2016-11-27 01:35:08 -05:00
define ( 'MFH_PAGE_LAYOUT' , 'TOP_ONLY' );
2014-03-23 16:03:30 -04:00
/* Get all the required files and functions */
require ( HESK_PATH . 'hesk_settings.inc.php' );
require ( HESK_PATH . 'inc/common.inc.php' );
require ( HESK_PATH . 'inc/admin_functions.inc.php' );
2016-09-25 21:34:19 -04:00
require ( HESK_PATH . 'inc/mail_functions.inc.php' );
2016-11-10 21:56:39 -05:00
require ( HESK_PATH . 'inc/custom_fields.inc.php' );
2014-03-23 16:03:30 -04:00
hesk_load_database_functions ();
hesk_session_start ();
hesk_dbConnect ();
hesk_isLoggedIn ();
/* Check permissions for this feature */
2015-06-06 22:13:44 -04:00
if ( ! isset ( $_REQUEST [ 'isManager' ]) || ! $_REQUEST [ 'isManager' ]) {
hesk_checkPermission ( 'can_view_tickets' );
hesk_checkPermission ( 'can_edit_tickets' );
}
2015-09-01 12:22:03 -04:00
$modsForHesk_settings = mfh_getSettings ();
2014-03-23 16:03:30 -04:00
/* Ticket ID */
2015-09-12 00:46:46 -04:00
$trackingID = hesk_cleanID () or die ( $hesklang [ 'int_error' ] . ': ' . $hesklang [ 'no_trackID' ]);
2014-03-23 16:03:30 -04:00
$is_reply = 0 ;
$tmpvar = array ();
2016-10-11 22:01:20 -04:00
if ( ! isset ( $_SESSION [ 'iserror' ])) {
$_SESSION [ 'iserror' ] = array ();
}
2014-03-23 16:03:30 -04:00
/* Get ticket info */
2015-09-12 00:46:46 -04:00
$result = hesk_dbQuery ( " SELECT * FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " tickets` WHERE `trackid`=' " . hesk_dbEscape ( $trackingID ) . " ' LIMIT 1 " );
if ( hesk_dbNumRows ( $result ) != 1 ) {
hesk_error ( $hesklang [ 'ticket_not_found' ]);
2014-03-23 16:03:30 -04:00
}
$ticket = hesk_dbFetchAssoc ( $result );
// Demo mode
2015-09-12 00:46:46 -04:00
if ( defined ( 'HESK_DEMO' )) {
$ticket [ 'email' ] = 'hidden@demo.com' ;
2014-03-23 16:03:30 -04:00
}
/* Is this user allowed to view tickets inside this category? */
2015-06-06 22:13:44 -04:00
if ( ! isset ( $_REQUEST [ 'isManager' ]) || ! $_REQUEST [ 'isManager' ]) {
hesk_okCategory ( $ticket [ 'category' ]);
}
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
if ( hesk_isREQUEST ( 'reply' )) {
$tmpvar [ 'id' ] = intval ( hesk_REQUEST ( 'reply' )) or die ( $hesklang [ 'id_not_valid' ]);
2014-03-23 16:03:30 -04:00
2015-09-12 00:46:46 -04:00
$result = hesk_dbQuery ( " SELECT * FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " replies` WHERE `id`=' { $tmpvar [ 'id' ] } ' AND `replyto`=' " . intval ( $ticket [ 'id' ]) . " ' LIMIT 1 " );
if ( hesk_dbNumRows ( $result ) != 1 ) {
hesk_error ( $hesklang [ 'id_not_valid' ]);
2014-03-23 16:03:30 -04:00
}
$reply = hesk_dbFetchAssoc ( $result );
$ticket [ 'message' ] = $reply [ 'message' ];
2016-09-02 08:02:36 -04:00
$ticket [ 'html' ] = $reply [ 'html' ];
2014-03-23 16:03:30 -04:00
$is_reply = 1 ;
}
2015-09-12 00:46:46 -04:00
if ( isset ( $_POST [ 'save' ])) {
/* A security check */
hesk_token_check ( 'POST' );
$hesk_error_buffer = array ();
if ( $is_reply ) {
$tmpvar [ 'message' ] = hesk_input ( hesk_POST ( 'message' )) or $hesk_error_buffer [] = $hesklang [ 'enter_message' ];
if ( count ( $hesk_error_buffer )) {
$myerror = '<ul>' ;
foreach ( $hesk_error_buffer as $error ) {
$myerror .= " <li> $error </li> \n " ;
}
$myerror .= '</ul>' ;
hesk_error ( $myerror );
}
if ( ! $modsForHesk_settings [ 'rich_text_for_tickets' ]) {
$tmpvar [ 'message' ] = hesk_makeURL ( $tmpvar [ 'message' ]);
$tmpvar [ 'message' ] = nl2br ( $tmpvar [ 'message' ]);
}
2015-11-15 15:48:55 -05:00
$tmpvar [ 'html' ] = hesk_POST ( 'html' );
2016-10-11 22:01:20 -04:00
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " replies` SET `html`=' " . $tmpvar [ 'html' ] . " ', `message`=' " . hesk_dbEscape ( $tmpvar [ 'message' ]) . " ' WHERE `id`=' " . intval ( $tmpvar [ 'id' ]) . " ' AND `replyto`=' " . intval ( $ticket [ 'id' ]) . " ' " );
2015-09-12 00:46:46 -04:00
} else {
2015-01-23 00:14:23 -05:00
$tmpvar [ 'language' ] = hesk_POST ( 'customerLanguage' );
2015-09-12 00:46:46 -04:00
$tmpvar [ 'name' ] = hesk_input ( hesk_POST ( 'name' )) or $hesk_error_buffer [] = $hesklang [ 'enter_your_name' ];
2016-10-11 22:01:20 -04:00
if ( $hesk_settings [ 'require_email' ]) {
$tmpvar [ 'email' ] = hesk_validateEmail ( hesk_POST ( 'email' ), 'ERR' , 0 ) or $hesk_error_buffer [ 'email' ] = $hesklang [ 'enter_valid_email' ];
} else {
$tmpvar [ 'email' ] = hesk_validateEmail ( hesk_POST ( 'email' ), 'ERR' , 0 );
// Not required, but must be valid if it is entered
if ( $tmpvar [ 'email' ] == '' ) {
if ( strlen ( hesk_POST ( 'email' ))) {
$hesk_error_buffer [ 'email' ] = $hesklang [ 'not_valid_email' ];
}
}
}
2015-09-12 00:46:46 -04:00
$tmpvar [ 'subject' ] = hesk_input ( hesk_POST ( 'subject' )) or $hesk_error_buffer [] = $hesklang [ 'enter_ticket_subject' ];
2016-10-11 22:01:20 -04:00
$tmpvar [ 'message' ] = hesk_input ( hesk_POST ( 'message' ) );
if ( $hesk_settings [ 'require_message' ] == 1 && $tmpvar [ 'message' ] == '' ) {
$hesk_error_buffer [] = $hesklang [ 'enter_message' ];
}
2015-11-15 15:48:55 -05:00
$tmpvar [ 'html' ] = hesk_POST ( 'html' );
2015-09-12 00:46:46 -04:00
// Demo mode
if ( defined ( 'HESK_DEMO' )) {
$tmpvar [ 'email' ] = 'hidden@demo.com' ;
}
2016-10-11 22:01:20 -04:00
// Custom fields
foreach ( $hesk_settings [ 'custom_fields' ] as $k => $v ) {
if ( $v [ 'use' ] && hesk_is_custom_field_in_category ( $k , $ticket [ 'category' ])) {
2016-11-16 13:21:26 -05:00
if ( $v [ 'req' ] == 2 ) {
$v [ 'req' ] = '<span class="important">*</span>' ;
$required_attribute = 'data-error="' . $hesklang [ 'this_field_is_required' ] . '" required' ;
} else {
$v [ 'req' ] = '' ;
$required_attribute = '' ;
}
2016-10-11 22:01:20 -04:00
if ( $v [ 'type' ] == 'checkbox' ) {
$tmpvar [ $k ] = '' ;
if ( isset ( $_POST [ $k ]) && is_array ( $_POST [ $k ])) {
foreach ( $_POST [ $k ] as $myCB ) {
2017-04-02 20:49:20 -04:00
$tmpvar [ $k ] .= ( is_array ( $myCB ) ? '' : hesk_input ( $myCB ) ) . '<br />' ;
2016-10-11 22:01:20 -04:00
}
$tmpvar [ $k ] = substr ( $tmpvar [ $k ], 0 , - 6 );
} else {
if ( $v [ 'req' ] == 2 ) {
$hesk_error_buffer [ $k ] = $hesklang [ 'fill_all' ] . ': ' . $v [ 'name' ];
}
$_POST [ $k ] = '' ;
}
} elseif ( $v [ 'type' ] == 'date' ) {
$tmpvar [ $k ] = hesk_POST ( $k );
$_SESSION [ " as_ $k " ] = '' ;
2016-11-07 17:41:35 -05:00
if ( preg_match ( " /^[0-9] { 4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) $ / " , $tmpvar [ $k ])) {
2016-10-11 22:01:20 -04:00
$date = strtotime ( $tmpvar [ $k ] . ' t00:00:00' );
$dmin = strlen ( $v [ 'value' ][ 'dmin' ]) ? strtotime ( $v [ 'value' ][ 'dmin' ] . ' t00:00:00' ) : false ;
$dmax = strlen ( $v [ 'value' ][ 'dmax' ]) ? strtotime ( $v [ 'value' ][ 'dmax' ] . ' t00:00:00' ) : false ;
$_SESSION [ " as_ $k " ] = $tmpvar [ $k ];
if ( $dmin && $dmin > $date ) {
$hesk_error_buffer [ $k ] = sprintf ( $hesklang [ 'd_emin' ], $v [ 'name' ], hesk_custom_date_display_format ( $dmin , $v [ 'value' ][ 'date_format' ]));
} elseif ( $dmax && $dmax < $date ) {
$hesk_error_buffer [ $k ] = sprintf ( $hesklang [ 'd_emax' ], $v [ 'name' ], hesk_custom_date_display_format ( $dmax , $v [ 'value' ][ 'date_format' ]));
} else {
$tmpvar [ $k ] = $date ;
}
} else {
if ( $v [ 'req' ] == 2 ) {
$hesk_error_buffer [ $k ] = $hesklang [ 'fill_all' ] . ': ' . $v [ 'name' ];
}
}
} elseif ( $v [ 'type' ] == 'email' ) {
$tmp = $hesk_settings [ 'multi_eml' ];
$hesk_settings [ 'multi_eml' ] = $v [ 'value' ][ 'multiple' ];
$tmpvar [ $k ] = hesk_validateEmail ( hesk_POST ( $k ), 'ERR' , 0 );
$hesk_settings [ 'multi_eml' ] = $tmp ;
if ( $tmpvar [ $k ] != '' ) {
$_SESSION [ " as_ $k " ] = hesk_input ( $tmpvar [ $k ]);
} else {
$_SESSION [ " as_ $k " ] = '' ;
if ( $v [ 'req' ] == 2 ) {
$hesk_error_buffer [ $k ] = $v [ 'value' ][ 'multiple' ] ? sprintf ( $hesklang [ 'cf_noem' ], $v [ 'name' ]) : sprintf ( $hesklang [ 'cf_noe' ], $v [ 'name' ]);
}
}
} elseif ( $v [ 'req' ] == 2 ) {
$tmpvar [ $k ] = hesk_makeURL ( nl2br ( hesk_input ( hesk_POST ( $k ) )));
if ( $tmpvar [ $k ] == '' ) {
$hesk_error_buffer [ $k ] = $hesklang [ 'fill_all' ] . ': ' . $v [ 'name' ];
}
} else {
$tmpvar [ $k ] = hesk_makeURL ( nl2br ( hesk_input ( hesk_POST ( $k ))));
}
} else {
$tmpvar [ $k ] = '' ;
}
}
2015-09-12 00:46:46 -04:00
if ( count ( $hesk_error_buffer )) {
$myerror = '<ul>' ;
foreach ( $hesk_error_buffer as $error ) {
$myerror .= " <li> $error </li> \n " ;
}
$myerror .= '</ul>' ;
hesk_error ( $myerror );
}
2015-11-15 15:48:55 -05:00
if ( ! $tmpvar [ 'html' ]) {
$tmpvar [ 'message' ] = hesk_makeURL ( $tmpvar [ 'message' ]);
$tmpvar [ 'message' ] = nl2br ( $tmpvar [ 'message' ]);
}
2015-09-12 00:46:46 -04:00
2016-10-11 22:01:20 -04:00
$custom_SQL = '' ;
for ( $i = 1 ; $i <= 50 ; $i ++ ) {
$custom_SQL .= '`custom' . $i . '`=' . ( isset ( $tmpvar [ 'custom' . $i ]) ? " ' " . hesk_dbEscape ( $tmpvar [ 'custom' . $i ]) . " ' " : " '' " ) . ',' ;
2015-09-12 00:46:46 -04:00
}
2016-10-11 22:01:20 -04:00
$custom_SQL = rtrim ( $custom_SQL , ',' );
2015-09-12 00:46:46 -04:00
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " tickets` SET
`name` = '" . hesk_dbEscape($tmpvar[' name ']) . "' ,
`email` = '" . hesk_dbEscape($tmpvar[' email ']) . "' ,
`subject` = '" . hesk_dbEscape($tmpvar[' subject ']) . "' ,
`message` = '" . hesk_dbEscape($tmpvar[' message ']) . "' ,
2015-11-15 15:48:55 -05:00
`language` = '" . hesk_dbEscape($tmpvar[' language ']) . "' ,
2016-10-11 22:01:20 -04:00
`html` = '" . hesk_dbEscape($tmpvar[' html ']) . "' ,
2016-11-10 21:56:39 -05:00
$custom_SQL
2015-09-12 00:46:46 -04:00
WHERE `id` = '" . intval($ticket[' id ']) . "' LIMIT 1 " );
2014-03-23 16:03:30 -04:00
}
unset ( $tmpvar );
hesk_cleanSessionVars ( 'tmpvar' );
2015-09-12 00:46:46 -04:00
hesk_process_messages ( $hesklang [ 'edt2' ], 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . mt_rand ( 10000 , 99999 ), 'SUCCESS' );
2014-03-23 16:03:30 -04:00
}
2015-09-12 00:46:46 -04:00
$ticket [ 'message' ] = hesk_msgToPlain ( $ticket [ 'message' ], 0 , 0 );
2014-03-23 16:03:30 -04:00
/* Print header */
require_once ( HESK_PATH . 'inc/headerAdmin.inc.php' );
/* Print admin navigation */
require_once ( HESK_PATH . 'inc/show_admin_nav.inc.php' );
?>
2016-11-27 22:01:32 -05:00
< div class = " content-wrapper " >
< ol class = " breadcrumb " >
< li >
< a href = " admin_ticket.php?track=<?php echo $trackingID ; ?>&Refresh=<?php echo mt_rand(10000, 99999); ?> " >< ? php echo $hesklang [ 'ticket' ] . ' ' . $trackingID ; ?> </a>
</ li >
< li class = " active " >< ? php echo $hesklang [ 'edtt' ]; ?> </li>
</ ol >
< section class = " content " >
< div class = " box " >
< div class = " box-header with-border " >
< h1 class = " box-title " >
< ? php echo $hesklang [ 'edtt' ]; ?>
</ h1 >
< div class = " box-tools pull-right " >
< button type = " button " class = " btn btn-box-tool " data - widget = " collapse " >
< i class = " fa fa-minus " ></ i >
</ button >
</ div >
2016-09-25 21:34:19 -04:00
</ div >
2016-11-27 22:01:32 -05:00
< div class = " box-body " >
2016-09-25 21:34:19 -04:00
< ? php
2016-11-27 22:01:32 -05:00
$onsubmit = '' ;
if ( $modsForHesk_settings [ 'rich_text_for_tickets' ]) {
$onsubmit = 'onsubmit="return validateRichText(\'message-help-block\', \'message-group\', \'message\', \'' . htmlspecialchars ( $hesklang [ 'this_field_is_required' ]) . '\')"' ;
}
?>
< form role = " form " class = " form-horizontal " method = " post " action = " edit_post.php " name = " form1 " < ? php echo $onsubmit ; ?> >
< ? php
/* If it's not a reply edit all the fields */
if ( ! $is_reply ) {
if ( $hesk_settings [ 'can_sel_lang' ]) {
?>
< div class = " form-group " >
< label for = " customerLanguage "
class = " col-sm-3 control-label " >< ? php echo $hesklang [ 'chol' ]; ?> </label>
< div class = " col-sm-9 " >
< select name = " customerLanguage " id = " customerLanguage " class = " form-control " >
< ? php hesk_listLanguages (); ?>
</ select >
</ div >
</ div >
< ? php } else {
echo '<input type="hidden" name="customerLanguage" value="' . $ticket [ 'language' ] . '">' ;
} ?>
2016-09-25 21:34:19 -04:00
< div class = " form-group " >
2016-11-27 22:01:32 -05:00
< ? php
$required = '' ;
$required_attribute = '' ;
if ( $hesk_settings [ 'require_subject' ] == 1 ) {
$required = ' <span class="important">*</span>' ;
$required_attribute = 'data-error="' . $hesklang [ 'this_field_is_required' ] . '" required' ;
}
?>
< label for = " subject " class = " col-sm-3 control-label " >< ? php echo $hesklang [ 'subject' ] . $required ; ?> </label>
2016-09-25 21:34:19 -04:00
< div class = " col-sm-9 " >
2016-11-27 22:01:32 -05:00
< input class = " form-control " type = " text " name = " subject " size = " 40 " maxlength = " 40 "
value = " <?php echo $ticket['subject'] ; ?> "
placeholder = " <?php echo htmlspecialchars( $hesklang['subject'] ); ?> " />
2016-09-25 21:34:19 -04:00
</ div >
</ div >
2016-11-27 22:01:32 -05:00
< div class = " form-group " >
< label for = " name " class = " col-sm-3 control-label " >
< ? php echo $hesklang [ 'name' ]; ?>
< span class = " important " >*</ span >
</ label >
2015-09-12 00:46:46 -04:00
2016-11-27 22:01:32 -05:00
< div class = " col-sm-9 " >
< input class = " form-control " type = " text " name = " name " size = " 40 " maxlength = " 30 "
value = " <?php echo $ticket['name'] ; ?> "
placeholder = " <?php echo htmlspecialchars( $hesklang['name'] ); ?> "
data - error = " <?php echo $hesklang['this_field_is_required'] ; ?> "
required >
</ div >
2015-01-23 00:14:23 -05:00
</ div >
2016-11-27 22:01:32 -05:00
< div class = " form-group " >
< ? php
$required = '' ;
$required_attribute = '' ;
if ( $hesk_settings [ 'require_email' ]) {
$required = ' <span class="important">*</span>' ;
$required_attribute = 'data-error="' . $hesklang [ 'this_field_is_required' ] . '" required' ;
}
?>
< label for = " email "
class = " col-sm-3 control-label " >< ? php echo $hesklang [ 'email' ] . $required ; ?> </label>
< div class = " col-sm-9 " >
< input class = " form-control " type = " text " name = " email " size = " 40 " maxlength = " 1000 "
value = " <?php echo $ticket['email'] ; ?> "
placeholder = " <?php echo htmlspecialchars( $hesklang['email'] ); ?> "
< ? php echo $required_attribute ?> >
< div class = " help-block with-errors " ></ div >
</ div >
2016-09-25 21:34:19 -04:00
</ div >
2016-11-16 13:21:26 -05:00
< ? php
2016-11-27 22:01:32 -05:00
foreach ( $hesk_settings [ 'custom_fields' ] as $k => $v ) {
if ( $v [ 'use' ] && hesk_is_custom_field_in_category ( $k , $ticket [ 'category' ])) {
$k_value = $ticket [ $k ];
if ( $v [ 'type' ] == 'checkbox' ) {
2017-04-02 20:49:20 -04:00
$k_value = explode ( '<br />' , $k_value );
2016-11-27 22:01:32 -05:00
}
if ( $v [ 'req' ] == 2 ) {
$v [ 'req' ] = '<span class="important">*</span>' ;
$required_attribute = 'data-error="' . $hesklang [ 'this_field_is_required' ] . '" required' ;
} else {
$v [ 'req' ] = '' ;
$required_attribute = '' ;
}
switch ( $v [ 'type' ]) {
/* Radio box */
case 'radio' :
$cls = in_array ( $k , $_SESSION [ 'iserror' ]) ? ' isError' : '' ;
echo '
< div class = " form-group' . $cls . ' " >
< label for = " ' . $k . ' " class = " col-sm-3 control-label " > ' . $v[' name '] . ' ' . $v[' req '] . ' </ label >
< div class = " col-sm-9 " > ' ;
foreach ( $v [ 'value' ][ 'radio_options' ] as $option ) {
if ( strlen ( $k_value ) == 0 ) {
$k_value = $option ;
$checked = empty ( $v [ 'value' ][ 'no_default' ]) ? 'checked="checked"' : '' ;
} elseif ( $k_value == $option ) {
$k_value = $option ;
$checked = 'checked="checked"' ;
} else {
$checked = '' ;
}
echo '<div class="radio"><label><input type="radio" name="' . $k . '" value="' . $option . '" ' . $checked . ' ' . $required_attribute . '> ' . $option . '</label></div>' ;
}
echo ' < div class = " help-block with-errors " ></ div ></ div >
</ div > ' ;
2016-09-25 21:34:19 -04:00
2016-11-27 22:01:32 -05:00
break ;
2016-09-25 21:34:19 -04:00
2016-11-27 22:01:32 -05:00
/* Select drop-down box */
case 'select' :
2016-10-11 22:01:20 -04:00
2016-11-27 22:01:32 -05:00
$cls = in_array ( $k , $_SESSION [ 'iserror' ]) ? ' isError' : '' ;
2016-11-16 13:21:26 -05:00
2016-11-27 22:01:32 -05:00
echo '
< div class = " form-group " >
< label for = " ' . $k . ' " class = " col-sm-3 control-label " > ' . $v[' name '] . ' ' . $v[' req '] . ' </ label >
< div class = " col-sm-9 " >
< select name = " ' . $k . ' " class = " form-control " ' . $required_attribute . ' > ' ;
// Show "Click to select"?
if ( ! empty ( $v [ 'value' ][ 'show_select' ])) {
echo '<option value="">' . $hesklang [ 'select' ] . '</option>' ;
2016-11-16 13:21:26 -05:00
}
2014-03-23 16:03:30 -04:00
2016-11-27 22:01:32 -05:00
foreach ( $v [ 'value' ][ 'select_options' ] as $option ) {
if ( $k_value == $option ) {
$k_value = $option ;
$selected = 'selected' ;
} else {
$selected = '' ;
}
2016-11-16 13:21:26 -05:00
2016-11-27 22:01:32 -05:00
echo '<option ' . $selected . '>' . $option . '</option>' ;
2016-11-16 13:21:26 -05:00
}
2016-11-27 22:01:32 -05:00
echo ' </ select >
< div class = " help-block with-errors " ></ div >
</ div >
</ div > ' ;
break ;
/* Checkbox */
case 'checkbox' :
$cls = in_array ( $k , $_SESSION [ 'iserror' ]) ? ' isError' : '' ;
echo '
< div class = " form-group' . $cls . ' " >
< label for = " ' . $k . ' " class = " col-sm-3 control-label " > ' . $v[' name '] . ' ' . $v[' req '] . ' </ label >
< div class = " col-sm-9 " > ' ;
foreach ( $v [ 'value' ][ 'checkbox_options' ] as $option ) {
if ( in_array ( $option , $k_value )) {
$checked = 'checked' ;
} else {
$checked = '' ;
}
echo '<div class="checkbox"><label><input type="checkbox" name="' . $k . '[]" value="' . $option . '" ' . $checked . ' ' . $required_attribute . '> ' . $option . '</label></div>' ;
}
echo ' < div class = " help-block with-errors " ></ div >
</ div >
</ div > ' ;
break ;
2014-03-23 16:03:30 -04:00
2016-11-27 22:01:32 -05:00
/* Large text box */
case 'textarea' :
$cls = in_array ( $k , $_SESSION [ 'iserror' ]) ? ' isError' : '' ;
$k_value = hesk_msgToPlain ( $k_value , 0 , 0 );
2016-11-16 13:21:26 -05:00
2016-11-27 22:01:32 -05:00
echo '
< div class = " form-group' . $cls . ' " >
< label for = " ' . $k . ' " class = " col-sm-3 control-label " > ' . $v[' name '] . ' ' . $v[' req '] . ' </ label >
< div class = " col-sm-9 " >
< textarea name = " ' . $k . ' " class = " form-control " rows = " ' . intval( $v['value'] ['rows']) . ' " cols = " ' . intval( $v['value'] ['cols']) . ' " ' . $required_attribute . ' > ' . $k_value . ' </ textarea >
< div class = " help-block with-errors " ></ div >
</ div >
</ div > ' ;
break ;
2016-10-11 22:01:20 -04:00
2016-11-27 22:01:32 -05:00
// Date
case 'date' :
if ( $required_attribute !== '' ) {
$required_attribute .= ' pattern="[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])"' ;
}
2016-10-11 22:01:20 -04:00
2016-11-27 22:01:32 -05:00
$cls = in_array ( $k , $_SESSION [ 'iserror' ]) ? ' isError' : '' ;
2014-12-31 16:06:35 -05:00
2016-11-27 22:01:32 -05:00
$k_value = hesk_custom_date_display_format ( $k_value , 'Y-m-d' );
2015-09-08 22:14:00 -04:00
2016-11-27 22:01:32 -05:00
echo '
< div class = " form-group' . $cls . ' " >
< label for = " ' . $k . ' " class = " col-sm-3 control-label " > ' . $v[' name '] . ' ' . $v[' req '] . ' </ label >
< div class = " col-sm-9 " >
< input type = " text " name = " ' . $k . ' " value = " ' . $k_value . ' " class = " datepicker form-control " size = " 10 " ' . $required_attribute . ' >
< div class = " help-block with-errors " ></ div >
</ div >
</ div > ' ;
break ;
// Email
case 'email' :
$cls = in_array ( $k , $_SESSION [ 'iserror' ]) ? ' class="isError" ' : '' ;
$suggest = $hesk_settings [ 'detect_typos' ] ? 'onblur="Javascript:hesk_suggestEmail(\'' . $k . '\', \'' . $k . '_suggestions\', 0, 1' . ( $v [ 'value' ][ 'multiple' ] ? ',1' : '' ) . ')"' : '' ;
2015-09-08 22:14:00 -04:00
2016-11-27 22:01:32 -05:00
echo '
< div class = " form-group' . $cls . ' " >
< label for = " ' . $k . ' " class = " col-sm-3 control-label " > ' . $v[' name '] . ' ' . $v[' req '] . ' </ label >
< div class = " col-sm-9 " >
< input class = " form-control " type = " text " name = " ' . $k . ' " id = " ' . $k . ' " value = " ' . $k_value . ' " size = " 40 " ' . $suggest . ' ' . $required_attribute . ' >
< div class = " help-block with-errors " ></ div >
</ div >
< div id = " ' . $k . '_suggestions " ></ div >
2016-11-10 21:56:39 -05:00
</ div >
2016-11-27 22:01:32 -05:00
' ;
break ;
// Hidden (same as text for staff)
case 'hidden' :
case 'readonly' :
default :
if ( strlen ( $k_value ) != 0 ) {
$v [ 'value' ][ 'default_value' ] = $k_value ;
}
$cls = in_array ( $k , $_SESSION [ 'iserror' ]) ? ' isError' : '' ;
echo '
< div class = " form-group' . $cls . ' " >
< label for = " ' . $k . ' " class = " col-sm-3 control-label " > ' . $v[' name '] . ' ' . $v[' req '] . ' </ label >
< div class = " col-sm-9 " >
< input type = " text " class = " form-control " name = " ' . $k . ' " size = " 40 " maxlength = " ' . intval( $v['value'] ['max_length']) . ' " value = " ' . $v['value'] ['default_value'] . ' " ' . $required_attribute . ' >
< div class = " help-block with-errors " ></ div >
</ div >
2016-11-10 21:56:39 -05:00
</ div >
2016-11-27 22:01:32 -05:00
' ;
}
2016-09-25 21:34:19 -04:00
}
2015-09-12 00:46:46 -04:00
}
2016-11-27 22:01:32 -05:00
} ?>
< div class = " form-group " id = " message-group " >
2016-11-16 13:21:26 -05:00
< ? php
2016-11-27 22:01:32 -05:00
$required = '' ;
$required_attribute = '' ;
if ( $hesk_settings [ 'require_message' ] == 1 ) {
$required = ' <span class="important">*</span>' ;
$required_attribute = 'data-error="' . $hesklang [ 'this_field_is_required' ] . '" required' ;
}
2016-11-16 13:21:26 -05:00
?>
2016-11-27 22:01:32 -05:00
< label for = " message " class = " col-sm-3 control-label " >< ? php echo $hesklang [ 'message' ] . $required ; ?> </label>
< div class = " col-sm-9 " >
< ? php
$message = $ticket [ 'html' ] ? hesk_html_entity_decode ( $ticket [ 'message' ]) : $ticket [ 'message' ];
?>
< textarea class = " form-control htmlEditor " name = " message " rows = " 12 "
placeholder = " <?php echo htmlspecialchars( $hesklang['message'] ); ?> "
cols = " 60 " < ? php echo $required_attribute ; ?> ><?php echo $message; ?></textarea>
< div class = " help-block with-errors " id = " message-help-block " ></ div >
</ div >
2016-11-16 13:21:26 -05:00
</ div >
2016-11-27 22:01:32 -05:00
< div class = " form-group " >
< input type = " hidden " name = " save " value = " 1 " >
< input type = " hidden " name = " track " value = " <?php echo $trackingID ; ?> " >
< input type = " hidden " name = " token " value = " <?php hesk_token_echo(); ?> " >
< ? php
if ( $is_reply ) {
?>
< input type = " hidden " name = " reply " value = " <?php echo $tmpvar['id'] ; ?> " >
< ? php
}
2015-09-12 00:46:46 -04:00
?>
2016-11-27 22:01:32 -05:00
</ div >
< div class = " form-group " style = " text-align: center " >
2015-09-12 00:46:46 -04:00
< ? php
2016-11-27 22:01:32 -05:00
$html = $ticket [ 'html' ] ? 1 : 0 ;
?>
< input type = " hidden " name = " html " value = " <?php echo $html ; ?> " >
< input type = " submit " value = " <?php echo $hesklang['save_changes'] ; ?> " class = " btn btn-default " >
< ? php if ( isset ( $_REQUEST [ 'isManager' ]) && $_REQUEST [ 'isManager' ]) : ?>
< input type = " hidden " name = " isManager " value = " 1 " >
< ? php endif ; ?>
< a class = " btn btn-default " href = " javascript:history.go(-1) " >< ? php echo $hesklang [ 'back' ]; ?> </a>
</ div >
</ form >
</ div >
2015-09-12 00:46:46 -04:00
</ div >
2016-11-27 22:01:32 -05:00
< script >
buildValidatorForTicketSubmission ( 'form1' , " <?php echo addslashes( $hesklang['select_at_least_one_value'] ); ?> " );
</ script >
< ? php if ( $ticket [ 'html' ]) : ?>
< script type = " text/javascript " >
/* <![CDATA[ */
tinyMCE . init ({
mode : " textareas " ,
editor_selector : " htmlEditor " ,
elements : " content " ,
theme : " advanced " ,
convert_urls : false ,
theme_advanced_buttons1 : " cut,copy,paste,|,undo,redo,|,formatselect,fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull " ,
theme_advanced_buttons2 : " sub,sup,|,charmap,|,bullist,numlist,|,outdent,indent,insertdate,inserttime,preview,|,forecolor,backcolor,|,hr,removeformat,visualaid,|,link,unlink,anchor,image,cleanup,code " ,
theme_advanced_buttons3 : " " ,
theme_advanced_toolbar_location : " top " ,
theme_advanced_toolbar_align : " left " ,
theme_advanced_statusbar_location : " bottom " ,
theme_advanced_resizing : true
});
/* ]]> */
</ script >
< ? php endif ; ?>
</ section >
2014-03-23 16:03:30 -04:00
</ div >
< ? php
require_once ( HESK_PATH . 'inc/footer.inc.php' );
2016-11-27 22:01:32 -05:00
exit ();