diff --git a/transliteration.install b/transliteration.install index b7bc19d2a72b3a70c581e8b03018870f4c5403cb..27538e9d02cd584a47f6ccffd538df6607e93fbe 100644 --- a/transliteration.install +++ b/transliteration.install @@ -30,5 +30,9 @@ function transliteration_uninstall() { variable_del('transliteration_file_uploads'); variable_del('transliteration_file_lowercase'); variable_del('transliteration_search'); -} + // Delete all the transliteration_filter_no_known_transliteration_* variables + // and then clear the variable cache. + db_query("DELETE FROM {variable} WHERE name LIKE 'transliteration_filter_no_known_transliteration_%'"); + cache_clear_all('variables', 'cache'); +} diff --git a/transliteration.module b/transliteration.module index 1474110a360adbe69949b77b6844f6ae72863034..bb1b7ac55cca24f53964ea2d7c619db1ac993932 100644 --- a/transliteration.module +++ b/transliteration.module @@ -183,3 +183,46 @@ function transliteration_search_preprocess($text) { } return $text; } + +/** + * Implements hook_filter(). + */ +function transliteration_filter($op, $delta = 0, $format = -1, $text = '', $cache_id = 0) { + switch ($op) { + case 'list': + return array(t('Convert all characters to US-ASCII')); + case 'no cache': + return FALSE; + case 'process': + return transliteration_get( + $text, + variable_get("transliteration_filter_no_known_transliteration_$format", '?') + ); + case 'settings': + return array( + 'filter_transliteration' => array( + '#type' => 'fieldset', + '#title' => 'Transliteration', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + "transliteration_filter_no_known_transliteration_$format" => array( + '#type' => 'textfield', + '#title' => t('Placeholder for characters with no known US-ASCII equivalent'), + '#size' => 2, + // The maximum length is 5 in order to accommodate unicode multibyte input. + '#maxlength' => 5, + '#default_value' => variable_get("transliteration_filter_no_known_transliteration_$format", '?'), + ), + ), + ); + default: + return $text; + } +} + +/** + * Implements hook_filter_tips(). + */ +function transliteration_filter_tips($delta, $format, $long) { + return t('Non-latin text (e.g., å, ö, 漢) will be converted to US-ASCII equivalents (a, o, ?).'); +}