Новости Joomla

Компонент View logs v.2.2.0

👩‍💻 Компонент View logs v.2.2.0.По горячим следам, рекомендациям и просьбам Joomla-сообщества компонент просмотра логов Joomla получил следующую версиюv.2.2.0. Что нового?- Обновление интерфейса: список логов сделан в виде таблицы, отображение дополнительной информации в списке файлов (время создания и последнего изменения, кнопки действий и их порядок) изменены и сделаны менее пёстрыми.- Добавлен поиск-фильтр по имени файла лога на странице. Находите нужный файл быстрее.- Большие файлы. Просмотр файла лога в модальном окне сохранён для файлов менее 1МБ. Возможность открыть файл в отдельном окне сохранена. Но используйте эту функцию с осторожностью: файлы объёмом 8-10мб ещё возможно открывать в браузере, но более крупные - не рекомендуется. Системные требования:- Совместимость с Joomla 6 и PHP 8.4.- Минимальная версия PHP по-прежнему 8.0.Страница расширенияGitHub расширения@joomlafeed#joomla #расширения

0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 3488 Просмотров
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Доброе время суток. Есть вопрос по CB User List, в частности по фильтру. Проблема в том что он не работает по полю с типом Check Box (Multiple). Другие поля не пробовал, да и не подходят они мне.

Дело было так:
Создаю в CВ Fild Manager новое поле, допустим "Увлечения" с типом Check Box (Multiple);
Задаю несколько десятков значений.
Регистрируюсь на сайте и отмечаю несколько значений.
Создаю новый UserList, в CB List Management.
В поле Filter в первом выпадающем списке выбираю созданное мной выше поле.
Во втором выпадающем списке выбираю Like. Как мне кажется этот параметр указывает на то что выбираться будут те записи поле "Увлечения" которых содержит искомое слово, указанное в третьем поле.

В общем при выборе любого типа фильтрации кроме Great Then список пуст(запись не находится)
При выборе Great Then и наличии нескольких пользователей, выводятся все, у которых отмечено несколько позиций в поле "Увлечения", причем независимо от того что отмечено.

Заглянул в базу данных, там в поле где хранится информация о критериях фильтрации информация записана не словами а двухзначными числами через знак процента что-то вида s(%2%57%57Like%87%45%56). Пытался подправить в базе критерий отбора вручную выбираю LIKE. Сохраняю. Но в листе по прежнему пусто.

Мои параметры Joomla 1.5.17 + CB 1.2.2 Кодировка базы данных UTF 8
--------------------------------------------------

Ну ближе к делу.

Как оказалось CB-фильтр не дружит с кирилицей. Искал решение на многих форумах но ничего толкового не нашел. Все попытки исправить данную ситуацию или решить в лоб или обойти не давали результата.

Моя идея может оказаться очередной идеей обойти проблему и я надеюсь удачной, насколько она реализуема решать профессионалам, я в этом ламер.

А теперь сама ИДЕЯ.

Я подумал раз CB фильтр не понимает кирилицы, ну так и не нада, ему можно подсунуть для фильтрации его любимую латиницу и пусть фильтрует себе на здровье.

Привязываться я буду к Check Box (Multiple), ибо именно фильтр типа LIKE по полю данного типа мне очень нужен.
Так вот идея заключается в том чтобы в промежуток после получения данных из формы типа Check Box (Multiple) заполняемой пользователем и перед занесением их в БД MySQL вставить процедуру транслитерации этих данных в латиницу. Данные будут представлять из себя массив из одного и более слов в кирилице, которые и должны быть транслитированы.

Код функции транслитерации, найденый мной в просторах гугла:
Код
function UpLow(&$string,$registr='up'){
$upper = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ';

$lower = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz';

if($registr == 'up') $string = strtr($string,$lower,$upper);
else $string = strtr($string,$upper,$lower);

} //function UpLow(&$string,$registr='up') может и не пригодится, но на всякий случай выложил.

 

function rus2lat($s) { // Функция обратимой перекодировки кириллицы в транслит.
// Сначала всё переводим в верхний регистр, причём не с помощью глючной strtoupper
UpLow($s);
//а потом только кириллицу в нижний

$s=str_replace('ЫА','yha',$s);
$s=str_replace('ЫО','yho',$s);
$s=str_replace('ЫУ','yhu',$s);
$s=str_replace('Ё','yo',$s);
$s=str_replace('Ж','zh',$s);
$rus = 'АБВГДЕЗИЙКЛМНОПРСТУФХЦ';
$lat = 'abvgdezijklmnoprstufxc';
$s = strtr($s, $rus, $lat);
$s=str_replace('Ч','ch',$s);
$s=str_replace('Ш','sh',$s);
$s=str_replace('Щ','shh',$s);
$s=str_replace('Ъ','qh',$s);
$s=str_replace('Ы','y',$s);
$s=str_replace('Ь','q',$s);
$s=str_replace('Э','eh',$s);
$s=str_replace('Ю','yu',$s);
$s=str_replace('Я','ya',$s);
$s=str_replace(' ','_',$s); // сохраняем пробел от перехода в %20
$s=str_replace(',','.h',$s); // сохраняем запятую
$s=str_replace('"','"',$s); // сохраняем кавычки
$s=rawurlencode($s); // Разрешённые символы URL - латинские буквы, точка, минус и подчёркивание
return $s;
} // function rus2lat($s)

Что мы результате получаем. В базе данных теперь у нас латиница, и по ней можно фильтровать наши поля в CB USER List. Чтобы латиница была только в нужном нам столбце можно организовать проверку по имени поля, а в админке добавить возможность выбора в виде чекбокса адаптировать или нет данное поле для фильтра. Так же нужно чтобы в админке была возможность посмотреть вариант данных в латинице(будет нужно для того чтобы создавать фильтры, хотя с другой стороны можно будет в MySQL глянуть).

Но если данные будут транслитированы то и отображаться в профиле они будут тоже латиницей. Для того чтобы такого не происходило перед выводом этих данных, их нужно будет транслитировать обратно. Код обратной транслитерации приведен ниже:
Код

function lat2rus($s) { // Функция обратной перекодировки транслита в кириллицу
$s=rawurldecode($s);
$s=str_replace('.h',',',$s);// возвращаем запятую
$s=str_replace('_',' ',$s);// возвращаем пробел
$s=str_replace('yh','Ы',$s);
$s=str_replace('yu','Ю',$s);
$s=str_replace('ya','Я',$s);
$s=str_replace('yo','Ё',$s);
$s=str_replace('shh','Щ',$s);
$s=str_replace('eh','Э',$s);
$s=str_replace('sh','Ш',$s);
$s=str_replace('ch','Ч',$s);
$s=str_replace('qh','Ъ',$s);
$s=str_replace('zh','Ж',$s);
$lat = 'abvgdezijklmnoprstufxcyq';
$rus = 'АБВГДЕЗИЙКЛМНОПРСТУФХЦЫЬ';
$s = strtr($s, $lat, $rus);
return $s;
} // function lat2rus($s)


Прямая и обратная транслитерации полностью обратимы на 100% - проверено!

Вот и все.
Только вот осуществить идею мне пока не по силам, не достаточно знаний (((
« Последнее редактирование: 16.05.2010, 00:06:36 от orsy »
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Re: CB User List почему не работает фильтр?
« Ответ #1 : 14.05.2010, 19:49:47 »
Скажите хоть на сколько это реально и стоит ли выделка овчинки?
« Последнее редактирование: 16.05.2010, 00:08:04 от orsy »
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
Слишком сложно все, проще способ есть.

После создания самого значения Field Manager'e, в базу заносятся кракозябры.
Вот то, что занеслось, заменяем на нормальный текст в кодировке UTF-8.

Все фильтры юзерлистов будут работать.
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Слишком сложно все, проще способ есть.

После создания самого значения Field Manager'e, в базу заносятся кракозябры.
Вот то, что занеслось, заменяем на нормальный текст в кодировке UTF-8.

Все фильтры юзерлистов будут работать.


у меня значения вариантов мультичекбокса в базе не крякозябрами, а нормальным тектом...
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
UTF-8?
У меня аналогично - все работает
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
UTF-8?
У меня аналогично - все работает

у меня в базу крякозябры заносятся только в ячейку с данными для фильтра
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
Все верно, а когда меняешь кракозябры на валидные значения не меняя синтаксис, что происходит?
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Данных вариант решения есть на данном форуме, но он у меня почему-то не работает ((( и еще прикол такой фильтр LIKE так же не хочет у меня работать с числами и с численно буквенными значениями(имеется ввиду латиница). Работает только с чистой латиницей (((
*

SSStylish

  • Захожу иногда
  • 197
  • 10 / 0
Если не работает, копай синтаксис
Вот пример с моей базы:
s(`cb_searched` ='1' AND `cb_xcity` LIKE'Астрахань')
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Если не работает, копай синтаксис
Вот пример с моей базы:
s(`cb_searched` ='1' AND `cb_xcity` LIKE'Астрахань')

уверен проблема действительно в синтаксисе, только вот куда копать не пойму, при прямом запросе к базе данных метод фильтрации типа LIKE работает на ура, видимо CB неверно строит запрос, только вот где он строит этот запрос я не могу найти...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ищу фильтр, выбор Область-Город и звуковой сигнал на новые объявления - кто знает?

Автор nick71

Ответов: 0
Просмотров: 1331
Последний ответ 24.03.2015, 13:11:17
от nick71
Заголовок списка (List) в теге h1 - как сделать?

Автор andre46

Ответов: 1
Просмотров: 1447
Последний ответ 14.02.2015, 17:05:17
от andre46
Нет доступа в User Manager

Автор Tier_WerWolf

Ответов: 0
Просмотров: 1462
Последний ответ 03.11.2013, 11:30:19
от Tier_WerWolf
Не работают вкладки Configuration и User Management

Автор Babyaka

Ответов: 2
Просмотров: 2101
Последний ответ 08.07.2013, 15:47:17
от Babyaka
Фильтр по полу в поиске и user листе

Автор rbarom

Ответов: 1
Просмотров: 1753
Последний ответ 02.08.2012, 06:56:58
от AlexSmirnov