Страница 1 из 14

[Модуль] ChatBox (app_chatbox)

Добавлено: Сб ноя 15, 2014 2:56 pm
ksgroup
Многие из нас видоизменяют систему под свое видение. Большинство ограничиваются визуальными изменениями. Но есть моменты где изменить визуальное отображение так как хочется невозможно без редактирования кода системы. К сожалению любые изменения будут потеряны при новом обновлении системы. К счастью Сергей позаботился о таких как мы и предложил некоторые механизмы, которые позволяют сохранить изменения. Естественно изменения должны быть сделаны с учетом этих механизмов. Соответственно можно изменять как угодно шаблоны html хранящиеся в папке trmplates, но для того что бы изменения не были потеряны при обновлениях, нужно помещать отредактированные шаблоны в папку templates_alt. Со скриптами .php так не выйдет, поэтому менять какие либо функции нельзя, зато можно создавать свои функции, помещая свои файлы .php в папку lib. Все php файлы в этой папке автоматически подключаются к системе и находящийся в них код функций может быть вызван в любом месте системы.
Теперь от теории к практике :)
Однажды мне надоел внешний вид окна с логом сообщений Алисы. Он был грустно-черно-белый. В шаблонах html изменить можно было только глобально цвет всех сообщений. Это же не интересно правда? К тому же все сообщения были только от Алисы, либо от пользователя который дает команды Алисе. Поскольку в моей системе таких пользователей только один (Это я),мне пришла в голову идея разделить сообщения от разных подсистем умного дома. Ну что бы не все сообщения шли от Алисы, а от системы вентиляции свои сообщения, от системы управляемых электросистем свои и т.д. Покопавшись в функции say() я заметил что в ней принудительно прописывается ID пользователя Алисы - именно поэтому все сообщения в логе отображаются от нее. Поскольку функцию менять нельзя, потому что все равно при обновлении системы изменения потеряются, я создал свою функцию saydym() которая в точности повторяет стандартную say(), но ID пользователя в ней можно задать какой угодно. Создав пользователей с именами подсистем умного дома я получил возможность персонифицировать сообщения. Теперь когда произносится время каждый час, в логе оно отображено от имени пользователя "Часы", а когда пропадает связь с глобальной сетью - от пользователя "LAN". Таких пользователей может быть сколько угодно. Алиса тоже никуда не делась - ее ID как и раньше 0! Есть в функции saydym() еще один приятный бонус. Вам не надоел однообразный "бим-бом" при сообщениях? Мне надоел. Покопавшись в сети я "нарыл" еще несколько прикольных звучков. Можно конечно переименовать свой файл в dingdong.mp3 и он будет проигрываться вместо стандартного, но я решил получить выбор, поэтому в моей функции можно задавать один из четырех звуковых файлов. Кроме того существуют моменты когда нужно заставить систему гарантировано не проигрывать этот файл, а просто произнести сообщенние - такая возможность тоже есть.
Теперь о формате вызова функции - все осталось как в стандартном say(), но функция получила два дополнительных аргумента на входе. Синтаксис следующий: saydym('текст сообщения',аргумент1,аргумент2,аргумент3). Теперь подробнее:
"Текст сообщения" - ну тут пояснения не нужны
Аргумент1 - как и в родной функции это уровень важности сообщения
Аргумент2 - выбор файла "бим-бом" где:
0 - файл "бим-бом" принудительно не проигрывается
1 - стандартный файл dingdong.mp3
2 - файл tone1.mp3
3 - файл tone2.mp3
4 - файл tone3.mp3
Свои файлы нужно положить в папку /sounds и дать им соответствующие названия. Естественно звуковые файлы должны иметь сжатие mp3.
Аргумент3 - ID пользователя системы. Этот ID можно увидеть после установки моего модуля в систему, зайдя в панель управления, вкладка "Программы", пункт "ChatBox by DYM". (Про модуль ниже)

Ну вот - лог стал информативнее, но все еще довольно грустный. Решил я его раскрасить. Для этого пришлось написать свой модуль повторяющий функции стандартного shoutbox, плюс выполняющий мои задумки. Такой модуль был создан. Скрин его работы:
Изображение
Теперь при обновлениях системы, мой модуль не затирается и продолжает работать.
О модуле:
Модуль может отображать имена пользователей, либо их аватары. Аватары добавляются в стандартном редакторе пользователей в панели управления. Если аватар не установлен модуль отображает Имя пользователя, иначе аватар. Цвет строки сообщения от каждого конкретного пользователя задается тоже в редакторе пользователей в строке "Хост" (Не по назначению конечно поле использовал, но это позволило не вносить изменений в таблицу). Задается значение в стандартном html формате #00FF00.
Теперь об использовании модуля. Все просто. Используется так же как и стандартный лог Алисы. Создайте в домашних страницах html блок с содержимым [#module name="app_chatbox" limit="50" reverse="1" mobile="1"#]

Модуль выложил для ознакомления. Возмоно позже он появится в маркете. Кому интересно вы можете скачать модуль здесь http://kda.kiev.ua/app_chatbox.zip. Хочу предупредить - у меня МЖД установлен на Linux. Работоспособность под Win не проверялась, но думаю все будет работать. Для установки распакуйте архив с соблюдением папок в корень МЖД.

Обсуждать будем здесь. Жду замечаний и предложений.

Re: Альтернативный лог сообщений Алисы

Добавлено: Сб ноя 15, 2014 5:29 pm
sregeipt
красивый модуль давно хотел что то подобное!! автору спасибо))) ТЕСТИРУЕМ!

Re: Альтернативный лог сообщений Алисы

Добавлено: Вс ноя 16, 2014 7:33 am
sregeipt
sregeipt писал(а):красивый модуль давно хотел что то подобное!! автору спасибо))) ТЕСТИРУЕМ!
под вин хп пока работает стабильно звуки выбираются пользователи тоже все работает Спасибо

Re: Альтернативный модуль лога сообщений Алисы

Добавлено: Вс ноя 16, 2014 2:36 pm
Amarok
А как его в меню сунуть?

Re: Альтернативный модуль лога сообщений Алисы

Добавлено: Вс ноя 16, 2014 2:39 pm
ksgroup
BlackWarrior писал(а):А как его в меню сунуть?
Да так же как и стандартный shoutbox, вот только не уверен что по ширине подойдет. Я в меню его совать не пробовал, мне чат Алисы в меню мешает.

Re: Альтернативный модуль лога сообщений Алисы

Добавлено: Вс ноя 16, 2014 2:44 pm
Amarok
Эту штуку бы в маркет...

Re: Альтернативный модуль лога сообщений Алисы

Добавлено: Вс ноя 16, 2014 2:55 pm
Amarok
А у меня Хост (адрес) (не обязательно): используется по прямому назначению. Как быть? :cry:
Может выпустить модуль и в нем цвета задавать? Пазяаааста :roll:

Re: Альтернативный модуль лога сообщений Алисы

Добавлено: Вс ноя 16, 2014 3:00 pm
ksgroup
BlackWarrior писал(а):А у меня Хост (адрес) (не обязательно): используется по прямому назначению. Как быть? :cry:
Может выпустить модуль и в нем цвета задавать? Пазяаааста :roll:
А по какому назначению, если в системе это поле нигде не используется?

Re: Альтернативный модуль лога сообщений Алисы

Добавлено: Вс ноя 16, 2014 3:03 pm
Amarok
Используется. Если в это поле вбить IP пользователя, то система по нему определяет пользователя. У меня так разграничение меж тремя людьми сделано

Re: Альтернативный модуль лога сообщений Алисы

Добавлено: Вс ноя 16, 2014 3:17 pm
ksgroup
BlackWarrior писал(а):Используется. Если в это поле вбить IP пользователя, то система по нему определяет пользователя. У меня так разграничение меж тремя людьми сделано
У меня пользователь один, поэтому я и использовал это поле. Можно переделать под поле "SKYPE"