The simplest solution of all. As mentioned here: Civicase Dashboard - reordering case types
I changed the weights in the table to easily change the order.
Why the heck didn't I think of that?
It would be nice to be able to change the weight within the Case Type UI.
Update
While the weight solution worked nicely for the select lists in Views exposed filters, it would not sort the results by case type name only by id.
For example, a view listing case types came out like this:
Case Type C
Case Type E
Case Type A
Case Type D
Case Type B
The issue appears to be that the civicrm_case_type table is never exposed to views.
So I added this to civicrm.case.inc:
//----------------------------------------------------------------
// CIVICRM Case Type Names are here, base tabling it up.
//----------------------------------------------------------------
$data['civicrm_case_type']['table']['group'] = t('CiviCRM Case Type Names');
$data['civicrm_case_type']['table']['base'] = array(
// Governs the whole mozilla
'field' => 'id',
'title' => t('CiviCRM Case Type Names'),
'help' => t("View displays CiviCRM Case Type Names"),
);
// Explain how this table joins to others.
$data['civicrm_case_type']['table']['join'] = array(
// Directly links to case table.
'civicrm_case' => array(
'left_field' => 'case_type_id',
'field' => 'id',
),
);
//CiviCRM Case Type - FIELDS
//Case Type Title
$data['civicrm_case_type']['title'] = array(
'title' => t('Case Type Name'),
'real field' => 'title',
'help' => t('The Name of the Case Type'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'argument' => array(
'handler' => 'views_handler_argument',
),
'sort' => array(
'handler' => 'views_handler_sort',
),
);
Which joins the table and only exposes the title field to Views.
After I applied this, the same view printed out:
Case Type A
Case Type B
Case Type C
Case Type D
Case Type E