Страница 1 из 8
[Разработчикам] Информация и рекомендации
Добавлено: Пт май 06, 2016 2:52 pm
Ivan
Материалы и информация
Видео
Файлы
Re: Разработка модулей (Рекомендации)
Добавлено: Пт май 06, 2016 3:21 pm
Ivan
В систему подписки а события добавлен механизм приоритетов и дополнительных параметров.
Теперь при установке в функции подписки необходимо указать приоритет модуля
Код: Выделить всё
function install($data='') {
subscribeToEvent($this->name, 'SAY', '', 10);
parent::install();
}
У данного модуля приоритет 10 (По умолчанию приоритет 0). Он запускается раньше чем другие модули. То есть чем выше приоритет тем раньше он в очереди
Также в processSubscription добавлен массив &$details в который каждый модуль может оставить информацию для других модулей.
Введённые переменные:
- ignoreVoice (NULL/false, true) она означает что для следующий модулей не нужно произносить фразы
Для чего это нужно. Например я ставлю 2 модуля: "Yandex TTS" и "Festival TTS". Если модуль "Yandex TTS" смог произнести фразу, то он устанавливает переменную ignoreVoice=true и "Festival TTS" уже не произносит её.
Это нужно для того чтобы система смогла проговорить даже если нет интернета.
Также модно реализовать другие взаимодействия между модулями
Для отписки от событий в функцию uninstall() (или при других условиях) модуля нужно добавить unsubscribeFromEvent(...).
Re: Разработка модулей (Рекомендации)
Добавлено: Пт авг 05, 2016 1:31 am
Sas
Можно еще приоритет в минус, например для случая когда фраза вообще не должна произноситься?
сейчас любая фраза идет в голос и скачивает mp3 несмотря на уровень и уровень громкости
это должно чуть уменьшить нагрузку на систему и интернеты(те же 2/3/4г)
Re: Разработка модулей (Рекомендации)
Добавлено: Чт авг 18, 2016 11:40 am
nick7zmail
Вопросик по модулям...на этот раз по юзер-интерфесу...
Как создать в интерфейсе элемент меню?
Звучит туповато, но сформулировал как мог. Теперь разъяснения)) Скопировать HTML-код с описания библиотеки JQueryMobile вообще не проблема, назначить на него какой нить java-код тоже...
А как создать именно элемент меню? Там помимо самого (к примеру выключателя) есть обвес из java-скриптов, которые ожидают завершения выполнения, потом прописывают "ОК", плюс у каждого элемента свои #ID#.
Ну и, наверное, пример)) Есть в таблице несколько записей, есть поле, к примеру "STAT", значения соответственно 1/0. Нужно чтобы при конструкции формата
...ну или как там модули вызываются...выводилось, скажем, несколько выключателей отображающих свойство STAT из таблицы у каждой записи. Аналогично со сценами...чтобы выводилась пачка элементов типа выключатель. Соответственно чтобы при перещелкивании они заносили соотв. значения в таблицу, и меняли свой статус.
Re: Разработка модулей (Рекомендации)
Добавлено: Пт авг 19, 2016 11:07 am
sergejey
Два варианта.
1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно
2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.
Лично мне больше нравится первый вариант для кастомного модуля.
Re: Разработка модулей (Рекомендации)
Добавлено: Пт авг 19, 2016 11:11 am
nick7zmail
sergejey писал(а):
1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно
Тогда еще вопрос - есть какие-нить мануалы по системным обработчикам, чтобы их прикрутить? Просто если есть системные скрипты - типа ожидания переключения выключателя - зачем я буду дублировать его? Или системными тут не воспользоваться?
sergejey писал(а):
2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.
Про это тоже можно по-подробнее? Как вариант - где инфу почитать?
Re: Разработка модулей (Рекомендации)
Добавлено: Пт авг 19, 2016 11:35 am
sergejey
nick7zmail писал(а):sergejey писал(а):
1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно
Тогда еще вопрос - есть какие-нить мануалы по системным обработчикам, чтобы их прикрутить? Просто если есть системные скрипты - типа ожидания переключения выключателя - зачем я буду дублировать его? Или системными тут не воспользоваться?
В таком варианте придётся дублировать. Даже не так -- делать упрощённую копию, т.к. текущие обработчик меню достаточно сложные из-за того, что там и AJAX и веб-сокеты. Проще всего использовать AJAX со своим модулем и всё.
nick7zmail писал(а):
sergejey писал(а):
2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.
Про это тоже можно по-подробнее? Как вариант - где инфу почитать?
Всё в лучших традициях -- нигде )) Сорри, но я при работе над проектами делаю некоторые фичи, которые нужны в данный момент и пригодятся на будущее, но их популярно описывать у меня уже времени не остаётся.
В общем, ниже пример кода, который удаляет элемент меню и создаёт его заново:
Код: Выделить всё
$system_name='mymodule_item_1';
$code='';
SQLExec("DELETE FROM commands WHERE SYSTEM='".$system_name."';
$item=array();
$item['SYSTEM']=$system_name;
$item['TITLE']='My Switch';
$item['TYPE']='switch';
$item['PARENT_ID']=0;
$code="include_once(DIR_MODULES.'mymodule/mymodule.class.php');"
$code.="$myModule=new mymodule();";
$code.="$myModule->processItemChange('".$system_name."',\$params['VALUE']);";
$item['CODE']=$code;
SQLInsert('commands',$item);
И соответственно в модуле должен быть метод processItemChange, который принимает два параметра -- системное имя и новое значение.
Re: Разработка модулей (Рекомендации)
Добавлено: Вт авг 23, 2016 6:18 pm
AuguR_S
Парни, помогите чайнику. А что это за синтаксис в .html - [#.............#] ???
Например тот же [#module name="имя модуля" mode="menu"#] или [#begin RESULT#]
[#end RESULT#]? Что курить на эту тему?
Re: Разработка модулей (Рекомендации)
Добавлено: Вт авг 23, 2016 7:20 pm
Alien
Покури где-то тут
http://majordomo.smartliving.ru/forum/v ... 0%B5%D0%B9 сразу действительно покурить нужно. Потом разбираешься
На форуме где-то есть два архивчика в зипах "написание модуля" и "шаблоны"
PS Вот хоть убей не могу найти где качал. Надеюсь мне за наглость не сочтется дублирование в этой ветке
Re: Разработка модулей (Рекомендации)
Добавлено: Вт авг 23, 2016 7:35 pm
AuguR_S
Спасибо. То что надо!