diff --git a/admin/admin_settings.php b/admin/admin_settings.php
index b75e80be..b39c1385 100644
--- a/admin/admin_settings.php
+++ b/admin/admin_settings.php
@@ -839,6 +839,27 @@ if ( defined('HESK_DEMO') )
?>
+
+
diff --git a/admin/admin_settings_save.php b/admin/admin_settings_save.php
index 66da8710..a987e284 100644
--- a/admin/admin_settings_save.php
+++ b/admin/admin_settings_save.php
@@ -507,6 +507,7 @@ $set['new_kb_article_visibility'] = hesk_checkMinMax( intval( hesk_POST('new_kb_
$set['mfh_attachments'] = empty($_POST['email_attachments']) ? 0 : 1;
$set['show_number_merged'] = empty($_POST['show_number_merged']) ? 0 : 1;
$set['request_location'] = empty($_POST['request_location']) ? 0 : 1;
+$set['category_order_column'] = empty($_POST['category_order_column']) ? 'cat_order' : 'name';
if ($set['customer-email-verification-required'])
{
@@ -572,7 +573,10 @@ $modsForHesk_settings[\'attachments\'] = '.$set['mfh_attachments'].';
$modsForHesk_settings[\'show_number_merged\'] = '.$set['show_number_merged'].';
//-- Setting for requesting user\'s location. 0 = Disable, 1 = Enable
-$modsForHesk_settings[\'request_location\'] = '.$set['request_location'].';';
+$modsForHesk_settings[\'request_location\'] = '.$set['request_location'].';
+
+//-- Column to sort categories by. Can be either \'name\' or \'cat_order\'
+$modsForHesk_settings[\'category_order_column\'] = \''.$set['category_order_column'].'\';';
// Write the file
if ( ! file_put_contents(HESK_PATH . 'modsForHesk_settings.inc.php', $modsForHesk_file_content) )
diff --git a/admin/admin_ticket.php b/admin/admin_ticket.php
index 5599d452..cf9d1a84 100644
--- a/admin/admin_ticket.php
+++ b/admin/admin_ticket.php
@@ -607,7 +607,8 @@ if (isset($_POST['latitude']) && isset($_POST['longitude'])) {
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
/* List of categories */
-$result = hesk_dbQuery("SELECT `id`,`name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ORDER BY `cat_order` ASC");
+$orderBy = $modsForHesk_settings['category_order_column'];
+$result = hesk_dbQuery("SELECT `id`,`name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ORDER BY `".$orderBy."` ASC");
$categories_options='';
while ($row=hesk_dbFetchAssoc($result))
{
diff --git a/admin/export.php b/admin/export.php
index aa0d9ae2..c9a2db84 100644
--- a/admin/export.php
+++ b/admin/export.php
@@ -36,6 +36,7 @@ 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');
require(HESK_PATH . 'inc/admin_functions.inc.php');
require(HESK_PATH . 'inc/reporting_functions.inc.php');
@@ -326,7 +327,8 @@ $can_view_unassigned = hesk_checkPermission('can_view_unassigned',0);
// Category options
$category_options = '';
$my_cat = array();
-$res2 = hesk_dbQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE " . hesk_myCategories('id') . " ORDER BY `cat_order` ASC");
+$orderBy = $modsForHesk_settings['category_order_column'];
+$res2 = hesk_dbQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE " . hesk_myCategories('id') . " ORDER BY `".$orderBy."` ASC");
while ($row=hesk_dbFetchAssoc($res2))
{
$my_cat[$row['id']] = hesk_msgToPlain($row['name'], 1);
diff --git a/admin/manage_categories.php b/admin/manage_categories.php
index 2afc7b0f..12c6f337 100644
--- a/admin/manage_categories.php
+++ b/admin/manage_categories.php
@@ -37,6 +37,7 @@ 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');
require(HESK_PATH . 'inc/admin_functions.inc.php');
hesk_load_database_functions();
@@ -87,8 +88,9 @@ else {return false;}
//-->
- 1)
+ if ($orderBy != 'name' && $num > 1)
{
if ($j == 1)
{
diff --git a/admin/manage_permission_templates.php b/admin/manage_permission_templates.php
index b8e1bcb6..55f0b773 100644
--- a/admin/manage_permission_templates.php
+++ b/admin/manage_permission_templates.php
@@ -37,6 +37,7 @@ 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');
require(HESK_PATH . 'inc/admin_functions.inc.php');
hesk_load_database_functions();
@@ -81,7 +82,8 @@ else {return false;}
array_push($templates, $row);
}
$featureArray = hesk_getFeatureArray();
- $res = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ORDER BY `name` ASC");
+ $orderBy = $modsForHesk_settings['category_order_column'];
+ $res = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` ORDER BY `".$orderBy."` ASC");
$categories = array();
while ($row = hesk_dbFetchAssoc($res)) {
array_push($categories, $row);
diff --git a/admin/manage_users.php b/admin/manage_users.php
index 24ab1842..0deacacf 100644
--- a/admin/manage_users.php
+++ b/admin/manage_users.php
@@ -37,6 +37,7 @@ 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');
require(HESK_PATH . 'inc/admin_functions.inc.php');
require(HESK_PATH . 'inc/profile_functions.inc.php');
@@ -93,8 +94,9 @@ $default_userdata = array(
);
/* A list of all categories */
+$orderBy = $modsForHesk_settings['category_order_column'];
$hesk_settings['categories'] = array();
-$res = hesk_dbQuery('SELECT `id`,`name` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` ORDER BY `cat_order` ASC');
+$res = hesk_dbQuery('SELECT `id`,`name` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` ORDER BY `'.$orderBy.'` ASC');
while ($row=hesk_dbFetchAssoc($res))
{
if ( hesk_okCategory($row['id'], 0) )
diff --git a/admin/new_ticket.php b/admin/new_ticket.php
index deff1318..c80e0a54 100644
--- a/admin/new_ticket.php
+++ b/admin/new_ticket.php
@@ -209,7 +209,8 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
}
// List categories
- $result = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` ORDER BY `cat_order` ASC');
+ $orderByColumn = $modsForHesk_settings['category_order_column'];
+ $result = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` ORDER BY `'.$orderByColumn.'` ASC');
while ($row=hesk_dbFetchAssoc($result))
{
if (isset($_SESSION['as_category']) && $_SESSION['as_category'] == $row['id']) {$selected = ' selected="selected"';}
diff --git a/inc/ticket_list.inc.php b/inc/ticket_list.inc.php
index 90e8289c..762c6896 100644
--- a/inc/ticket_list.inc.php
+++ b/inc/ticket_list.inc.php
@@ -47,8 +47,9 @@ if (!isset($admins))
}
/* List of categories */
+$orderBy = $modsForHesk_settings['category_order_column'];
$hesk_settings['categories'] = array();
-$res2 = hesk_dbQuery('SELECT `id`, `name` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` WHERE ' . hesk_myCategories('id') . ' ORDER BY `cat_order` ASC');
+$res2 = hesk_dbQuery('SELECT `id`, `name` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'categories` WHERE ' . hesk_myCategories('id') . ' ORDER BY `'.$orderBy.'` ASC');
while ($row=hesk_dbFetchAssoc($res2))
{
$hesk_settings['categories'][$row['id']] = $row['name'];
diff --git a/index.php b/index.php
index 47d0946d..bdc5fbc6 100644
--- a/index.php
+++ b/index.php
@@ -224,7 +224,8 @@ if ( ! isset($_SESSION['c_category']) && ! $hesk_settings['select_cat'])
// Get categories
hesk_dbConnect();
- $res = hesk_dbQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `type`='0' ORDER BY `cat_order` ASC");
+ $orderBy = $modsForHesk_settings['category_order_column'];
+ $res = hesk_dbQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `type`='0' ORDER BY `".$orderBy."` ASC");
if (hesk_dbNumRows($res) == 1)
{
diff --git a/language/en/text.php b/language/en/text.php
index ea9a41a6..98f8ef26 100644
--- a/language/en/text.php
+++ b/language/en/text.php
@@ -21,6 +21,13 @@ $hesklang['_COLLATE']='utf8_unicode_ci';
// This is the email break line that will be used in email piping
$hesklang['EMAIL_HR']='------ Reply above this line ------';
+// ADDED OR MODIFIED IN Mods for HESK 2.4.0
+$hesklang['sort_by_user_defined_order'] = 'Sort by user-defined order';
+$hesklang['sort_alphabetically'] = 'Sort alphabetically';
+$hesklang['category_sort'] = 'Category Sorting';
+$hesklang['category_sort_help'] = 'Determines if categories shown on the manage categories page and all dropdowns are sorted by the user-defined order (default), or
+sorted alphabetically.';
+
// ADDED OR MODIFIED IN Mods for HESK 2.3.0
$hesklang['sm_icon'] = 'Icon';
$hesklang['sm_icon_type'] = 'Icon Type';
diff --git a/modsForHesk_settings.inc.php b/modsForHesk_settings.inc.php
index 3406ac42..0c68bc26 100644
--- a/modsForHesk_settings.inc.php
+++ b/modsForHesk_settings.inc.php
@@ -46,4 +46,7 @@ $modsForHesk_settings['attachments'] = 0;
$modsForHesk_settings['show_number_merged'] = 1;
//-- Setting for requesting user's location. 0 = Disable, 1 = Enable
-$modsForHesk_settings['request_location'] = 0;
\ No newline at end of file
+$modsForHesk_settings['request_location'] = 0;
+
+//-- Column to sort categories by. Can be either 'name' or 'cat_order'
+$modsForHesk_settings['category_order_column'] = 'cat_order';
\ No newline at end of file