Версия 6.5.4 - пользовательская реакция на клик
06/03/2018 11:58:53
Добавил возможность создания реакции на клик пользователя (только для программистов FoxPro).
Для чего нужно?
Представьте - у Вас есть некая таблица (к примерe - dbf, сама таблица может быть где угодно, в том числе - как часть базы данных той же MS SQL).
В таблице собраны ссылки, список которых должен АВТОМАТИЧЕСКИ формироваться на страницах по какому-то критерию (отбор по фильтру - тут показывать такие ссылки, тут - другие), но вид предложенных в объекте NEWS не устраивает (КСТАТИ, для использования NEWS особых знаний не нужно).
Конечно, можно сам список создать в визуальном редакторе, но сопровождение его в дальнейшем превращается в АД:
Вдруг нужно добавить новую ссылку? Список формируется в разных местах - придется везде ВСЕ ВРУЧНУЮ менять на ВСЕХ СТРАНИЦАХ - добавлять, изменять? Т.е. ВЕЗДЕ?
Поэтому можно поступить проще.
1. Создается таблица.
2. Создается форма (формы) для ее редактирования.
3. На странице, где предполагается редактирование данных (можно разместить везде, где только возможно) создается ссылка на запуск формы.
4. Во время визуального редактирования пользователь (по необходимости) кликает по ссылке - и далее редактирует данные уже в самой таблице.
5. При выходе из формы - страница перегенерится уже с новыми, измененными данными. Аналогично, автоматом переформируются и все страницы, которые используют код для вывода.
Несколько нюансов:
Форма ДОЛЖНА находиться в каталоге запуска программы.
Код должен располагаться в объекте HTML
ОБЯЗАТЕЛЬНО необходимо в полученный код вставить конструкцию вида [hidegenr]
`[hidegenr]<a href="VFF:///testtest with '1'">Редактировать таблицу Загрузок</a> `
Для чего? Дело в том, что пользовательский код для открытия формы НЕ ДОЛЖЕН попадать в страницу при окончательной генерации!
Т.е. возможность редактирования должна быть доступна только во время редактирования в редакторе, что код
`[hidegenr] Этот код не будет показан в окончательной странице ` и делает.
Примеры:
Пример для запуска формы - используется VFF- testtest.scx (ей сразу же можно и код передать) по клику на ссылке
`[hidegenr]<a href="VFF:///testtest with '1'">Редактировать таблицу Загрузок</a> `
И с картинками - что будет при нажатии ссылки ...
и что будет в окончательном варианте
Можно запускать не только формы, но и файлы prg - используется VFE - (так же - и с параметрами)
`[hidegenr]<a href="VFE:///prob_test with 'Привет всем'">Запуск программы prob_test.prg c параметром</a>`
Для вывода данных из таблицы, естественно НАДО воспользоваться кодом foxpro - для простых таблиц достаточно scan... endscan.
Ниже - пример моего вывода (c использованием глобальной переменной nacal_dire (каталог-программы, читерство же) и дополнительной таблицы a_list_of_prg_gr):
`
*[foxpro] LOCAL seles seles=SELECT() LOCAL dty,dty2 dty=nacal_dire+"\a_list_of_prg.dbf" SELECT * FROM (dty) ORDER BY porad_ DESC,datetime_ DESC INTO CURSOR spis_prg dty2=nacal_dire+"\a_list_of_prg_gr.dbf" SELECT * FROM (dty2) ORDER BY porad_ DESC INTO CURSOR spis_prg_gr LOCAL stka stka="" stka=stka+"<table border=0 width=100%>" SELECT spis_prg_gr SCAN stka=stka+"<tr><td align=center valign=top>" stka=stka+"<table width=100% border=1><tr><td align=center valign=top><b><font size=+1 color=blue>"+ALLTRIM(type_)+"</font></b>"+; IIF(NOT EMPTY(opis_),"<br><font size=-1>"+ALLTRIM(opis_)+"</font>","")+; "</td></tr></table>" stka=stka+"</td></tr>" SELECT spis_prg SCAN FOR parentg=spis_prg_gr.id_gr *and id_<>6 stka=stka+"<table width=100% border=0><tr>" stka=stka+"<td align=center valign=top width=30%><b>"+ALLTRIM(name_)+"</b>"+; IIF(NOT EMPTY(opis_),"<br><font size=-1>"+ALLTRIM(opis_)+"</font>","")+; "</td>" stka=stka+"<td align=center valign=top width=40%><b><a href='"+ALLTRIM(www_link)+"'>"+; IIF(EMPTY(ALLTRIM(text_link)) AND EMPTY(ALLTRIM(file_image)),ALLTRIM(www_link),ALLTRIM(file_image)+ALLTRIM(text_link))+; +"</a></b></td>" stka=stka+"<td align=left valign=top width=30%>"+; IIF(EMPTY(ALLTRIM(notes_link)) ," ",ALLTRIM(notes_link))+; +"</td>" stka=stka+"</tr></table>" stka=stka+"<tr><td align=center valign=top>" stka=stka+"<hr>" stka=stka+"</td></tr>" ENDSCAN SELECT spis_prg_gr stka=stka+"<tr><td align=center valign=top>" stka=stka+"<br><br><br>" stka=stka+"</td></tr>" ENDSCAN stka=stka+"</table>" SELECT spis_prg_gr USE SELECT a_list_of_prg USE SELECT spis_prg USE SELECT a_list_of_prg_gr USE SELECT (seles) RETURN stka`
Открывающиеся возможности не ограничиваются только запуском форм и программ для редактирования таблиц dbf.
В принципе, таким образом возможно редактирование любых файлов - текстовых, excel и прочих - или изменение таблиц той же MSSql (в форме нужно будет задать соотвествующий код).
Интересно, что теперь программа может быть использована не только в качестве генератора сайта