Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Кириллица в аттачах. Мультизагрузка

Парни поставил полезный мод по мультизагрузке аттачей.

 

В превью аттачей не отображаются файлы с киррилическим написанием.

 

Сделал как советовали:

 

Как сделать, чтобы прикреплённые имена файлов имели русские символы в названии?

 

Для этого необходимо открыть файл ./ips_kernel/class_upload.php, найти:

//-------------------------------------------------

// Make the uploaded file safe

//-------------------------------------------------

 

$FILE_NAME = preg_replace( "/[^\w\.]/", "_", $FILE_NAME );

Заменить на:

//-------------------------------------------------

// Make the uploaded file safe

//-------------------------------------------------

 

$FILE_NAME = preg_replace( "/[^a-zA-Z0-9а-яА-Я\-\.\_]/", "_", $FILE_NAME );

 

 

Обновил кэш, и всё равно засада осталась. Не подскажите в чём может быть засада, есть мысли ?

К сожалению с автором мода связаться не могу

Изменено пользователем PaulZibert

Рекомендованные сообщения

$FILE_NAME = preg_replace( "/[^a-zA-Z0-9а-яА-Я\-\.\_]/", "_", $FILE_NAME );

 

Наверняка проблема в кодировке и регулярки не распознают кириллицу. Можно решить проблему, заменив "белый список" на "черный": http://pastebin.com/9qTg5JEN

  • Автор

Спасибо за подсказку ! А где это можно изменить ?

Вместо:

 

 

$FILE_NAME = preg_replace( "/[^\w\.]/", "_", $FILE_NAME );

  • Автор

Вы извините профана, а нужно первый или второй код вставлять отсюда ? http://pastebin.com/9qTg5JEN

И что значит белый и черный ?

Заранее спасибо за ответы и терпение !

  • Автор

Попробовал заменить. Очистил кэш. Не сработало (

Это вообще что за проверка, когда она применяется, при загрузки файлов или при их отображении? Если первый случай, то естественно срабатывать не будет, сколько там не чисти кеш. http://phpfaq.ru/debug#debug вам в помощь.

Я, вообще говоря, тоже не в курсе, что там в двойке происходит. Но ТС указал на конкретную строку - я предложил другой вариант длинной в две строки, делающий то же самое, но не полагающийся на регулярки в той же мере. А в большем уже помочь или подсказать не смогу.

  • Автор

Спасибо вам всем большое ! Сам я не программер, придется сносить мод мультиаттачей, ибо решение проблемы не увидел (

Ну да, это регулярка находится в методе upload_process (/ips_kernel/class_upload.php), так с чего ТС решил что надо очищать кеш мне тоже непонятно.

 

@PaulZibert, если у вас utf-8 попробуйте заменить

 

$FILE_NAME = preg_replace( "/[^\w\.]/", "_", $FILE_NAME );

на

$FILE_NAME = preg_replace( '/[^а-яa-z0-9.]+/ui', '_', $FILE_NAME );

 

Так же попробуйте без флага u (u который перед i)

Проверять следует загрузкой файла, а не чисткой кеша.

  • Автор

Большое спасибо ! Вот попробовал поставить вначале с флагом, потом без. Не сработало ((

Проверял путем загрузки файла. Вот метод.

http://narod.ru/disk/63666726001.950fcf1aa9fee3f65e30fafd31230b66/class_upload.rar.html

  • Автор

Задача была решена товарищем вот так:

 

$upoptfile = $file['name'];

$upoptfile=strtr($upoptfile,"абвгдеёзийклмнопрстуфхъыэ","abvgdeeziyklmnoprstufh'ie");

$upoptfile=strtr($upoptfile,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ","ABVGDEEZIYKLMNOPRSTUFH'IE");

$upoptfile=eregi_replace(" ","_",$upoptfile);

$file['name']=strtr($upoptfile, array(

"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",

"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",

"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",

"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",

"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye", "?"=>"_", "№"=>"-"));

У вас похоже проблемы с локалью. Лучше по этому поводу обратится к ТП. Если есть ssh покажите результат команды

 

locale -a | grep -i ru

Есть еще такой вариант :)

 

$FILE_NAME = iconv( 'windows-1251', 'utf-8', $FILE_NAME );
$FILE_NAME = preg_replace('/[^\pL0-9.]+/u', '_', $FILE_NAME );
$FILE_NAME = iconv( 'utf-8', 'windows-1251', $FILE_NAME );

  • Автор

Главное что решили, может кому то пригодится =)

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.