четверг, 9 апреля 2020 г.

SIL: как показать сообщение live fields каждому пользователю всего один раз?

Иногда возникает потребность показать информационное сообщение, но ВСЕГО ОДИН РАЗ - каждому пользователю, а не при любом движении или обновлении экрана. 
Это можно реализовать с помощью Live Fields.
Концепт реализации прост. Мы просто будем записывать во временный файл тех, кому мы сообщение показывали. 
Если смысл ясен - можете попробовать сделать его сами, а ниже решение.

Реализация

Для начала создадим нужный файл.
У меня есть папка, в корне: silprograms\infoMsg
Можно внутри этой папки разбить сообщения по папкам проектов. В текущем примере, их нет. 
Создаем temp.sil для создания файла. 
createFile("infoMsg/helloMsg.csv");
printInFile("infoMsg/helloMsg.csv""user");
Теперь мы создали файл. И записали первой строкой его "структуру".
Для самой простой реализации, все что нам надо - это имя пользователя. Файл temp.sil нам больше не потребуется (wink) Можно удалить. 
Далее отправляемся писать LiveFields для вывода сообщения

struct uname {
    string user;
}
 
uname [] fileContent = readFromCSVFile("infoMsg/helloMsg.csv"true);
 
if(!elementExists(fileContent, currentUser())){
    lfDialogMessage("ОДУМАЙСЯ и УДОЛИ!""SUCCESS");
    printInFile("infoMsg/helloMsg.csv", currentUser());
}
Данный код легко можно обернуть в какое-то дополнительное условие. Например показывать это только на экране просмотра или на экране создания. Т.е. так, как вам это будет необходимо. 
Собственно всё. Если опробовать в действии - перейти на страницу с сообщением, а затем посмотреть в csv файл - можно увидеть, что там добавится новая запись, ваше имя пользователя. И больше сообщение от live fields вы не увидите (wink) 

Комментариев нет:

Отправка комментария