Merge branch 'master' into remove-2-6-0-features
Conflicts: admin/admin_settings.php admin/admin_settings_save.php modsForHesk_settings.inc.phpmerge-requests/2/head
@ -0,0 +1,323 @@
|
|||||||
|
<?php
|
||||||
|
/*******************************************************************************
|
||||||
|
* Title: Help Desk Software HESK
|
||||||
|
* Version: 2.5.3 from 16th March 2014
|
||||||
|
* Author: Klemen Stirn
|
||||||
|
* Website: http://www.hesk.com
|
||||||
|
********************************************************************************
|
||||||
|
* COPYRIGHT AND TRADEMARK NOTICE
|
||||||
|
* Copyright 2005-2014 Klemen Stirn. All Rights Reserved.
|
||||||
|
* HESK is a registered trademark of Klemen Stirn.
|
||||||
|
|
||||||
|
* The HESK may be used and modified free of charge by anyone
|
||||||
|
* AS LONG AS COPYRIGHT NOTICES AND ALL THE COMMENTS REMAIN INTACT.
|
||||||
|
* By using this code you agree to indemnify Klemen Stirn from any
|
||||||
|
* liability that might arise from it's use.
|
||||||
|
|
||||||
|
* Selling the code for this program, in part or full, without prior
|
||||||
|
* written consent is expressly forbidden.
|
||||||
|
|
||||||
|
* Using this code, in part or full, to create derivate work,
|
||||||
|
* new scripts or products is expressly forbidden. Obtain permission
|
||||||
|
* before redistributing this software over the Internet or in
|
||||||
|
* any other medium. In all cases copyright and header must remain intact.
|
||||||
|
* This Copyright is in full effect in any country that has International
|
||||||
|
* Trade Agreements with the United States of America or
|
||||||
|
* with the European Union.
|
||||||
|
|
||||||
|
* Removing any of the copyright notices without purchasing a license
|
||||||
|
* is expressly forbidden. To remove HESK copyright notice you must purchase
|
||||||
|
* a license for this script. For more information on how to obtain
|
||||||
|
* a license please visit the page below:
|
||||||
|
* https://www.hesk.com/buy.php
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
define('IN_SCRIPT',1);
|
||||||
|
define('HESK_PATH','../');
|
||||||
|
|
||||||
|
/* 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');
|
||||||
|
|
||||||
|
$id = hesk_input( hesk_GET('i') );
|
||||||
|
$query = hesk_input( hesk_utf8_urldecode( hesk_GET('q') ) );
|
||||||
|
$type = hesk_input( hesk_GET('t', 'text') );
|
||||||
|
$maxlen = intval( hesk_GET('m', 255) );
|
||||||
|
$query = stripslashes($query);
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML; 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
||||||
|
<head>
|
||||||
|
<title><?php echo $hesklang['opt']; ?></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=<?php echo $hesklang['ENCODING']; ?>" />
|
||||||
|
<style type="text/css">
|
||||||
|
body
|
||||||
|
{
|
||||||
|
margin:5px 5px;
|
||||||
|
padding:0;
|
||||||
|
background:#fff;
|
||||||
|
color: black;
|
||||||
|
font : 68.8%/1.5 Verdana, Geneva, Arial, Helvetica, sans-serif;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
|
||||||
|
p
|
||||||
|
{
|
||||||
|
color : black;
|
||||||
|
font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 1.0em;
|
||||||
|
}
|
||||||
|
h3
|
||||||
|
{
|
||||||
|
color : #AF0000;
|
||||||
|
font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.0em;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
.title
|
||||||
|
{
|
||||||
|
color : black;
|
||||||
|
font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.0em;
|
||||||
|
}
|
||||||
|
.wrong {color : red;}
|
||||||
|
.correct {color : green;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h3><?php echo $hesklang['opt']; ?></h3>
|
||||||
|
|
||||||
|
<p><i><?php echo $hesklang['ns']; ?></i></p>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
switch ($type)
|
||||||
|
{
|
||||||
|
case 'text':
|
||||||
|
echo '
|
||||||
|
<script language="javascript">
|
||||||
|
function hesk_saveOptions()
|
||||||
|
{
|
||||||
|
window.opener.document.getElementById(\'s_'.$id.'_val\').value = document.getElementById(\'o2\').value;
|
||||||
|
window.opener.document.getElementById(\'s_'.$id.'_maxlen\').value = document.getElementById(\'o1\').value;
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<table border="0">
|
||||||
|
<tr>
|
||||||
|
<td>'.$hesklang['custom_l'].':<td>
|
||||||
|
<td><input type="text" name="o1" id="o1" value="'.$maxlen.'" size="30" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>'.$hesklang['defw'].':<td>
|
||||||
|
<td><input type="text" name="o2" id="o2" value="'.$query.'" size="30" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p><input type="button" value=" '.$hesklang['ok'].' " onclick="Javascript:hesk_saveOptions()" /></p>
|
||||||
|
';
|
||||||
|
break;
|
||||||
|
case 'textarea':
|
||||||
|
if (strpos($query,'#') !== false)
|
||||||
|
{
|
||||||
|
list($rows,$cols)=explode('#',$query);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$rows = '';
|
||||||
|
$cols = '';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
<script language="javascript">
|
||||||
|
function hesk_saveOptions()
|
||||||
|
{
|
||||||
|
window.opener.document.getElementById(\'s_'.$id.'_val\').value = document.getElementById(\'o1\').value + "#" + document.getElementById(\'o2\').value;
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<table border="0">
|
||||||
|
<tr>
|
||||||
|
<td>'.$hesklang['rows'].':<td>
|
||||||
|
<td><input type="text" name="o1" id="o1" value="'.$rows.'" size="5" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>'.$hesklang['cols'].':<td>
|
||||||
|
<td><input type="text" name="o2" id="o2" value="'.$cols.'" size="5" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p><input type="button" value=" '.$hesklang['ok'].' " onclick="Javascript:hesk_saveOptions()" /></p>
|
||||||
|
';
|
||||||
|
break;
|
||||||
|
case 'radio':
|
||||||
|
$options=str_replace('#HESK#',"\n",$query);
|
||||||
|
echo '
|
||||||
|
<script language="javascript">
|
||||||
|
function hesk_saveOptions()
|
||||||
|
{
|
||||||
|
text = document.getElementById(\'o1\').value;
|
||||||
|
text = text.replace(/^\s\s*/, \'\').replace(/\s\s*$/, \'\');
|
||||||
|
text = escape(text);
|
||||||
|
if(text.indexOf(\'%0D%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0D\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D/g ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert(\''.addslashes($hesklang['atl2']).'\');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
text = unescape(text.replace(re_nlchar,\'#HESK#\'));
|
||||||
|
|
||||||
|
window.opener.document.getElementById(\'s_'.$id.'_val\').value = text;
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<p>'.$hesklang['opt2'].'</p>
|
||||||
|
<textarea name="o1" id="o1" rows="6" cols="40">'.$options.'</textarea>
|
||||||
|
<p><input type="button" value=" '.$hesklang['ok'].' " onclick="Javascript:hesk_saveOptions()" /></p>
|
||||||
|
';
|
||||||
|
break;
|
||||||
|
case 'select':
|
||||||
|
$options=str_replace('#HESK#',"\n",$query);
|
||||||
|
echo '
|
||||||
|
<script language="javascript">
|
||||||
|
function hesk_saveOptions()
|
||||||
|
{
|
||||||
|
text = document.getElementById(\'o1\').value;
|
||||||
|
text = text.replace(/^\s\s*/, \'\').replace(/\s\s*$/, \'\');
|
||||||
|
text = escape(text);
|
||||||
|
if(text.indexOf(\'%0D%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0D\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D/g ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert(\''.addslashes($hesklang['atl2']).'\');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
text = unescape(text.replace(re_nlchar,\'#HESK#\'));
|
||||||
|
|
||||||
|
window.opener.document.getElementById(\'s_'.$id.'_val\').value = text;
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<p>'.$hesklang['opt3'].'</p>
|
||||||
|
<textarea name="o1" id="o1" rows="6" cols="40">'.$options.'</textarea>
|
||||||
|
<p><input type="button" value=" '.$hesklang['ok'].' " onclick="Javascript:hesk_saveOptions()" /></p>
|
||||||
|
';
|
||||||
|
break;
|
||||||
|
case 'checkbox':
|
||||||
|
$options=str_replace('#HESK#',"\n",$query);
|
||||||
|
echo '
|
||||||
|
<script language="javascript">
|
||||||
|
function hesk_saveOptions()
|
||||||
|
{
|
||||||
|
text = document.getElementById(\'o1\').value;
|
||||||
|
text = text.replace(/^\s\s*/, \'\').replace(/\s\s*$/, \'\');
|
||||||
|
text = escape(text);
|
||||||
|
if(text.indexOf(\'%0D%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0D\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D/g ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert(\''.addslashes($hesklang['atl2']).'\');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
text = unescape(text.replace(re_nlchar,\'#HESK#\'));
|
||||||
|
|
||||||
|
window.opener.document.getElementById(\'s_'.$id.'_val\').value = text;
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<p>'.$hesklang['opt4'].'</p>
|
||||||
|
<textarea name="o1" id="o1" rows="6" cols="40">'.$options.'</textarea>
|
||||||
|
<p><input type="button" value=" '.$hesklang['ok'].' " onclick="Javascript:hesk_saveOptions()" /></p>
|
||||||
|
';
|
||||||
|
break;
|
||||||
|
case 'date':
|
||||||
|
echo '<p>'.$hesklang['date_custom_field_text'].'</p>';
|
||||||
|
break;
|
||||||
|
case 'multiselect':
|
||||||
|
$options=str_replace('#HESK#',"\n",$query);
|
||||||
|
echo '
|
||||||
|
<script language="javascript">
|
||||||
|
function hesk_saveOptions()
|
||||||
|
{
|
||||||
|
text = document.getElementById(\'o1\').value;
|
||||||
|
text = text.replace(/^\s\s*/, \'\').replace(/\s\s*$/, \'\');
|
||||||
|
text = escape(text);
|
||||||
|
if(text.indexOf(\'%0D%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0A\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0A/g ;
|
||||||
|
}
|
||||||
|
else if(text.indexOf(\'%0D\') > -1)
|
||||||
|
{
|
||||||
|
re_nlchar = /%0D/g ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert(\''.addslashes($hesklang['atl2']).'\');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
text = unescape(text.replace(re_nlchar,\'#HESK#\'));
|
||||||
|
|
||||||
|
window.opener.document.getElementById(\'s_'.$id.'_val\').value = text;
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<p>'.$hesklang['multiple_select_custom_field_text'].'</p>
|
||||||
|
<textarea name="o1" id="o1" rows="6" cols="40">'.$options.'</textarea>
|
||||||
|
<p><input type="button" value=" '.$hesklang['ok'].' " onclick="Javascript:hesk_saveOptions()" /></p>
|
||||||
|
';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
die('Invalid type');
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<p align="center"><a href="#" onclick="Javascript:window.close()"><?php echo $hesklang['cwin']; ?></a></p>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
<?php
|
||||||
|
exit();
|
||||||
|
?>
|
@ -0,0 +1,510 @@
|
|||||||
|
/*!
|
||||||
|
* Datepicker for Bootstrap
|
||||||
|
*
|
||||||
|
* Copyright 2012 Stefan Petre
|
||||||
|
* Improvements by Andrew Rowls
|
||||||
|
* Licensed under the Apache License v2.0
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.datepicker {
|
||||||
|
padding: 4px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
.datepicker-inline {
|
||||||
|
width: 220px;
|
||||||
|
}
|
||||||
|
.datepicker.datepicker-rtl {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.datepicker.datepicker-rtl table tr td span {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown {
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid #ccc;
|
||||||
|
border-top: 0;
|
||||||
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid #ffffff;
|
||||||
|
border-top: 0;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-left:before {
|
||||||
|
left: 6px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-left:after {
|
||||||
|
left: 7px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-right:before {
|
||||||
|
right: 6px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-right:after {
|
||||||
|
right: 7px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-top:before {
|
||||||
|
top: -7px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-top:after {
|
||||||
|
top: -6px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-bottom:before {
|
||||||
|
bottom: -7px;
|
||||||
|
border-bottom: 0;
|
||||||
|
border-top: 7px solid #999;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-bottom:after {
|
||||||
|
bottom: -6px;
|
||||||
|
border-bottom: 0;
|
||||||
|
border-top: 6px solid #ffffff;
|
||||||
|
}
|
||||||
|
.datepicker > div {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.datepicker.days div.datepicker-days {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.datepicker.months div.datepicker-months {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.datepicker.years div.datepicker-years {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.datepicker table {
|
||||||
|
margin: 0;
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.datepicker td,
|
||||||
|
.datepicker th {
|
||||||
|
text-align: center;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.table-striped .datepicker table tr td,
|
||||||
|
.table-striped .datepicker table tr th {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.day:hover,
|
||||||
|
.datepicker table tr td.day.focused {
|
||||||
|
background: #eeeeee;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.old,
|
||||||
|
.datepicker table tr td.new {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.disabled,
|
||||||
|
.datepicker table tr td.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #999999;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today,
|
||||||
|
.datepicker table tr td.today:hover,
|
||||||
|
.datepicker table tr td.today.disabled,
|
||||||
|
.datepicker table tr td.today.disabled:hover {
|
||||||
|
background-color: #fde19a;
|
||||||
|
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||||
|
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||||
|
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||||
|
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||||
|
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||||
|
border-color: #fdf59a #fdf59a #fbed50;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today:hover,
|
||||||
|
.datepicker table tr td.today:hover:hover,
|
||||||
|
.datepicker table tr td.today.disabled:hover,
|
||||||
|
.datepicker table tr td.today.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.today:active,
|
||||||
|
.datepicker table tr td.today:hover:active,
|
||||||
|
.datepicker table tr td.today.disabled:active,
|
||||||
|
.datepicker table tr td.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.today.active,
|
||||||
|
.datepicker table tr td.today:hover.active,
|
||||||
|
.datepicker table tr td.today.disabled.active,
|
||||||
|
.datepicker table tr td.today.disabled:hover.active,
|
||||||
|
.datepicker table tr td.today.disabled,
|
||||||
|
.datepicker table tr td.today:hover.disabled,
|
||||||
|
.datepicker table tr td.today.disabled.disabled,
|
||||||
|
.datepicker table tr td.today.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.today[disabled],
|
||||||
|
.datepicker table tr td.today:hover[disabled],
|
||||||
|
.datepicker table tr td.today.disabled[disabled],
|
||||||
|
.datepicker table tr td.today.disabled:hover[disabled] {
|
||||||
|
background-color: #fdf59a;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today:active,
|
||||||
|
.datepicker table tr td.today:hover:active,
|
||||||
|
.datepicker table tr td.today.disabled:active,
|
||||||
|
.datepicker table tr td.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.today.active,
|
||||||
|
.datepicker table tr td.today:hover.active,
|
||||||
|
.datepicker table tr td.today.disabled.active,
|
||||||
|
.datepicker table tr td.today.disabled:hover.active {
|
||||||
|
background-color: #fbf069 \9;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today:hover:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today.active:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range,
|
||||||
|
.datepicker table tr td.range:hover,
|
||||||
|
.datepicker table tr td.range.disabled,
|
||||||
|
.datepicker table tr td.range.disabled:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
-moz-border-radius: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range.today,
|
||||||
|
.datepicker table tr td.range.today:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover {
|
||||||
|
background-color: #f3d17a;
|
||||||
|
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
|
||||||
|
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
|
||||||
|
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
|
||||||
|
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
|
||||||
|
background-image: linear-gradient(top, #f3c17a, #f3e97a);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
|
||||||
|
border-color: #f3e97a #f3e97a #edde34;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
-moz-border-radius: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range.today:hover,
|
||||||
|
.datepicker table tr td.range.today:hover:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.range.today:active,
|
||||||
|
.datepicker table tr td.range.today:hover:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.range.today.active,
|
||||||
|
.datepicker table tr td.range.today:hover.active,
|
||||||
|
.datepicker table tr td.range.today.disabled.active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.active,
|
||||||
|
.datepicker table tr td.range.today.disabled,
|
||||||
|
.datepicker table tr td.range.today:hover.disabled,
|
||||||
|
.datepicker table tr td.range.today.disabled.disabled,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.range.today[disabled],
|
||||||
|
.datepicker table tr td.range.today:hover[disabled],
|
||||||
|
.datepicker table tr td.range.today.disabled[disabled],
|
||||||
|
.datepicker table tr td.range.today.disabled:hover[disabled] {
|
||||||
|
background-color: #f3e97a;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range.today:active,
|
||||||
|
.datepicker table tr td.range.today:hover:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.range.today.active,
|
||||||
|
.datepicker table tr td.range.today:hover.active,
|
||||||
|
.datepicker table tr td.range.today.disabled.active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.active {
|
||||||
|
background-color: #efe24b \9;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.selected,
|
||||||
|
.datepicker table tr td.selected:hover,
|
||||||
|
.datepicker table tr td.selected.disabled,
|
||||||
|
.datepicker table tr td.selected.disabled:hover {
|
||||||
|
background-color: #9e9e9e;
|
||||||
|
background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
|
||||||
|
background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
|
||||||
|
background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
|
||||||
|
background-image: -o-linear-gradient(top, #b3b3b3, #808080);
|
||||||
|
background-image: linear-gradient(top, #b3b3b3, #808080);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
|
||||||
|
border-color: #808080 #808080 #595959;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.datepicker table tr td.selected:hover,
|
||||||
|
.datepicker table tr td.selected:hover:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.selected:active,
|
||||||
|
.datepicker table tr td.selected:hover:active,
|
||||||
|
.datepicker table tr td.selected.disabled:active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover:active,
|
||||||
|
.datepicker table tr td.selected.active,
|
||||||
|
.datepicker table tr td.selected:hover.active,
|
||||||
|
.datepicker table tr td.selected.disabled.active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.active,
|
||||||
|
.datepicker table tr td.selected.disabled,
|
||||||
|
.datepicker table tr td.selected:hover.disabled,
|
||||||
|
.datepicker table tr td.selected.disabled.disabled,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.selected[disabled],
|
||||||
|
.datepicker table tr td.selected:hover[disabled],
|
||||||
|
.datepicker table tr td.selected.disabled[disabled],
|
||||||
|
.datepicker table tr td.selected.disabled:hover[disabled] {
|
||||||
|
background-color: #808080;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.selected:active,
|
||||||
|
.datepicker table tr td.selected:hover:active,
|
||||||
|
.datepicker table tr td.selected.disabled:active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover:active,
|
||||||
|
.datepicker table tr td.selected.active,
|
||||||
|
.datepicker table tr td.selected:hover.active,
|
||||||
|
.datepicker table tr td.selected.disabled.active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.active {
|
||||||
|
background-color: #666666 \9;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.active,
|
||||||
|
.datepicker table tr td.active:hover,
|
||||||
|
.datepicker table tr td.active.disabled,
|
||||||
|
.datepicker table tr td.active.disabled:hover {
|
||||||
|
background-color: #006dcc;
|
||||||
|
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||||
|
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||||
|
border-color: #0044cc #0044cc #002a80;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.datepicker table tr td.active:hover,
|
||||||
|
.datepicker table tr td.active:hover:hover,
|
||||||
|
.datepicker table tr td.active.disabled:hover,
|
||||||
|
.datepicker table tr td.active.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.active:active,
|
||||||
|
.datepicker table tr td.active:hover:active,
|
||||||
|
.datepicker table tr td.active.disabled:active,
|
||||||
|
.datepicker table tr td.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td.active.active,
|
||||||
|
.datepicker table tr td.active:hover.active,
|
||||||
|
.datepicker table tr td.active.disabled.active,
|
||||||
|
.datepicker table tr td.active.disabled:hover.active,
|
||||||
|
.datepicker table tr td.active.disabled,
|
||||||
|
.datepicker table tr td.active:hover.disabled,
|
||||||
|
.datepicker table tr td.active.disabled.disabled,
|
||||||
|
.datepicker table tr td.active.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.active[disabled],
|
||||||
|
.datepicker table tr td.active:hover[disabled],
|
||||||
|
.datepicker table tr td.active.disabled[disabled],
|
||||||
|
.datepicker table tr td.active.disabled:hover[disabled] {
|
||||||
|
background-color: #0044cc;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.active:active,
|
||||||
|
.datepicker table tr td.active:hover:active,
|
||||||
|
.datepicker table tr td.active.disabled:active,
|
||||||
|
.datepicker table tr td.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td.active.active,
|
||||||
|
.datepicker table tr td.active:hover.active,
|
||||||
|
.datepicker table tr td.active.disabled.active,
|
||||||
|
.datepicker table tr td.active.disabled:hover.active {
|
||||||
|
background-color: #003399 \9;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span {
|
||||||
|
display: block;
|
||||||
|
width: 23%;
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
float: left;
|
||||||
|
margin: 1%;
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.disabled,
|
||||||
|
.datepicker table tr td span.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #999999;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.active,
|
||||||
|
.datepicker table tr td span.active:hover,
|
||||||
|
.datepicker table tr td span.active.disabled,
|
||||||
|
.datepicker table tr td span.active.disabled:hover {
|
||||||
|
background-color: #006dcc;
|
||||||
|
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||||
|
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||||
|
border-color: #0044cc #0044cc #002a80;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.active:hover,
|
||||||
|
.datepicker table tr td span.active:hover:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:hover:hover,
|
||||||
|
.datepicker table tr td span.active:active,
|
||||||
|
.datepicker table tr td span.active:hover:active,
|
||||||
|
.datepicker table tr td span.active.disabled:active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td span.active.active,
|
||||||
|
.datepicker table tr td span.active:hover.active,
|
||||||
|
.datepicker table tr td span.active.disabled.active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.active,
|
||||||
|
.datepicker table tr td span.active.disabled,
|
||||||
|
.datepicker table tr td span.active:hover.disabled,
|
||||||
|
.datepicker table tr td span.active.disabled.disabled,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td span.active[disabled],
|
||||||
|
.datepicker table tr td span.active:hover[disabled],
|
||||||
|
.datepicker table tr td span.active.disabled[disabled],
|
||||||
|
.datepicker table tr td span.active.disabled:hover[disabled] {
|
||||||
|
background-color: #0044cc;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.active:active,
|
||||||
|
.datepicker table tr td span.active:hover:active,
|
||||||
|
.datepicker table tr td span.active.disabled:active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td span.active.active,
|
||||||
|
.datepicker table tr td span.active:hover.active,
|
||||||
|
.datepicker table tr td span.active.disabled.active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.active {
|
||||||
|
background-color: #003399 \9;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.old,
|
||||||
|
.datepicker table tr td span.new {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.datepicker th.datepicker-switch {
|
||||||
|
width: 145px;
|
||||||
|
}
|
||||||
|
.datepicker thead tr:first-child th,
|
||||||
|
.datepicker tfoot tr th {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datepicker thead tr:first-child th:hover,
|
||||||
|
.datepicker tfoot tr th:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.datepicker .cw {
|
||||||
|
font-size: 10px;
|
||||||
|
width: 12px;
|
||||||
|
padding: 0 2px 0 5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.datepicker thead tr:first-child th.cw {
|
||||||
|
cursor: default;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.input-append.date .add-on i,
|
||||||
|
.input-prepend.date .add-on i {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
.input-daterange input {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.input-daterange input:first-child {
|
||||||
|
-webkit-border-radius: 3px 0 0 3px;
|
||||||
|
-moz-border-radius: 3px 0 0 3px;
|
||||||
|
border-radius: 3px 0 0 3px;
|
||||||
|
}
|
||||||
|
.input-daterange input:last-child {
|
||||||
|
-webkit-border-radius: 0 3px 3px 0;
|
||||||
|
-moz-border-radius: 0 3px 3px 0;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
}
|
||||||
|
.input-daterange .add-on {
|
||||||
|
display: inline-block;
|
||||||
|
width: auto;
|
||||||
|
min-width: 16px;
|
||||||
|
height: 20px;
|
||||||
|
padding: 4px 5px;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 0 1px 0 #ffffff;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
margin-left: -5px;
|
||||||
|
margin-right: -5px;
|
||||||
|
}
|
||||||
|
.datepicker.dropdown-menu {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
float: left;
|
||||||
|
display: none;
|
||||||
|
min-width: 160px;
|
||||||
|
list-style: none;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
-moz-border-radius: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
-webkit-background-clip: padding-box;
|
||||||
|
-moz-background-clip: padding;
|
||||||
|
background-clip: padding-box;
|
||||||
|
*border-right-width: 2px;
|
||||||
|
*border-bottom-width: 2px;
|
||||||
|
color: #333333;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.datepicker.dropdown-menu th,
|
||||||
|
.datepicker.datepicker-inline th,
|
||||||
|
.datepicker.dropdown-menu td,
|
||||||
|
.datepicker.datepicker-inline td {
|
||||||
|
padding: 4px 5px;
|
||||||
|
}
|
After Width: | Height: | Size: 212 B |
After Width: | Height: | Size: 208 B |
After Width: | Height: | Size: 335 B |
After Width: | Height: | Size: 207 B |
After Width: | Height: | Size: 262 B |
After Width: | Height: | Size: 262 B |
After Width: | Height: | Size: 332 B |
After Width: | Height: | Size: 280 B |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 4.4 KiB |
@ -0,0 +1,105 @@
|
|||||||
|
<?php
|
||||||
|
define('IN_SCRIPT',1);
|
||||||
|
define('HESK_PATH','../');
|
||||||
|
require(HESK_PATH . 'install/install_functions.inc.php');
|
||||||
|
require(HESK_PATH . 'hesk_settings.inc.php');
|
||||||
|
|
||||||
|
$updateSuccess = true;
|
||||||
|
|
||||||
|
hesk_dbConnect();
|
||||||
|
hesk_dbQuery("CREATE TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."verified_emails` (`Email` VARCHAR(255) NOT NULL)");
|
||||||
|
hesk_dbQuery("CREATE TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."pending_verification_emails` (`Email` VARCHAR(255) NOT NULL, `ActivationKey` VARCHAR(500) NOT NULL)");
|
||||||
|
hesk_dbQuery("CREATE TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."stage_tickets` (
|
||||||
|
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`trackid` varchar(13) COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
|
||||||
|
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
|
||||||
|
`category` smallint(5) unsigned NOT NULL DEFAULT '1',
|
||||||
|
`priority` enum('0','1','2','3') COLLATE utf8_unicode_ci NOT NULL DEFAULT '3',
|
||||||
|
`subject` varchar(70) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
|
||||||
|
`message` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`dt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
|
`lastchange` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
`ip` varchar(46) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
|
||||||
|
`language` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`status` int(11) NOT NULL DEFAULT '0',
|
||||||
|
`owner` smallint(5) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`time_worked` time NOT NULL DEFAULT '00:00:00',
|
||||||
|
`lastreplier` enum('0','1') COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
|
||||||
|
`replierid` smallint(5) unsigned DEFAULT NULL,
|
||||||
|
`archive` enum('0','1') COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
|
||||||
|
`locked` enum('0','1') COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
|
||||||
|
`attachments` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`merged` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`history` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom1` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom2` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom3` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom4` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom5` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom6` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom7` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom8` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom9` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom10` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom11` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom12` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom13` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom14` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom15` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom16` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom17` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom18` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom19` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`custom20` mediumtext COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`parent` mediumint(8) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `trackid` (`trackid`),
|
||||||
|
KEY `archive` (`archive`),
|
||||||
|
KEY `categories` (`category`),
|
||||||
|
KEY `statuses` (`status`),
|
||||||
|
KEY `owner` (`owner`)
|
||||||
|
)");
|
||||||
|
hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."settings` SET `Value` = '1.7.0' WHERE `Key` = 'modsForHeskVersion'");
|
||||||
|
|
||||||
|
//-- Add the new custom field property to modsForHesk_settings.inc.php
|
||||||
|
$file = file_get_contents(HESK_PATH . 'modsForHesk_settings.inc.php');
|
||||||
|
|
||||||
|
//-- Only add the additional settings if they aren't already there.
|
||||||
|
if (strpos($file, 'custom_field_setting') !== true)
|
||||||
|
{
|
||||||
|
$file .= '
|
||||||
|
|
||||||
|
//-- Set this to 1 to enable custom field names as keys
|
||||||
|
$modsForHesk_settings[\'custom_field_setting\'] = 0;
|
||||||
|
|
||||||
|
//-- Set this to 1 to enable email verification for new customers
|
||||||
|
$modsForHesk_settings[\'customer_email_verification_required\'] = 0;';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file_put_contents(HESK_PATH.'modsForHesk_settings.inc.php', $file))
|
||||||
|
{
|
||||||
|
$updateSuccess = false;
|
||||||
|
echo '<h1>Failure!</h1>
|
||||||
|
<p>An issue occurred when trying to update the modsForHesk_settings.inc.php file.</p>
|
||||||
|
<br>
|
||||||
|
<p>Add the following lines to your modsForHesk_settings.inc.php file:</p>
|
||||||
|
<br>
|
||||||
|
<code>//-- Set this to 1 to enable custom field names as keys
|
||||||
|
$modsForHesk_settings[\'custom_field_setting\'] = 0;</code><br><br>
|
||||||
|
|
||||||
|
<code>//-- Set this to 1 to enable email verification for new customers
|
||||||
|
$modsForHesk_settings[\'customer_email_verification_required\'] = 0;</code>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
<p>Now you can delete the <b>install</b> folder for security reasons, and then proceed back to the <a href="../">Help Desk</a></p>';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($updateSuccess) {
|
||||||
|
?>
|
||||||
|
|
||||||
|
<h1>Installation / Update complete!</h1>
|
||||||
|
<p>Please delete the <b>install</b> folder for security reasons, and then proceed back to the <a href="../">Help Desk</a></p>
|
||||||
|
|
||||||
|
<?php } ?>
|
@ -0,0 +1,16 @@
|
|||||||
|
Hello,
|
||||||
|
|
||||||
|
A support ticket assigned to you has been re-opened.
|
||||||
|
|
||||||
|
%%NAME%% has just re-opened the ticket "%%SUBJECT%%".
|
||||||
|
|
||||||
|
Tracking ID: %%TRACK_ID%%
|
||||||
|
|
||||||
|
You can manage this ticket here:
|
||||||
|
%%TRACK_URL%%
|
||||||
|
|
||||||
|
|
||||||
|
Regards,
|
||||||
|
|
||||||
|
%%SITE_TITLE%%
|
||||||
|
%%SITE_URL%%
|
@ -0,0 +1,10 @@
|
|||||||
|
Dear %%NAME%%,
|
||||||
|
|
||||||
|
Your email needs to be verified before your ticket can be submitted. Please click the link below to verify your email.
|
||||||
|
|
||||||
|
%%VERIFYURL%%
|
||||||
|
|
||||||
|
Sincerely,
|
||||||
|
|
||||||
|
%%SITE_TITLE%%
|
||||||
|
%%SITE_URL%%
|
@ -0,0 +1,128 @@
|
|||||||
|
<?php
|
||||||
|
define('IN_SCRIPT',1);
|
||||||
|
define('HESK_PATH','./');
|
||||||
|
|
||||||
|
// Get all the required files and functions
|
||||||
|
require(HESK_PATH . 'hesk_settings.inc.php');
|
||||||
|
require(HESK_PATH . 'modsForHesk_settings.inc.php');
|
||||||
|
require(HESK_PATH . 'inc/common.inc.php');
|
||||||
|
hesk_load_database_functions();
|
||||||
|
require(HESK_PATH . 'inc/posting_functions.inc.php');
|
||||||
|
require(HESK_PATH . 'inc/email_functions.inc.php');
|
||||||
|
require_once(HESK_PATH . 'inc/header.inc.php');
|
||||||
|
?>
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li><a href="<?php echo $hesk_settings['site_url']; ?>"><?php echo $hesk_settings['site_title']; ?></a></li>
|
||||||
|
<li><a href="<?php echo $hesk_settings['hesk_url']; ?>"><?php echo $hesk_settings['hesk_title']; ?></a></li>
|
||||||
|
<li class="active"><?php echo $hesklang['verify_email']; ?></li>
|
||||||
|
</ol>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8 col-md-offset-2 col-sm-12">
|
||||||
|
<h3><?php echo $hesklang['verify_email']; ?></h3>
|
||||||
|
<div class="footerWithBorder blankSpace"></div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$showForm = true;
|
||||||
|
|
||||||
|
if (isset($_GET['key']) || isset($_POST['key']))
|
||||||
|
{
|
||||||
|
|
||||||
|
$key = isset($_GET['key'])
|
||||||
|
? $_GET['key']
|
||||||
|
: $_POST['key'];
|
||||||
|
|
||||||
|
$submittedTickets = array();
|
||||||
|
$email = '';
|
||||||
|
hesk_dbConnect();
|
||||||
|
$getRs = hesk_dbQuery("SELECT `Email` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."pending_verification_emails`
|
||||||
|
WHERE `ActivationKey` = '".hesk_dbEscape($key)."'");
|
||||||
|
while ($result = $getRs->fetch_assoc())
|
||||||
|
{
|
||||||
|
$email = $result['Email'];
|
||||||
|
$ticketRs = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."stage_tickets`
|
||||||
|
WHERE `email` = '".hesk_dbEscape($result['Email'])."'");
|
||||||
|
while ($innerResult = $ticketRs->fetch_assoc())
|
||||||
|
{
|
||||||
|
$ticket = hesk_newTicket($innerResult);
|
||||||
|
// Notify the customer
|
||||||
|
hesk_notifyCustomer();
|
||||||
|
|
||||||
|
// Need to notify staff?
|
||||||
|
// --> From autoassign?
|
||||||
|
$getOwnerRs = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE ID = ".hesk_dbEscape($ticket['owner']));
|
||||||
|
$autoassign_owner = $getOwnerRs->fetch_assoc();
|
||||||
|
if ($ticket['owner'] && $autoassign_owner['notify_assigned'])
|
||||||
|
{
|
||||||
|
hesk_notifyAssignedStaff($autoassign_owner, 'ticket_assigned_to_you');
|
||||||
|
}
|
||||||
|
// --> No autoassign, find and notify appropriate staff
|
||||||
|
elseif ( ! $ticket['owner'] )
|
||||||
|
{
|
||||||
|
hesk_notifyStaff('new_ticket_staff', " `notify_new_unassigned` = '1' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
array_push($submittedTickets, $innerResult['trackid']);
|
||||||
|
hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."stage_tickets`
|
||||||
|
WHERE `id` = ".$innerResult['id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Add email address to the verified emails table
|
||||||
|
hesk_dbQuery('INSERT INTO `'.hesk_dbEscape($hesk_settings['db_pfix']).'verified_emails` (`Email`) VALUES (\''.hesk_dbEscape($email).'\')');
|
||||||
|
}
|
||||||
|
hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."pending_verification_emails`
|
||||||
|
WHERE `ActivationKey` = '".hesk_dbEscape($key)."'");
|
||||||
|
|
||||||
|
//-- was there an email recorded for the key?
|
||||||
|
if (!empty($email))
|
||||||
|
{
|
||||||
|
$showForm = false;
|
||||||
|
?>
|
||||||
|
<div class="alert alert-success">
|
||||||
|
<p><i class="fa fa-check"></i> <?php echo sprintf($hesklang['email_verified'], $email) ?></p>
|
||||||
|
<ul>
|
||||||
|
<?php
|
||||||
|
foreach ($submittedTickets as $ticket)
|
||||||
|
{
|
||||||
|
echo '<li><a href="'.$hesk_settings['hesk_url'].'/ticket.php?track='.$ticket.'">'.$ticket.'</a></li>';
|
||||||
|
}
|
||||||
|
if (count($submittedTickets) == 0)
|
||||||
|
{
|
||||||
|
echo '<li>'.$hesklang['no_tickets_created'].'</li>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
//-- no tickets were activated. invalid key, or was email already activated??
|
||||||
|
?>
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
<p><i class="fa fa-exclamation-triangle"></i> <?php echo $hesklang['verify_no_records']; ?></p>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($showForm) {
|
||||||
|
?>
|
||||||
|
<form class="form-horizontal" action="verifyemail.php" method="post">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="key" class="col-sm-3 control-label"><?php echo $hesklang['activation_key']; ?></label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input type="text" class="form-control" id="key" name="key" placeholder="<?php echo $hesklang['activation_key']; ?>">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-9 col-sm-offset-3">
|
||||||
|
<input type="submit" class="btn btn-default" value="<?php echo $hesklang['verify_email']; ?>">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
require_once(HESK_PATH . 'inc/footer.inc.php');
|
||||||
|
?>
|