Details
- 
    Type:
Improvement
 - 
    Status: Done/Fixed
 - 
    Priority:
Major
 - 
    Resolution: Fixed/Completed
 - 
    Affects Version/s: 2.0
 - 
    Fix Version/s: 2.2.0
 - 
    Component/s: Core CiviCRM
 - 
    Labels:None
 
Description
When using the profile retrieved with crm_uf_get_profile_html_by_id(), with a profile with country and state fields, all of the states are shown. While the CiviCRM edit page attempts to restrict the state list with AJAX,
I used a simpler jquery solution in a custom Drupal module. I don't think that CiviCRM uses, jquery, so I don't know if this will be useful to CiviCRM.
Here's the Drupal solution, the jquery is attached.
<code>
function _myexample_civicrm_get_profile_html($contact_id, $profile_id) {
  $path = drupal_get_path('module', 'civicrm') .'/../';
  require_once($path .'api/UFGroup.php');
  require_once($path .'CRM/Core/DAO/StateProvince.php');
  // Include a jquery setting that maps states to countries.
  $object =& new CRM_Core_DAO_StateProvince;
  $object->find();
  $states = array();
  while ($object->fetch()) 
  drupal_add_js(array('states' => $states), 'setting');
  // Include the jquery to limit the state select box by country.
  drupal_add_js(drupal_get_path('module', 'myexample') .'/civicrm-state.js');
  return crm_uf_get_profile_html_by_id($contact_id, $profile_id, CRM_Core_Action::UPDATE, false, true);
}
</code>