diff --git a/transliteration.module b/transliteration.module old mode 100644 new mode 100755 index 6505c29..68eda0d --- a/transliteration.module +++ b/transliteration.module @@ -53,6 +53,26 @@ function transliteration_form_system_file_system_settings_alter(&$form, &$form_s '#default_value' => variable_get('transliteration_file_lowercase', TRUE), '#description' => t('This is a recommended setting to prevent issues with case-insensitive file systems. It has no effect if transliteration has been disabled.'), ); + $form['transliteration']['transliteration_file_spaces'] = array( + '#type' => 'select', + '#title' => t('How to treat spaces in transliterated files'), + '#default_value' => variable_get('transliteration_file_spaces',1), + '#options' => array( + '0' => t('Remove'), + '1' => t('Replace by separator'), + '2' => t('No action (do not replace)'), + ), + ); + $form['transliteration']['transliteration_file_separator'] = array( + '#type' => 'select', + '#title' => t('Separator'), + '#default_value' => variable_get('transliteration_file_separator','_'), + '#options' => array( + '_' => t('_'), + '-' => t('-'), + ), + '#description' => t('Character used to replace spaces in transliterated file names.'), + ); $form['buttons']['#weight'] = 1; } @@ -77,10 +97,21 @@ function transliteration_form_system_file_system_settings_alter(&$form, &$form_s */ function transliteration_clean_filename($filename, $source_langcode = NULL) { $filename = transliteration_get($filename, '', $source_langcode); - // Replace whitespace. - $filename = str_replace(' ', '_', $filename); + // Process whitespace. + switch(variable_get('transliteration_file_spaces',1)) { + case 0: + $filename = str_replace(' ', '', $filename); + break; + case 2: + break; + case 1: + default: + $filename = str_replace(' ', variable_get('transliteration_file_separator','_'), $filename); + break; + } + // Remove remaining unsafe characters. - $filename = preg_replace('![^0-9A-Za-z_.-]!', '', $filename); + $filename = preg_replace('![^0-9A-Za-z_.-\s]!', '', $filename); // Force lowercase to prevent issues on case-insensitive file systems. if (variable_get('transliteration_file_lowercase', TRUE)) { $filename = strtolower($filename);