[Языки] [AH30]Reputation_1.0.2 FIX RU

Статус
В этой теме нельзя размещать новые ответы.
Android, так, для общего розвития..
Скажи, а что именно правил что-бы русские отражались нормально?
 
Такой вопрос, а можно как нибудь сделать что бы можно было просмотреть за что и каму ставили? или я не магу найти? есть там такое нету? просмотреть отдельно у пользователя!
 
Такой вопрос, а можно как нибудь сделать что бы можно было просмотреть за что и каму ставили? или я не магу найти? есть там такое нету? просмотреть отдельно у пользователя!
Можно только сделать что-бы юзер мог в своем профиле увидеть кто ему поставил последние 5 сообщений в репутации.
Настройки и инструменты >Системные настройки >Система >[Хук] Репутация >Группы которые видят кто изменил их репутацию
 
Можно только сделать что-бы юзер мог в своем профиле увидеть кто ему поставил последние 5 сообщений в репутации.
Настройки и инструменты >Системные настройки >Система >[Хук] Репутация >Группы которые видят кто изменил их репутацию
А полный список получается просмотреть не как да? только последние 5 да?
 
  • Заблокирован
  • #16
Андроид, у меня вопрос лично к тебе:
Как ты его поправил, и тут дело не в этом хаке вообще.... просто проблема такая же у меня еще в одном скрипте.

В базу кароче крикозябры заносятся.... там база кароче была в latin1 также как и здесь(вроде), я ее в win перекодировал, все окей кроме комментариев, и вот они заносятся как и этот хак заносил... точно также

Блин вот вставляю, а булка эти символы перекодирует в нормальные! Блин ну ты понял вообщем - видел какие это хак делал.

Извиняй монс за оффтоп в твоем разделе.
 
Андроид, у меня вопрос лично к тебе:
Как ты его поправил, и тут дело не в этом хаке вообще.... просто проблема такая же у меня еще в одном скрипте.

В базу кароче крикозябры заносятся.... там база кароче была в latin1 также как и здесь(вроде), я ее в win перекодировал

База должна быть в utf8 :smmne: все остальное не совсем правильно, хотя может работать, просто в один прекрасный момент гемора с кодировками не избежать.

Ок, отвечаю, проблема из разряда escape кодирования русских символов в JavaScript (utf8), о ней можно почитать в гугле ну или тут например:
Для просмотра ссылки Войди или Зарегистрируйся

Был изменен файл отвечающий за обработку данных полученых от скрипта: hooks\ah30ReputationCoreFunctions.php
Что именно было сделано: была добавлена функция преобразования экспейс кодов (%u0410) в обычные, она работает гораздо быстрей чем аналогичная функция в пхп и не зависит от версии пхп, на джаваскрипт тоже пологатся не хотелось.
PHP:
    /**
     * ANDROID FIX: Функция перекодировки из кодов utf8
     *
     * @access    public
     * @param    string        $str        Строка кодов utf8
     * @return    string        $str        Читабельная строка
     */
    public function unicode_escape($str)
    {
        $escape_table = array(
          '%20' => ' ',
          '%21' => '!',
          '%2C' => ',',
          '%3A' => ':',
          '%3B' => ';',
          '%u0410' => 'А',
          '%u0411' => 'Б',
          '%u0412' => 'В',
          '%u0413' => 'Г',
          '%u0414' => 'Д',
          '%u0415' => 'Е',
          '%u0401' => 'Ё',
          '%u0416' => 'Ж',
          '%u0417' => 'З',
          '%u0418' => 'И',
          '%u0419' => 'Й',
          '%u041A' => 'К',
          '%u041B' => 'Л',
          '%u041C' => 'М',
          '%u041D' => 'Н',
          '%u041E' => 'О',
          '%u041F' => 'П',
          '%u0420' => 'Р',
          '%u0421' => 'С',
          '%u0422' => 'Т',
          '%u0423' => 'У',
          '%u0424' => 'Ф',
          '%u0425' => 'Х',
          '%u0426' => 'Ц',
          '%u0427' => 'Ч',
          '%u0428' => 'Ш',
          '%u0429' => 'Щ',
          '%u042A' => 'Ъ',
          '%u042B' => 'Ы',
          '%u042C' => 'Ь',
          '%u042D' => 'Э',
          '%u042E' => 'Ю',
          '%u042F' => 'Я',
          '%u0430' => 'а',
          '%u0431' => 'б',
          '%u0432' => 'в',
          '%u0433' => 'г',
          '%u0434' => 'д',
          '%u0435' => 'е',
          '%u0451' => 'ё',
          '%u0436' => 'ж',
          '%u0437' => 'з',
          '%u0438' => 'и',
          '%u0439' => 'й',
          '%u043A' => 'к',
          '%u043B' => 'л',
          '%u043C' => 'м',
          '%u043D' => 'н',
          '%u043E' => 'о',
          '%u043F' => 'п',
          '%u0440' => 'р',
          '%u0441' => 'с',
          '%u0442' => 'т',
          '%u0443' => 'у',
          '%u0444' => 'ф',
          '%u0445' => 'х',
          '%u0446' => 'ц',
          '%u0447' => 'ч',
          '%u0448' => 'ш',
          '%u0449' => 'щ',
          '%u044A' => 'ъ',
          '%u044B' => 'ы',
          '%u044C' => 'ь',
          '%u044D' => 'э',
          '%u044E' => 'ю',
          '%u044F' => 'я',
        //ukrainian char 
        '%u0456' => 'і',
          '%u0406' => 'І',
          '%u0457' => 'ї',
          '%u0407' => 'Ї',
          '%u0454' => 'є',
          '%u0404' => 'Є',
        );  
        return  strtr($str, $escape_table);
        
    }

Потом просто в месте где скрипт полуает текст вставил функцию обработки этого текста:
PHP:
    public function addRate( $type, $type_id, $rating, $message='', $member_id=0, $app='' )
    {

        //ANDROID FIX START
        $message = $this->unicode_escape($message);
        //ANDROID FIX STOP

Добавлено через 6 минут
В догонку, если у вас свой стиль форума то вам надо файлик public\style_css\css_1\ah30reputation.css кинуть во все public\style_css\css_х чтобы правильно отображалось окошко добавления комментария к репе.
 
  • Заблокирован
  • #18
Android, спасиб сейчас попробую...
Нее это совсем к IPB не относится просто проблема смежная.

А распространяется данный баг только на UTF чтоли? Просто этот двиг вообще по идее не затачивали для русских видимо. Потому как latin1 изначально, а он изначально русские символы не подразумевает.
Я переделал все кроме комментов, с ними вот такая хрень.

Сейчас попробую добавить функцию escape() для нормального вывода русских символов. Осталось найти только где он камент в базу записывает. Спасиб еще раз.
 
А репка то с глюком. Если выставить в настройках "Группы которые видят кто изменил их репутацию" <<< тут кстати правильней поидее получается.. группы которые видят кто изменял репутацию.
Вобщем если выставить больше одной группы то не видит никто.
На ибр предложено следующее решение.
Ищем

PHP:
 if ( $r['rep_for'] && $this->settings['ah30reputation_show_received_by'] && ( strstr( ',' . $this->memberData['member_group_id'] . ',', ',' . $this->settings['ah30reputation_groups_see_who_rep'] . ',' ) ) )
Меняем на:
PHP:
  if ( $r['rep_for'] && $this->settings['ah30reputation_show_received_by'] && ( strstr( ',' . $this->settings['ah30reputation_groups_see_who_rep'] . ',', ',' . $this->memberData['member_group_id'] . ',' ) ) )

Такую-же замену требуется провести в файле ah30ReputationSideBarLastFiveRep.

Есдинственное какая проблема появилась у меня. Так это то, что в сайдабе она стала нормально отображаться вида "'название топика' автор 'автор репки'". А вот в профиле просто вида "'название топика' 'автор репки'", слово "автор" в профиле почему-то не видно :(
Буду рад помощи.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху