1 сент. 2011 г.

и снова русские буквы в именах файлов ....

Цель: Научить ckfinderпри загрузке файлов на сервер, транслитерации имен.


Дано: Drupal 7transliteration (1.11), ckfinder (2.0.2)

Решение:
Увы, для решения этой задачи пришлось залезть в модуль transliteration ...
И так, лезем в файл: filemanager.config (лежит туть: \sites\all\modules\ckeditor\includes\, ну или где у вас там ckeditor установлен), находим в нем строчку (где та в 70 строках):

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
и дописываем:
transliteration_init();

после,находим файл: /sites/all/modules/transliteration/transliteration.module

В нем функцию function transliteration_init() {...} заменить на нижеследующую:
function transliteration_init() {
  if ((!empty($_FILES['files']) || !empty($_FILES['upload'])) && variable_get('transliteration_file_uploads', TRUE)) {
    // Figure out language, which is available in $_POST['language'] for node
    // forms.
    $langcode = NULL;
    if (!empty($_POST['language'])) {
      $languages = language_list();
      if (isset($languages[$_POST['language']])) {
        $langcode = $_POST['language'];
      }
    }
    if (!empty($_FILES['files'])) {
        foreach ($_FILES['files']['name'] as $field => $filename) {
          $_FILES['files']['orig_name'][$field] = $filename;
          $_FILES['files']['name'][$field] = transliteration_clean_filename($filename, $langcode);
        }
    } else {
          $_FILES['upload']['orig_name'] = $_FILES['upload']['name'];
          $_FILES['upload']['name'] = transliteration_clean_filename($_FILES['upload']['name'], $langcode);
    }
  }  
}

Примечание: При обновлении модуля transliteration, данный костыль слетить ...

Комментариев нет:

Отправить комментарий