Language
Contacts
GitHub
Support
Registration
Enter
Login: Password: The autologin:
Users
Recent posts
Ответить
1

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

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

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Mar 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>

Edit by author 20 Mar 2013

boriska

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

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

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

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

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

Edit by author 19 Mar 2013

boriska

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

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

Wasja

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

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

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

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

Ater

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

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

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

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

1
Register или login что бы писать
Сейчас online: 12. Зарегистрированных: 0. Гостей: 12.