Ответить

Не знаю, нужно ли эту функцию добавлять в cms и в таком виде, поэтому решил тут спросить.
Up: отправил , добавляющий фичу в cms
Автодополнение сделано просто: в html5 есть тег <datalist>, который добавляет список вариантов под полем ввода. Все БРАУЗЕРЫ этот тег уже понимают.
А варианты добавляются аяксом в блок datalist.
Есть фильтрация htmlspecialchars и отключение показа своего же ника.
Установка:
В modules/users/index.php перед последней фигурной скобкой добавить:
В template/шаблон/html/users/sendmessageform.html
инпуту, в котором вводится имя получателя, дописать list="findusers"
под инпутом добавить:
1
Автодополнение ника получателя при отправке ЛС
Отправлено: 19 Mar 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>
Edit by author 20 Mar 2013
Отправлено: 19 Mar 2013#2
А чем собственно эта функция может помешать? Она улучшит CMS и только. Надо еще для поиска такую штуку. И если вы думаете , что она кому то помешает, можно сделать кнопку вкл/выкл в админке.
Соразработчик Atom-M CMS
Отправлено: 19 Mar 2013#3
Врядли может помешать, просто хочется как можно меньше засорять движок, хочется там оставить только всё самое необходимое, а всякие рюшечки отделить от системного кода.
Хотя модули это не система, а этот код мало места занимает то наверное можно добавить.
Если поиск то что там выводить? Не совсем представляю. Если сразу искать материалы по запросу то выбрав определённый вариант хорошо бы сразу пересылать на страницу с этим материалом, ведь наверняка такое название будет единственным.
Если популярные запросы то так просто нельзя сделать, сейчас запросы в поиске нигде не сохраняются
Хотя модули это не система, а этот код мало места занимает то наверное можно добавить.
Если поиск то что там выводить? Не совсем представляю. Если сразу искать материалы по запросу то выбрав определённый вариант хорошо бы сразу пересылать на страницу с этим материалом, ведь наверняка такое название будет единственным.
Если популярные запросы то так просто нельзя сделать, сейчас запросы в поиске нигде не сохраняются
Edit by author 19 Mar 2013
Отправлено: 20 Mar 2013#4
Поиск это уже более сложно. С поиска будет достаточно возможности поиска по отдельным категориям(форума, статей и т.д) . Более засорять двиг не надо.
Соразработчик Atom-M CMS
Отправлено: 20 Mar 2013#5
Сашка_из_Шебекино,
1) добавь ограничение, чтобы строка поиска была не менее 3 символов, чтобы снизить нагрузки на БД;
2) передавать имя лучше в GET, поскольку возможны проблемы с русскоязычными именами;
3) название функции стоило бы укоротить.
Возможно стоило бы как-то кешировать список пользователей, чтобы не дергать БД каждый раз.
1) добавь ограничение, чтобы строка поиска была не менее 3 символов, чтобы снизить нагрузки на БД;
2) передавать имя лучше в GET, поскольку возможны проблемы с русскоязычными именами;
3) название функции стоило бы укоротить.
Возможно стоило бы как-то кешировать список пользователей, чтобы не дергать БД каждый раз.
Отправлено: 20 Mar 2013#6
1-3 выполнил, отправил коммит, добавляющий фичу в cms, кэширование сделаю позже, если никто не опередит
Отправлено: 21 Mar 2013#7
так вроде как это не автодополнение ника, а автоподбор по началу.
Все мое имхо...
------
Не флуди и не да зафлудим будешь!
------
Не флуди и не да зафлудим будешь!
Отправлено: 21 Mar 2013#8
Ater, автоподбор это вроде как генерирование, а тут именно поиск и дополнение.
Ну не важно, это в коде нигде не подписано
Ну не важно, это в коде нигде не подписано
1
Сейчас online: 2. Зарегистрированных: 0. Гостей: 2.
