jWB - Создание Класса Разработки
( Development Class)
ВВЕДЕНИЕ
jBASE для Web Builders поставляется с богатым набором классов
разработки, которые призваны удовлетворить потребности большинства
пользователей в разработке web-сайтов с поддержкой транзакций.
Однако для пользователей существует возможность, а иногда и необходимость,
разработать свои собственные классы.
Такая функциональность позволяет пользователям приспособить IDE
к своим собственным требованиям и предоставляет достаточную гибкость
jWB, поддерживая необходимые изменения на уровне требований времени.
В этом документе поясняется, как пользователь может создавать
эти новые классы и интегрировать их со средой разработки jBASE
for Web Builders.
ОБЗОР
Классы разработки - jBASE for Web Builders development classes
построены из процедуры разработки (development routine), обычно
имеющей префикс 'syse', и процедуры исполнения (run time routine),
обычно имеющей префикс 'syso', а также иконок Selected и Unselected.
Эти процедуры указывают, что будет показано во время редактирования,
когда пользователь выбирает класс разработки и помещает его на
страницу, и во время исполнения, когда страница отображается для
пользователя.
Каждый класс также имеет определенный набор свойств, которые
показаны в панели свойств (properties pane) при выборе этого конкретного
объекта.
ПОСТРОЕНИЕ КЛАССА РАЗРАБОТКИ
Класс web-проектировщика позволит нам включение тэга 'Mail To',
с помощью которого пользователь сможет отправлять почту - email
по указанному адресу.
Стартуйте jWB, затем развернимте меню 'Configuration' и выберите
'Development Classes'. Будет показан список существующих классов
разработки. Выберите режим добавления нового элемента 'Add a New
Item' и затем при запросе введите 'usrmailto'. Откроется экран
'Editing Class' для нового класса.
В поле описания введите 'MAILTO anchor Tag'. В поле 'Run Time
Routine' введите 'usromailto' и затем выберите кнопку после поля
для того, чтобы открыть окно редактирования.
Эта процедура будет вызвана при отображении страницы, когда будет
генерироваться html для объектов 'Mail To'.
Начинается html с символов '<a' - они указывают, что мы имеем
дело с "анкерным" тэгом (anchor tag), т.е. с "якорем".
Затем генерируется 'href' для целевого адреса email путем конкатенации
текста 'mailto:', являющегося указанием тэга mail-to tag, со свойством
'Email Address' нашего объекта.
Затем процедура проверяет, заполнены ли другие поля свойств,
и добавляет их к тэгу html там, где это нужно. Наконец, процедура
вставляет содержимое свойства 'Text' и производит закрытие тэга
с помощью '/a>'.
Вставьте в окно редактора следующую процедуру:
SUB usromailto(html)
*--- включение блока common block
INCLUDE sysbp syscommon
*--- начало тэга anchor tag
html = \<a\
*--- устанавливаем ссылку href, если имеется
IF sysobjrec<10,2> = "" THEN
html := \ href=mailto:"javascript:void(0)"\
END ELSE
html := \ href='mailto:\:sysobjrec<10,2>:\'\
END
*--- стиль - style
IF sysobjrec<10,3> THEN
html := \ style="\:sysobjrec<10,3>:\"\
END
*--- класс - class
IF sysobjrec<10,4> THEN
html := \ class="\:sysobjrec<10,4>:\"\
END
*--- вставляем событие фокуса - focus event
IF sysobjrec<10,5> # "" THEN
html := \ onfocus="\:sysobjrec<10,5>:\"\
END
*--- вставляем событие изменения - change event
IF sysobjrec<10,6> # "" THEN
html := \ onchange="\:sysobjrec<10,6>:\"\
END
*--- вставляем событие blur event
IF sysobjrec<10,7> # "" THEN
html := \ onblur="\:sysobjrec<10,7>:\"\
END
*--- добавляем текст (выбирая language в account
captiontext = ""
IF sysobjrec<10,1> # "" THEN
*------ set default position for field statement in case
where no multi-language
pos=1
*------ check if this user has a non-default language specified
IF sysuserrec<23> # "" THEN
*--------- check if the language id is stored numerically or as
text
IF NUM(sysuserrec<23>) THEN
pos = sysuserrec<23>
END ELSE
LOCATE(sysuserrec<23>,sysparms,22;pos) ELSE pos = 0
END
*--------- increment location due to first item being default
english text
pos+=1
END
captiontext = FIELD(sysobjrec<10,1>,CHAR(129),pos)
*------ if text is blank then default to english text
IF captiontext = "" THEN
captiontext = FIELD(sysobjrec<10,1>,CHAR(129),1)
END
END
html := \>\:captiontext:\</a>\
*--- thats it
RETURN
Сохраните и скомпилируйте процедуру - Update и Compile.
В полях 'Unselected Icon' и 'Selected Icon' введите маршрут (path)
к тем иконкам, которые вы намерены использовать. Они появятся
в инструментальной линейке - jWB toolbar в верхней части экрана.
Затем введите 'usremailto' в поле 'Edit Routine', потом выберите
кнопку после поля, чтобы открыть окно редактирования.
Эта процедура будет определять, что произойдет во время процесса
редактирования - например, когда пользователь добавляет объект
такого типа в страницу или когда выполняет щелчок по существующему
объекту 'Mail To'.
Все, что будет отобразится на экране, будет либо содержимым свойства
'Text', если было введено какое-то значение, либо по умолчанию
'Selected Icon'.
Процедура также добавляет к объекту событие 'onclick' - так что
когда пользователь выполнит щелчок на конкретном объекте, соответствующие
свойства будут отображены в панели 'Properties Pane'.
Вставьте в окно редактирования следующую процедуру:
SUB usremailto(html)
*--- включение блока common block
INCLUDE sysbp syscommon
*--- открытие файлов
CALL sysopen("sysclasses",sysclasses,errhtml)
*--- генерация html
html = ""
alttxt = sysobjrec<10,1>
*--- если текст пустой
IF sysobjrec<10,1> = "" THEN
*------ получаем иконку по умолчанию из файла классов
READ clsrec FROM sysclasses,sysobjrec<1> THEN
img = clsrec<3,1>
IF INDEX(img,"{{",1) > 0 THEN
CALL sysftn(img)
END
html := \<img src="\:img:\"\
END
*------ вставляем скрипт
html := \ onclick="ObjLaunch('usrmailto','\:syshidden<1>:\','EDIT')"\
html := \ alt="\:alttxt:\" style="cursor:hand"\
html := \ border=0 align=top>\
END ELSE
*------ перемещение к properties on click
leadin = \<span onclick="ObjLaunch('usrmailto','\
leadin := syshidden<1>:\','EDIT')" style="cursor:hand"\
*------ и к заголовку - title
titletext=""
leadin := \ title="\:titletext:\">\
html=leadin:\<font color=#0000FF><u>\
:FIELD(sysobjrec<10,1>,CHAR(129),1)[1,50]:\</u></font></span>\
END
*--- выполняем возврат с html
RETURN
Сохраните и скомпилируйте процедуру - Update и Compile.
Четыре флажка (check boxes) определяют, где компонент появится
внутри jWB. Дополнительные переключатели класса - page, menu и
table sub class отражают, будет ли класс появляться в инструментальной
линейке (toolbox) при редактировании страницы - page, меню - menu
или таблицы - table. Отдельный флажок (check box) указывает, что
класс будет появляться в главном меню разработчика - main jWB
development menu. Отметьте флажок 'Stand Alone', и затем введите
следующие свойства.
Наконец, выберите кнопку 'Update Class', и теперь новый класс
разработчика - development class будет создан.