Отправка личных сообщений (Ajax)

2481
Приветствую.

Выкладываю финальную версию плагина для отправки сообщений посредством аякса. Оформить это в формате плагина решил для того, чтобы максимально упростить его установку и в случае чего было бы так же просто его отключить.
Из особенностей могу выделить отправку сообщения через Enter либо Ctrl+Enter. Комбинацию выбирает сам пользователь и она запоминается для последующих сообщений (в cookies).


Окно для отправки открывается вместо стандартного при нажатии на "Написать сообщение" в профиле пользователя и само закрывается после успешной отправки. При отключенном javascript работает старый вариант с открытием новой страницы.

Скрин

Установка:

1. скачать архив
2. разложить файлы согласно инструкции в архиве
3. в файле templates/ВАШ_ШАБЛОН/components/com_users_profile.tpl заменить строку
Код PHP:
<td><a href="/users/{$usr.id}/sendmessage.html" title="{$LANG.WRITE_MESS}">{$LANG.WRITE_MESS}</a></td>
на
Код PHP:
<td><a id="messages" href="/users/{$usr.id}/sendmessage.html" title="{$LANG.WRITE_MESS}">{$LANG.WRITE_MESS}</a></td>
Добавится
Код PHP:
id="messages"
Делал для версии 1.9.

Скрытый текст виден только зарегистрированным пользователям
Стена пользователя в профиле "Как ВКонтакте" | Избавление от дублей страниц (?p=12)
Комментарии (63)
Jestik 15 марта 2012 в 21:42 +1
Большой, огромный, жирный ПЛЮС!!! спасибо огромное!
Эдуард Машковский 15 марта 2012 в 21:59 0
сделал ксс под себя и радуюсь))) вот: http:// www. achdo .ru
SJen 15 марта 2012 в 22:09 +4
ок, просто отлично, что не возникло проблем с установкой)
Эдуард Машковский 15 марта 2012 в 22:19 +1
я заметил что ты полностью cms на аякс перевести хочешь)
reload 15 марта 2012 в 22:25 0
а можно как то довентить чтоб по клику в переписке открывалось? а еще интересней в переписке добавить кнопочку "быстрый ответ")
SJen 15 марта 2012 в 22:34 0
все это будет вот тут.

В мини версии наворотов не планирую.
͡﴾͡๏̯͡๏﴿ 15 марта 2012 в 22:34 0
Хотелось бы еще чтобы окошко можно было двигать по экрану!Если можно-реализуй это! )
SJen 15 марта 2012 в 22:38 0
окно модальное, то есть блокирует все остальное - есть смысл его двигать по экрану? - реализовать то просто, нужно еще один файлик подключить (jquery, для перетаскивания). Но могут быть конфликты с чем-нибудь.. Да и просто не вижу в такой реализации добавлять перетаскивание.

Тут же просто - открыл, отправил и оно закрылось. Зачем его перетаскивать куда-то?)
͡﴾͡๏̯͡๏﴿ 15 марта 2012 в 22:41 0
Привычка )))
͡﴾͡๏̯͡๏﴿ 15 марта 2012 в 22:42 0
От месенджеров различных осталась)
Майкл 15 марта 2012 в 22:43 0
Вот спасибо!!!!!
Эдуард Машковский 15 марта 2012 в 22:44 -4
надо девушек в постель таскать, а не окошки) а на флеше можно было такую систему провернуть? красиво бы оформили...
SJen 15 марта 2012 в 23:22 0
можно и на флэше. Но тут есть зависимость от версии флэша у посетителей. Да и на actionscript я бы писал это в несколько раз дольше. Нет резона.
Майкл 15 марта 2012 в 22:45 0
А звуковое оповещение есть?
Эдуард Машковский 15 марта 2012 в 22:50 0
ты про систему сообщений или именно про этот плагин?
SJen 15 марта 2012 в 22:52 0
какое звуковое оповещение может быть если тут сервис только для отправки?)
Звук того, что сообщение отправилось? - нет, такого нет

Повторюсь - получение сообщений, быстрый ответ и еще много всего будет в полной версии.
Fuze 15 марта 2012 в 22:51 +3
Код PHP:
	$to_id = $_POST['user_id'];

заменить на

Код PHP:
	$to_id = $inCore->request('user_id', 'int', 0);
SJen 15 марта 2012 в 22:53 0
ок
Эдуард Машковский 15 марта 2012 в 22:57 0
а почему заменить?
SJen 15 марта 2012 в 23:00 +1
потому что нужно осуществить контроль входных данных
SJen 15 марта 2012 в 23:01 0
хотя в данном случае я не могу придумать примера, чтобы можно было что-то испортить, подменив данные:)
Замечание скорее на будущее
Fuze 15 марта 2012 в 23:13 +1
хотя в данном случае я не могу придумать примера, чтобы можно было что-то испортить, подменив данные:)
принцип такой: никому не верю и все проверяю всегда, даже если уверены в отсутствии потенциальной уязвимости. кстати sql inj тут явная.
SJen 15 марта 2012 в 23:20 +3
согласен, все верно - контроль данных должен быть. Файлы перезалил.
letsgo 16 марта 2012 в 00:08 -2
Я что то подумал, что конечная версия) Думаю да что ж такое то) Буду ждать платную версию)
Def 16 марта 2012 в 01:06 0
тогда сразу и здесь /users/1/messages.html заменить на новую ссылку)
Def 16 марта 2012 в 01:16 +1
перевести бы еще на аякс приглашение в друзья и вступление в группы)
Ne OS 16 марта 2012 в 01:39 +1
SJen

+

[/b]! Устанавливать не буду... жду платной и полной версии! Надеюсь цена не будет кусать кошелек...))
Black-Raven90 16 марта 2012 в 02:32 0
Отличный плагин +
Как раз его не хватало) А зачем в личных сообщениях кнопки "спойлер" и "скрытый текст"? Что можно в ЛС скрывать...
vitalson9 16 марта 2012 в 13:25 0
Вот тут /p_send_simple_message/ajax/sendform.php уберите вот эти строчки
Код PHP:
<a title="Вставить скрытый текст" href="javascript:addTag('content', '
Скрытый текст виден только зарегистрированным пользователям
')" class="usr_bb_button"> <img border="0" alt="Вставить скрытый текст" src="/includes/bbcode/images/hide.png"> </a> <a title="Вставить спойлер" href="javascript:addTag('content', '[spoiler=Спойлер]', '[/spoiler]')" class="usr_bb_button"> <img border="0" alt="Вставить спойлер" src="/includes/bbcode/images/spoiler.png"> </a>
и будет вам счастье)))))
Настёна 16 марта 2012 в 05:13 0
Спасибо за отличный плагин! Вот такой вопрос: у меня смайлы заменены полностью, и в аякс окне он не выводятся, так как там прописаны у вас стандартные, как прописать именно мои смайлы? Один смайл совпал по имени, выводится, но в сообщение его вставить не могу.
Настёна 16 марта 2012 в 05:20 0
Нашла в каком файле это все прописать, но можно сделать это проще? уж очень много у меня смайлов...
Александр 16 марта 2012 в 11:14 +1
спасибо, с утра настроение поднял, посмеялся )))
без обид.
удачи в освоении языков программирования)
много букафф, модно сделать в раз 10 короче и быстрее, но даже не в этом дело. так писать код не есть хорошо, каждая строчка - произведение искусства)
PS: если что, могу проконсультировать.
SJen 16 марта 2012 в 12:22 0
я не гордый, написал в личку)
SJen 16 марта 2012 в 13:50 0
только вот про "в 10 раз короче" не верю. Про быстрее вполне, вариант рабочий, но очень простой
Роман 16 марта 2012 в 14:40 +1
сделайте аналог этого плагина по всем правилам (с коментами)и опубликуйте. Начинающие посмотрят как надо писать правильно. Если не трудно конечно. Может кому-то пригодится :))
SJen 16 марта 2012 в 14:59 +2
Учитывая, что к коду были замечания от Fuze и Александра я бы не превращал плагин в пример для обучения новичков:)

Это простая рабочая версия отправки сообщений(работает без глюков, багов, без уязвимостей), которая будет полезна некоторым пользователям. Но на эталон написания плагина не тянет) А пример для новичков же уже есть в движке.
vitalson9 16 марта 2012 в 15:03 0
кстати глюк не большой есть когда появляется надпись сообщение отправлино то остаётся верх от основной формы
SJen 16 марта 2012 в 15:06 0
это не глюк, так сделано.
Глюк - это когда не работает то, что должно работать или работает не так, как должно) А в данном случае все задумано именно так - может не совсем красиво, но я прописал именно так.
stasis 16 марта 2012 в 11:30 0

+

на 1.9 работает...

СПАСИБО!

vitalson9 16 марта 2012 в 13:35 0
а возможно добавить добавление фото?
SJen 16 марта 2012 в 13:49 0
да, вполне
но тут просто подредактировав код не получится (так, как вы убрали спойлер)
vitalson9 16 марта 2012 в 14:20 0
но спойлер то тут точно не к чему и скрытие текста тоже вот я и убрал
SJen 16 марта 2012 в 14:40 0
а спойлер то почему не нравится? - ну если я отправляю кому-то огромный кусок текста. Почему бы его не заспойлить для удобства восприятия. Тем более если в сообщении два-три таких куска (или большая картинка)
Эдуард Машковский 16 марта 2012 в 14:42 +1
не слушай vitalson9. Фотки подгружать было бы неплохо.
vitalson9 16 марта 2012 в 14:45 0
в смысле не слушай я только за
SJen 16 марта 2012 в 14:55 +2
"не слушай" - это видимо про убрать спойлер.
Фотки, нужно - добавлю позже. Сейчас вся работа идет над полной версией)
Mazhara1986 16 марта 2012 в 17:13 0
Полная версия будет в одной инсталяшке?
SJen 16 марта 2012 в 17:38 +2
Не совсем понял вопроса. Полная версия будет, скорей всего, тоже в виде плагина. И для установки потребуется внести самые минимальные изменения в код шаблона.
VonKruger 17 марта 2012 в 03:09 0
SJen, спасибо огромное. Очень удобные и хорошие разработки.
mrDON 20 марта 2012 в 10:23 0
А когда приблезительно ждать полной версии?
SJen 20 марта 2012 в 12:42 0
На этой неделе выложу полную, планирую до 23 марта закончить.
mrDON 26 марта 2012 в 10:55 0
видимо планы поменялись))))
letsgo 26 марта 2012 в 11:40 -1
Нда тоже ожидаю сильно.
Алексей Тимофеев 25 марта 2012 в 05:14 -3
а у меня слетели табы в профиле
Артемий Б 29 июня 2012 в 23:36 0
Нашли решение?
d0th 15 апреля 2012 в 19:45 0
что нужно изменить чтобы эта фишка работала на 1.8?
SJen 15 апреля 2012 в 20:14 +1
обновите два файла отсюда.
Проверил, будет работать.

После обновления файлов переустановите плагин
d0th 13 мая 2012 в 17:02 0
Cпасибо!
lezginka.ru 11 мая 2012 в 07:09 0
не мог найти в плагине "Отправить группе" и "Отправить всем" ?
SJen 11 мая 2012 в 10:39 0
да, эту штуку в плагине действительно не получится найти)
Я сейчас добавил это в большую "систему переписки", а тут еще нет такой возможности.
Артемий Б 29 июня 2012 в 23:39 0
SJen, как быть с табами в Профиле?
BilarИuss выше уже говорил об этом...
Агроном 18 июля 2012 в 11:43 0
Похоже только у меня все сообщения отправленные через этот плагин админу приходят( Может кто столкнулся с подобным. Версия 1.9, кому бы пользователи не писали все приходит администратору.
fgvyguyu 22 августа 2012 в 22:48 0
Сколько ни пытался не работает(