Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

Автодополнение ника получателя при отправке ЛС

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#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'].'">';
            }
        }
    }

В 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>

Отредактировано автором 20 Мар 2013

boriska

  • Атом-мозг
  • Пользователь
  • 846
  • Репутация:65 
  • Предупреждения: 0 
  • Регистрация:
    29 Янв 2013
#2
А чем собственно эта функция может помешать? Она улучшит CMS и только. Надо еще для поиска такую штуку. И если вы думаете , что она кому то помешает, можно сделать кнопку вкл/выкл в админке.

Соразработчик Atom-M CMS

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#3
Врядли может помешать, просто хочется как можно меньше засорять движок, хочется там оставить только всё самое необходимое, а всякие рюшечки отделить от системного кода.
Хотя модули это не система, а этот код мало места занимает то наверное можно добавить.

Если поиск то что там выводить? Не совсем представляю. Если сразу искать материалы по запросу то выбрав определённый вариант хорошо бы сразу пересылать на страницу с этим материалом, ведь наверняка такое название будет единственным.
Если популярные запросы то так просто нельзя сделать, сейчас запросы в поиске нигде не сохраняются

Отредактировано автором 19 Мар 2013

boriska

  • Атом-мозг
  • Пользователь
  • 846
  • Репутация:65 
  • Предупреждения: 0 
  • Регистрация:
    29 Янв 2013
#4
Поиск это уже более сложно. С поиска будет достаточно возможности поиска по отдельным категориям(форума, статей и т.д) . Более засорять двиг не надо.

Соразработчик Atom-M CMS

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#5
Сашка_из_Шебекино,
1) добавь ограничение, чтобы строка поиска была не менее 3 символов, чтобы снизить нагрузки на БД;
2) передавать имя лучше в GET, поскольку возможны проблемы с русскоязычными именами;
3) название функции стоило бы укоротить.

Возможно стоило бы как-то кешировать список пользователей, чтобы не дергать БД каждый раз.

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#6
1-3 выполнил, отправил коммит, добавляющий фичу в cms, кэширование сделаю позже, если никто не опередит

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#7
так вроде как это не автодополнение ника, а автоподбор по началу.

Все мое имхо...
------
Не флуди и не да зафлудим будешь!

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#8
Ater, автоподбор это вроде как генерирование, а тут именно поиск и дополнение.
Ну не важно, это в коде нигде не подписано

1
Сейчас online: 43. Зарегистрированных: 2. Гостей: 41.