Оповещения

Материал из ISPWiki
Перейти к: навигация, поиск

Общее описание

В CORE 5 появился новый элемент рабочего - оповещения (блок с иконками сверху слева). По умолчанию он пустой и не отображается. Notify.png

Реализация

Чтобы добавить свою иконку в блок оповещений, необходимо добавить обработчик события notify, который добавит в xml описание необходимых элементов:

<doc ...>
  ...
  <notify>
    <item name="basket" action="longtask" img="p-newmsg" type="list">
      <msg>50</msg>
    </item>
    <item name="messages" action="journal" img="m-service" type="list">
      <msg>91</msg>
    </item>
    <item name="warning" action="problems" img="p-error" type="list">
      <msg>75</msg>
    </item>
  </notify>
  <timeout>30</timeout>
</doc>

Элемент notify

Содержит список элементов оповещения.

Элемент item

Содержит информацию об элементе оповещения, во вложенном элементе msg содержится текст который нужно отображать под иконкой.

атрибут img
название картинки, которую нужно отображать
атрибут action
имя ф-ции, которую надо позвать при клике по иконке
атрибут type
тип экшена, который нужно позвать, т.е. form, report или list
атрибут name
имя элемента, нужно для локализации подсказки, подсказка берется из локализованных сообщений секции <messages @name=notify/> по имени элемнта с префиксом hint_

Элемент timeout

Сожержит интервал в секундах, через который надо звать ф-цию для обновления данных

Обновление оповещений

Обновление оповещений происходит автоматически с указанным интервалом #Элемент timeout. Кроме того, вы можете потребовать обновления списка оповещений при закрытии формы, передав в метод Session::Ok значение Session::okNotifyUp или добавить вручную элементу ok атрибут @notifyup со значением yes.

Пример

Следующий пример демонстрирует, как добавить свою иконку в список оповещений.

class EventNotify : public Event {
public:
	EventNotify() : Event("notify", "test") {}
	virtual void BeforeExecute(Session &ses) const {
		auto notify = ses.NewNode("notify");
		auto item = notify.AppendChild("item");
		item.SetProp("name", "test");
		item.SetProp("action", "test.edit");
		item.SetProp("img", "p-camera");
		item.SetProp("type", "form"); 
		item.AppendChild("msg", "off");
		ses.NewNode("timeout", "10");
	}
};

Добавляем подсказку для нашей иконки:

<?xml version="1.0"?>
<doc>
  <lang name="ru">
    <messages name="notify">
      <msg name="hint_test">Пример подсказки</msg>
    </messages>
  </lang>
</doc>