diff --git a/admin/new_ticket.php b/admin/new_ticket.php index d818c168..707369f5 100644 --- a/admin/new_ticket.php +++ b/admin/new_ticket.php @@ -286,7 +286,7 @@ $show_quick_help = $show['show']; } else if (isset($_GET['email'])) { echo hesk_GET('email'); } ?>" placeholder="" onkeyup="disableIfEmpty('email','notify-email')"> diff --git a/inc/ticket_list.inc.php b/inc/ticket_list.inc.php index 2d51790f..59e27218 100644 --- a/inc/ticket_list.inc.php +++ b/inc/ticket_list.inc.php @@ -27,7 +27,6 @@ * a license please visit the page below: * https://www.hesk.com/buy.php *******************************************************************************/ -define('MINIMUM_REFRESH_THRESHOLD_IN_SECONDS', 1); /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) { die('Invalid attempt'); @@ -106,15 +105,7 @@ if ($total > 0) { $next_page = ($page + 1 > $pages) ? 0 : $page + 1; $autorefreshInSeconds = $_SESSION['autorefresh'] / 1000; $autorefresh = ''; - if ($autorefreshInSeconds >= MINIMUM_REFRESH_THRESHOLD_IN_SECONDS) { - $autorefresh = ' | ' . $hesklang['autorefresh'] . ' ' . $autorefreshInSeconds . ' ' . $hesklang['abbr']['second']; - ?> - - '; if ($pages > 1) { @@ -403,14 +394,11 @@ if ($total > 0) { // Print custom fields foreach ($hesk_settings['custom_fields'] as $key => $value) { if ($value['use'] && hesk_show_column($key)) { - echo ''; - if ($value['type'] == 'date' && !empty($ticket[$key])) { - $dt = date('Y-m-d h:i:s', $ticket[$key]); - echo hesk_dateToString($dt, 0); - } else { - echo $ticket[$key]; - } - echo ''; + echo ''. + ($value['type'] == 'date' + ? hesk_custom_date_display_format($ticket[$key], $value['value']['date_format']) + : $ticket[$key]). + ''; } } @@ -439,8 +427,13 @@ if ($total > 0) { - + + @@ -478,17 +471,6 @@ else { echo '
'; $autorefreshInSeconds = $_SESSION['autorefresh'] / 1000; - if ($autorefreshInSeconds >= MINIMUM_REFRESH_THRESHOLD_IN_SECONDS) { - echo $hesklang['autorefresh'] . ' ' . $autorefreshInSeconds . ' ' . $hesklang['abbr']['second']; - ?> - - + + + + + + + +
+ + + + + +
> + > +
+ + + + +  
+ + + +
+ +

+ +
+ $hesk_settings['cat_show_select']) + { + ?> +
+ + +  
+ +
+ + +
+
+ + + +
+
+ +

 

+ + $v) { - if ($v['use'] && isset($_REQUEST[$k])) { + if ($v['use']==1 && isset($_REQUEST[$k])) { $_SESSION['c_' . $k] = $_REQUEST[$k]; } } @@ -131,10 +230,6 @@ function print_add_ticket() $_SESSION['isnotice'] = array(); } - if (!isset($_SESSION['c_category']) && !$hesk_settings['select_cat']) { - $_SESSION['c_category'] = 0; - } - hesk_cleanSessionVars('already_submitted'); // Tell header to load reCaptcha API if needed @@ -143,6 +238,29 @@ function print_add_ticket() } define('PAGE_TITLE', 'CUSTOMER_TICKET'); + + // Get categories + $hesk_settings['categories'] = array(); + $res = hesk_dbQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `type`='0' ORDER BY `cat_order` ASC"); + while ($row=hesk_dbFetchAssoc($res)) { + $hesk_settings['categories'][$row['id']] = $row['name']; + } + + $number_of_categories = count($hesk_settings['categories']); + + if ($number_of_categories == 0) { + $category = 1; + } elseif ($number_of_categories == 1) { + $category = current(array_keys($hesk_settings['categories'])); + } else { + $category = isset($_GET['catid']) ? hesk_REQUEST('catid'): hesk_REQUEST('category'); + + // Force the customer to select a category? + if (!isset($hesk_settings['categories'][$category])) { + return print_select_category($number_of_categories); + } + } + // Print header $hesk_settings['tmp_title'] = $hesk_settings['hesk_title'] . ' - ' . $hesklang['submit_ticket']; require_once(HESK_PATH . 'inc/header.inc.php'); @@ -151,7 +269,16 @@ function print_add_ticket() @@ -199,8 +326,8 @@ function print_add_ticket() enctype="multipart/form-data" >
- +
- +
placeholder="" data-error="" required> @@ -237,8 +364,8 @@ function print_add_ticket() if ($hesk_settings['confirm_email']) { ?>
- +
- + 2 ORDER BY `" . $orderBy . "` ASC"); - - if (hesk_dbNumRows($res) == 1) { - // Only 1 public category, no need for a select box - $row = hesk_dbFetchAssoc($res); - echo ''; - } elseif (hesk_dbNumRows($res) < 1) { - // No public categories, set it to default one - echo ''; - } else { - ?> -
- - -
- - -
-
-
- $v) { + foreach ($hesk_settings['custom_fields'] as $k=>$v) + { + if ($v['use']==1 && $v['place']==0 && hesk_is_custom_field_in_category($k, $category) ) + { - if ($v['use'] && $v['place'] == 0) { - if ($modsForHesk_settings['custom_field_setting']) { - $v['name'] = $hesklang[$v['name']]; - } - - $required = $v['req'] ? 'required' : ''; $v['req'] = $v['req'] ? '*' : ''; - if ($v['type'] == 'checkbox' || $v['type'] == 'multiselect') { + if ($v['type'] == 'checkbox') + { $k_value = array(); - if (isset($_SESSION["c_$k"]) && is_array($_SESSION["c_$k"])) { - foreach ($_SESSION["c_$k"] as $myCB) { + if (isset($_SESSION["c_$k"]) && is_array($_SESSION["c_$k"])) + { + foreach ($_SESSION["c_$k"] as $myCB) + { $k_value[] = stripslashes(hesk_input($myCB)); } } - } elseif (isset($_SESSION["c_$k"])) { - $k_value = stripslashes(hesk_input($_SESSION["c_$k"])); - } else { - $k_value = ''; + } + elseif (isset($_SESSION["c_$k"])) + { + $k_value = stripslashes(hesk_input($_SESSION["c_$k"])); + } + else + { + $k_value = ''; } - switch ($v['type']) { + switch ($v['type']) + { /* Radio box */ case 'radio': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); + echo ' + + '.$v['name:'].' '.$v['req'].' + '; - echo '
'; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - $options = explode('#HESK#', $v['value']); - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - foreach ($options as $option) { - - if (strlen($k_value) == 0 || $k_value == $option) { + foreach ($v['value']['radio_options'] as $option) + { + if (strlen($k_value) == 0 || $k_value == $option) + { $k_value = $option; $checked = 'checked="checked"'; - } else { + } + else + { $checked = ''; } - echo '
'; + echo '
'; } - echo '
'; - echo '
'; + echo ' + + '; break; /* Select drop-down box */ case 'select': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - echo '
-
'; // Show "Click to select"? - $v['value'] = str_replace('{HESK_SELECT}', '', $v['value'], $num); - if ($num) { - echo ''; + if ( ! empty($v['value']['show_select'])) + { + echo ''; } - $options = explode('#HESK#', $v['value']); - - foreach ($options as $option) { - - if ($k_value == $option) { + foreach ($v['value']['select_options'] as $option) + { + if ($k_value == $option) + { $k_value = $option; $selected = 'selected="selected"'; - } else { + } + else + { $selected = ''; } - echo ''; + echo ''; } - echo '
'; + echo ' + + '; break; /* Checkbox */ case 'checkbox': - $validator = $required == 'required' ? 'data-checkbox="' . $k . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); + echo ' + + '.$v['name:'].' '.$v['req'].' + '; - echo '
'; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - $options = explode('#HESK#', $v['value']); - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - foreach ($options as $option) { - - if (in_array($option, $k_value)) { + foreach ($v['value']['checkbox_options'] as $option) + { + if (in_array($option,$k_value)) + { $checked = 'checked="checked"'; - } else { + } + else + { $checked = ''; } - echo '
'; + echo '
'; } - echo '
'; + + echo ' + + '; break; /* Large text box */ case 'textarea': - $errorText = $required == 'required' ? 'data-error="' . htmlspecialchars($hesklang['this_field_is_required']) . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - $size = explode('#', $v['value']); - $size[0] = empty($size[0]) ? 5 : intval($size[0]); - $size[1] = empty($size[1]) ? 30 : intval($size[1]); - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
- -
-
-
-
'; - break; - - case 'multiselect': - $validator = $required == 'required' ? 'data-multiselect="' . $k . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
-
-
- - -
- -
'; - break; - - case 'date': - //Clean up multiple dashes or whitespaces - $errorText = $required == 'required' ? 'data-error="'.htmlspecialchars($hesklang['this_field_is_required']).'"' : ''; - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; - } - - $cls = in_array($k, $_SESSION['iserror']) ? ' isError ' : ''; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; echo ' -
- -
- - ' . $hesklang['date_format'] . ' -
-
'; + + '.$v['name:'].' '.$v['req'].' + + + '; break; + // Date + case 'date': + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; + + echo ' + + '.$v['name:'].' '.$v['req'].' + + + '; + break; + + // Email case 'email': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - if (strlen($k_value) != 0) { - $v['value'] = $k_value; - } - - if ($v['value'] == 'cc' || $v['value'] == 'bcc') { - // (b)cc isn't a valid email but is the "value" used by settings. Just remove it. - $v['value'] = ''; - } - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
- -
-
-
-
'; + $suggest = $hesk_settings['detect_typos'] ? 'onblur="Javascript:hesk_suggestEmail(\''.$k.'\', \''.$k.'_suggestions\', 0, 0'.($v['value']['multiple'] ? ',1' : '').')"' : ''; + echo ' + + '.$v['name:'].' '.$v['req'].' + +
+ + + '; break; + // Hidden case 'hidden': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; + if (strlen($k_value) != 0) + { + $v['value']['hidden_default_value'] = $k_value; } - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo ''; - - break; - - case 'readonly': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; - } - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
- -
-
'; - + $hidden_cf_buffer .= ''; break; /* Default text input */ default: - $errorText = $required == 'required' ? 'data-error="' . htmlspecialchars($hesklang['this_field_is_required']) . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; + if (strlen($k_value) != 0 || isset($_SESSION["c_$k"])) + { + $v['value']['default_value'] = $k_value; } - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - echo '
- -
-
-
-
'; + echo ' + + '.$v['name:'].' '.$v['req'].' + + + '; } } } @@ -617,33 +626,44 @@ function print_add_ticket() ?> -
-
-
-
- -
- + +
+
+
+
+ + +
+ -
- placeholder="" - data-error="" required> +
+ placeholder="" + data-error="" + required> -
-
-
-
- -
+
+
+
+ +
+ +
-
- - - -
-
+ theme_advanced_toolbar_location: "top", + theme_advanced_toolbar_align: "left", + theme_advanced_statusbar_location: "bottom", + theme_advanced_resizing: true + }); + /* ]]> */ + + +
+
+ $v) { - - if ($v['use'] && $v['place']) { - if ($modsForHesk_settings['custom_field_setting']) { - $v['name'] = $hesklang[$v['name']]; - } - - $required = $v['req'] ? 'required' : ''; + foreach ($hesk_settings['custom_fields'] as $k=>$v) + { + if ($v['use']==1 && $v['place']==1 && hesk_is_custom_field_in_category($k, $category) ) + { $v['req'] = $v['req'] ? '*' : ''; - if ($v['type'] == 'checkbox' || $v['type'] == 'multiselect') { + if ($v['type'] == 'checkbox') + { $k_value = array(); - if (isset($_SESSION["c_$k"]) && is_array($_SESSION["c_$k"])) { - foreach ($_SESSION["c_$k"] as $myCB) { + if (isset($_SESSION["c_$k"]) && is_array($_SESSION["c_$k"])) + { + foreach ($_SESSION["c_$k"] as $myCB) + { $k_value[] = stripslashes(hesk_input($myCB)); } } - } elseif (isset($_SESSION["c_$k"])) { - $k_value = stripslashes(hesk_input($_SESSION["c_$k"])); - } else { - $k_value = ''; + } + elseif (isset($_SESSION["c_$k"])) + { + $k_value = stripslashes(hesk_input($_SESSION["c_$k"])); + } + else + { + $k_value = ''; } - switch ($v['type']) { + switch ($v['type']) + { /* Radio box */ case 'radio': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); + echo ' + + '.$v['name:'].' '.$v['req'].' + '; - echo '
'; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - $options = explode('#HESK#', $v['value']); - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - foreach ($options as $option) { - - if (strlen($k_value) == 0 || $k_value == $option) { + foreach ($v['value']['radio_options'] as $option) + { + if (strlen($k_value) == 0 || $k_value == $option) + { $k_value = $option; $checked = 'checked="checked"'; - } else { + } + else + { $checked = ''; } - echo '
'; + echo '
'; } - echo '
'; + echo ' + + '; break; /* Select drop-down box */ case 'select': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - echo '
-
'; // Show "Click to select"? - $v['value'] = str_replace('{HESK_SELECT}', '', $v['value'], $num); - if ($num) { - echo ''; + if ( ! empty($v['value']['show_select'])) + { + echo ''; } - - $options = explode('#HESK#', $v['value']); - - foreach ($options as $option) { - - if ($k_value == $option) { + foreach ($v['value']['select_options'] as $option) + { + if ($k_value == $option) + { $k_value = $option; $selected = 'selected="selected"'; - } else { + } + else + { $selected = ''; } - echo ''; + echo ''; } - echo '
'; + echo ' + + '; break; /* Checkbox */ case 'checkbox': - $validator = $required == 'required' ? 'data-checkbox="' . $k . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); + echo ' + + '.$v['name:'].' '.$v['req'].' + '; - echo '
'; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - $options = explode('#HESK#', $v['value']); - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - foreach ($options as $option) { - - if (in_array($option, $k_value)) { + foreach ($v['value']['checkbox_options'] as $option) + { + if (in_array($option,$k_value)) + { $checked = 'checked="checked"'; - } else { + } + else + { $checked = ''; } - echo '
'; + echo '
'; } - echo '
'; + + echo ' + + '; break; /* Large text box */ case 'textarea': - $errorText = $required == 'required' ? 'data-error="' . htmlspecialchars($hesklang['this_field_is_required']) . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - $size = explode('#', $v['value']); - $size[0] = empty($size[0]) ? 5 : intval($size[0]); - $size[1] = empty($size[1]) ? 30 : intval($size[1]); - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
- -
-
-
'; - break; - - case 'multiselect': - $validator = $required == 'required' ? 'data-multiselect="' . $k . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
-
-
- - -
- -
'; - break; - - case 'date': - $errorText = $required == 'required' ? 'data-error="'.htmlspecialchars($hesklang['this_field_is_required']).'"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; - } - - $cls = in_array($k, $_SESSION['iserror']) ? ' isError ' : ''; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; echo ' -
- -
- - ' . $hesklang['date_format'] . ' - -
-
'; + + '.$v['name:'].' '.$v['req'].' + + + '; break; + // Date + case 'date': + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; + + echo ' + + '.$v['name:'].' '.$v['req'].' + + + '; + break; + + // Email case 'email': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - if (strlen($k_value) != 0) { - $v['value'] = $k_value; - } - - if ($v['value'] == 'cc' || $v['value'] == 'bcc') { - // (b)cc isn't a valid email but is the "value" used by settings. Just remove it. - $v['value'] = ''; - } - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
- -
-
-
'; + $suggest = $hesk_settings['detect_typos'] ? 'onblur="Javascript:hesk_suggestEmail(\''.$k.'\', \''.$k.'_suggestions\', 0, 0'.($v['value']['multiple'] ? ',1' : '').')"' : ''; + echo ' + + '.$v['name:'].' '.$v['req'].' + +
+ + + '; break; + // Hidden case 'hidden': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; - } - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo ''; - - break; - - case 'readonly': - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; - } - - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; - - echo '
- -
-
'; - + $hidden_cf_buffer .= ''; break; /* Default text input */ default: - $errorText = $required == 'required' ? 'data-error="' . htmlspecialchars($hesklang['this_field_is_required']) . '"' : ''; - //Clean up multiple dashes or whitespaces - $formattedId = preg_replace("/[\s-]+/", " ", $v['name']); - $formattedId = preg_replace("/[\s_]/", "-", $formattedId); - - if (strlen($k_value) != 0) { - $v['value'] = $k_value; + if (strlen($k_value) != 0 || isset($_SESSION["c_$k"])) + { + $v['value']['default_value'] = $k_value; } - $cls = in_array($k, $_SESSION['iserror']) ? ' class="isError" ' : ''; + $cls = in_array($k,$_SESSION['iserror']) ? ' class="isError" ' : ''; - echo '
- -
-
-
'; + echo ' + + '.$v['name:'].' '.$v['req'].' + + + '; } } } @@ -1164,8 +1106,12 @@ function print_add_ticket() +