Ответить

Не знаю, нужно ли эту функцию добавлять в cms и в таком виде, поэтому решил тут спросить.
Up: отправил , добавляющий фичу в cms
Автодополнение сделано просто: в html5 есть тег <datalist>, который добавляет список вариантов под полем ввода. Все БРАУЗЕРЫ этот тег уже понимают.
А варианты добавляются аяксом в блок datalist.
Есть фильтрация htmlspecialchars и отключение показа своего же ника.
Установка:
В modules/users/index.php перед последней фигурной скобкой добавить:
В template/шаблон/html/users/sendmessageform.html
инпуту, в котором вводится имя получателя, дописать list="findusers"
под инпутом добавить:
1
Автодополнение ника получателя при отправке ЛС
Отправлено: 19 Мар 2013#1

Не знаю, нужно ли эту функцию добавлять в cms и в таком виде, поэтому решил тут спросить.
Up: отправил , добавляющий фичу в cms
Автодополнение сделано просто: в html5 есть тег <datalist>, который добавляет список вариантов под полем ввода. Все БРАУЗЕРЫ этот тег уже понимают.
А варианты добавляются аяксом в блок datalist.
Есть фильтрация htmlspecialchars и отключение показа своего же ника.
Установка:
В modules/users/index.php перед последней фигурной скобкой добавить:
Code:
public function search_niks()
{
if (empty($_GET['name'])) return;
$sql = "(SELECT * FROM `users` WHERE `name` LIKE '%".htmlspecialchars($_GET['name'])."%' ";
if (isset($_SESSION['user'])) {
$sql .= "AND `name` NOT LIKE '".$_SESSION['user']['name']."' ";
}
$sql .= "LIMIT 10)";
$users = $this->DB->query($sql);
if ($users) {
foreach ($users as $user) {
print '<option value="'.$user['name'].'">';
}
}
}
{
if (empty($_GET['name'])) return;
$sql = "(SELECT * FROM `users` WHERE `name` LIKE '%".htmlspecialchars($_GET['name'])."%' ";
if (isset($_SESSION['user'])) {
$sql .= "AND `name` NOT LIKE '".$_SESSION['user']['name']."' ";
}
$sql .= "LIMIT 10)";
$users = $this->DB->query($sql);
if ($users) {
foreach ($users as $user) {
print '<option value="'.$user['name'].'">';
}
}
}
В template/шаблон/html/users/sendmessageform.html
инпуту, в котором вводится имя получателя, дописать list="findusers"
под инпутом добавить:
Code:
$(function() {
$('[list=findusers]').keyup(function() {
if ($('[list=findusers]').val().length > 2) {
$.get('/users/search_niks/?name='+$('[list=findusers]').val(), {}, function(data){
$('#findusers').html(data);
});
} else {
$('#findusers').html('');
};
});
return;
});
<datalist id="findusers"></datalist>
$('[list=findusers]').keyup(function() {
if ($('[list=findusers]').val().length > 2) {
$.get('/users/search_niks/?name='+$('[list=findusers]').val(), {}, function(data){
$('#findusers').html(data);
});
} else {
$('#findusers').html('');
};
});
return;
});
<datalist id="findusers"></datalist>
Отредактировано автором 20 Мар 2013
Отправлено: 19 Мар 2013#2
А чем собственно эта функция может помешать? Она улучшит CMS и только. Надо еще для поиска такую штуку. И если вы думаете , что она кому то помешает, можно сделать кнопку вкл/выкл в админке.
Соразработчик Atom-M CMS
Отправлено: 19 Мар 2013#3
Врядли может помешать, просто хочется как можно меньше засорять движок, хочется там оставить только всё самое необходимое, а всякие рюшечки отделить от системного кода.
Хотя модули это не система, а этот код мало места занимает то наверное можно добавить.
Если поиск то что там выводить? Не совсем представляю. Если сразу искать материалы по запросу то выбрав определённый вариант хорошо бы сразу пересылать на страницу с этим материалом, ведь наверняка такое название будет единственным.
Если популярные запросы то так просто нельзя сделать, сейчас запросы в поиске нигде не сохраняются
Хотя модули это не система, а этот код мало места занимает то наверное можно добавить.
Если поиск то что там выводить? Не совсем представляю. Если сразу искать материалы по запросу то выбрав определённый вариант хорошо бы сразу пересылать на страницу с этим материалом, ведь наверняка такое название будет единственным.
Если популярные запросы то так просто нельзя сделать, сейчас запросы в поиске нигде не сохраняются
Отредактировано автором 19 Мар 2013
Отправлено: 20 Мар 2013#4
Поиск это уже более сложно. С поиска будет достаточно возможности поиска по отдельным категориям(форума, статей и т.д) . Более засорять двиг не надо.
Соразработчик Atom-M CMS
Отправлено: 20 Мар 2013#5
Сашка_из_Шебекино,
1) добавь ограничение, чтобы строка поиска была не менее 3 символов, чтобы снизить нагрузки на БД;
2) передавать имя лучше в GET, поскольку возможны проблемы с русскоязычными именами;
3) название функции стоило бы укоротить.
Возможно стоило бы как-то кешировать список пользователей, чтобы не дергать БД каждый раз.
1) добавь ограничение, чтобы строка поиска была не менее 3 символов, чтобы снизить нагрузки на БД;
2) передавать имя лучше в GET, поскольку возможны проблемы с русскоязычными именами;
3) название функции стоило бы укоротить.
Возможно стоило бы как-то кешировать список пользователей, чтобы не дергать БД каждый раз.
Отправлено: 20 Мар 2013#6
1-3 выполнил, отправил коммит, добавляющий фичу в cms, кэширование сделаю позже, если никто не опередит
Отправлено: 21 Мар 2013#7
так вроде как это не автодополнение ника, а автоподбор по началу.
Все мое имхо...
------
Не флуди и не да зафлудим будешь!
------
Не флуди и не да зафлудим будешь!
Отправлено: 21 Мар 2013#8
Ater, автоподбор это вроде как генерирование, а тут именно поиск и дополнение.
Ну не важно, это в коде нигде не подписано
Ну не важно, это в коде нигде не подписано
1
Зарегистрируйтесь или авторизуйтесь что бы писать
Сейчас online: 10. Зарегистрированных: 0. Гостей: 10.
