О зимлетах №5: Более подробно о тэгах Definition File зимлета.
В этой обзорной статье рассмотрены те теги, которые не вошли в статью "О зимлетах №4". После прочтения Вы будете знать все о Definition файлах зимлетов.
Введение.
Здравствуй, уважаемый читатель. Перед твоими глазами вторая часть статьи о тэгах для Definition File зимлета. Перед прочтением оной советую ознакомиться с первой частью, имеющей название «Изучаем Definition File зимлета. Все самое популярное».
В этой статье рассказывается об остальных тэгах Definiton File. Они используются довольно редко, по сравнению с тэгами из первой статьи, однако о них стоит знать, ведь они помогут сделать действительно продвинутый зимлет.
Я хочу знать все!
Теперь перейдем к рассказу о каждом тэге в отдельности. Напомню, что полную и официальную документацию можно найти здесь.
Тэг <includeCSS>.
Тэг, который указывает файл со стилями CSS. Стили будут применяться автоматически. Никаких дальнейших настроек не требуется. Имя файла со стилями должно быть уникально среди всех зимлетов, поэтому советуется добавлять имя зимлета к имени файла, чтобы исключить возможность пересечения имен.
Пример:
<includeCSS>http://my.server.com/styles.css</includeCSS> <includeCSS>styles.css</includeCSS>
Тэг <contextMenu>.
Данный тэг описывает всплывающее меню, которое появляется при нажатии правой кнопкой мыши на определенный тэгами <contentObject> или <zimletPanelItem> элемент. Внутри тэга обязательно должен быть вложен хотя бы один тэг <menuItem>.
Пример:
<contextMenu> <menuItem label="Test menu 1.0"id="TEST_MENU_SOME_ID1" /> <menuItem label="Test menu 2.0"id="TEST_MENU_SOME_ID2" /> <menuItem label="Test menu 3.0"id="TEST_MENU_SOME_ID3" /> </contextMenu>
Тэг <portlet>.
Тэг <portlet> позволяет интегрировать в интерфейс пользователя собственные портлеты. Портлеты — квадратные области с каким-либо содержанием. Его содержание может быть никак не связано с основным контентом. Самый простой пример портлетов — это виджеты на iGoogle (погода, календарь, почта, часы, бегающие за мышкой глаза и так далее). Внутри тэга может быть любой количество тэгов <portletProperties> , даже нулевое.
Пример:
<portlet> <portletProperties> <property type="string" name="url" label="URL" value="about:blank"/> <property type="number" name="refresh" label="Refresh (ms)" /> </portletProperties> </portlet>
Тэг <zimletPanelItem>.
Этот тэг позволяет размещать кнопочку зимлета на левой панели. Также он позволяет обрабатывать различные события, которые указаны в таблице. У тэга есть два атрибута, первый обязательный, второй нет. Это label — название, которое будет отображаться на панели, и icon — картинка, которая будет использоваться в качестве украшения.
Порядок |
Имя |
Количество |
Описание |
1 |
toolTipText |
только один |
Всплывающая подсказка |
2 |
dragSource |
любое количество |
Описывает объекты, которые могут быть перетащены мышкой на запись зимлета на левой панели |
3 |
onClick |
не более одного |
Действие, которое произойдет при нажатии левой кнопкой мыши на зимлете |
4 |
onDoubleClick |
не более одного |
То же самое, тольо рассматривается двойной кликов |
5 |
contextMenu |
не более одного |
Меню, которое появится при нажатии на зимлете правой кнопкой мыши |
Пример:
<zimletPanelItem label="Test Panel Item"> <contextMenu> <menuItem label="Test menu 1.0" id="TEST_MENU_SOME_ID1" /> <menuItem label="Test menu 2.0" id="TEST_MENU_SOME_ID2" /> <menuItem label="Test menu 3.0" id="TEST_MENU_SOME_ID3" /> </contextMenu> </zimletPanelItem>
Тэг <param>.
Тэг, который определяет любые параметры для других тэгов, требующие их. Должен обязательно иметь атрибут name.
Пример:
<actionUrl method="get" target="http://www.mapquest.com"> <param name="address">passing an address value for the address parameter</param> </actionUrl>
Тэг <menuItem>.
Тэг описывает элемент меню тэга <contextMenu>. Для создания горизонтальной разделительной черты внутри меню используй пустой тэг <menuItem />. У тэга есть несколько атрибутов:
Имя |
Обязателен |
Описание |
id |
нет |
Уникальное имя (идентификатор) элемента меню |
lable |
нет |
Метка элемента меню |
icon |
нет |
Иконка элемента меню |
disabledIcon |
нет |
Иконка, которая заменит основную, если элемент меню будет заблокирован (для блокировки используется код JavaScript) |
Следующие тэги могут быть внутри <menuItem>:
Порядок |
Имя |
Количество |
Описание |
1 |
menuItem |
любое количество |
Вложенный элемент меню |
2 |
canvas |
не более одного |
Внешний вид элемента меню, об этом тэге рассказано ниже |
3 |
actionUrl |
не более одного |
Ссылка, на которую произойдет переход при нажатии на соответствующий элемент меню, если этот тэг опущен, то выполнится функция menuItemSelected() из JavaScript файла |
Пример:
<contextMenu> <menuItem label="Test menu 1.0" id="TEST_MENU_SOME_ID1"> <canvas type="window" width="300" height="300" /> actionUrl method="get" target="http://www.yahoo.com" /> </menuItem> </contextMenu>
Тэг <toolTip>.
Тэг, который описывает всплывающую подсказку. Может иметь следующие атрибуты:
Имя |
Обязателен |
Описание |
sticky |
нет |
Если атрибуту присвоено значение true, то пользователь может нажать мышкой на всплывшее окошко подсказки (например на ссылку внутри него), если false — то при любом движении мыши подсказка незамедлительно исчезнет |
width |
нет |
Ширина всплывающей подсказки |
height |
нет |
Высота всплывающей подсказки |
Вложенными может быть всего один тэг:
Порядок |
Имя |
Количество |
Описание |
1 |
actionUrl |
не более одного |
Внутрь подсказки будет вставлена ссылка. Если этот тэг пропущен, то будет вызвана функция toolTipPoppedUp(), если sticky имеет значение true, то при закрытии подсказки будет вызвана функция toolTipPoppedDown() |
Пример:
<toolTip sticky=”true” width=”100” height=”200”> <actionUrl method=”get” target=”http://maps.google.com”> <param name=””>${src.objectContent}</param> </actionUrl> </toolTip>
Пример:
<toolTip sticky=”true” width=”100” height=”200”> This is the tool tip. </toolTip>
Тэг <matchOn>.
Тэг, который определяет «что надо найти» и «что после нахождения сделать». Поиск будет происходить в теле письма, его заголовке, заметках к контактам. Вложенным должен тэг <regexp>. Если он не указан, то произойдет вызов метода сопоставления из класса extensionClass. Это важно в тех случаях, когда не удается описать искомый фрагмент с помощью регулярного выражения.
Пример:
<matchOn> <regex attrs=”ig”>1[zZ]\\s?\\w{3}\\s?\\w{3}\\s?\\</regex> </matchOn>
Тэг <regex>.
Очень просто с точки зрения синтаксиса тэг. Имеет всего один опциональный атрибут attr. Внутри тэга задается регулярное выражение. А вот регулярное выражение создавать уже сложно. Возможно я о них расскажу в одной из своих следующих статей, а пока чуть более подробней о них можно узнать здесь.
Пример:
<regex attrs=”ig”>1[zZ]\\s?\\w{3}\\s?\\w{3}\\s?\\</regex>
Тэг <onClick>.
Действие, которое произойдет при нажатии на зимлет левой кнопкой мыши. Вложенными могут быть тэги canvas и actionUrl.
Пример:
<onClick> <canvas type="window" width="300" height="300" /> <actionUrl method="get" target="http://maps.google.com" /> </onClick>
Тэг <onDoubleClick>.
То же самое, что и предыдущий тэг, только рассматривается двойное нажатие левой кнопкой мыши.
Пример:
<onDoubleClick> <canvas type="window" width="300" height="300" /> <actionUrl method="get" target="http://maps.google.com" /> </onDoubleClick>
Тэг <canvas>.
Тэг, отвечающий за оформление выводимой информации. Имеет обязательный параметр type, который принимает значения none (ничего не выводить), dilog (выводить диалоговое окно), toolTip (выводить в виде подсказки), window (выводить информацию в отдельном окне). И несколько необязательных: width (ширина), height (высота), props (параметры, которые будут переданы новому окну, если type=window: toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes), title (заголовок).
Пример:
<menuItem label="First Context Menu Item - Go to Yahoo!" icon="Search" id="SOME_ID1"> <canvas type="window" width="800" height="600" /> <actionUrl target="http://www.yahoo.com" method="get" /> </menuItem>
Тэг <dragSource>.
Определяет типы перетаскиваемых элементов. Имеет единственный атрибут type, который может принимать значение ZmAppt, ZmConv, ZmContact, ZmFolder, ZmMailMsg, ZmNotebook, ZmTask.
Пример:
<zimletPanelItem label="Test Panel with Drag Source"> <dragSource type="ZmAppt" /> <dragSource type="ZmContact" /> </zimletPanelItem>
Тэг <actionUrl>.
Тэг, вызывающий внешнюю ссылку с параметрами или без. Атрибуты paramStart и paramJoin могут заменить соответствующие стандартные значения ? и &, определенные для методов HTTP. Method определяет HTTP метод, а target задает веб-сайт.
Пример:
<actionUrl target="http://www.yahoo.com" method="get"> <param name="someparamtopass">myvalue</param> </actionUrl>
Пример:
<actionUrl target="http://www.yahoo.com" method="get" />
Тэг <toolTipText>.
Тэг описывает всплывающую подсказку.
Пример:
<toolTipText>Drag and drop a contact</toolTipText>
Тэг <portletProperties>.
Данные тэг указывает на наличие у портлета свойств. Не имеет атрибутов. В теле задается тэг <property>.
Пример:
<portlet> <portletProperties> <property type="string" name="url" label="URL" value="about:blank"/> <property type="number" name="refresh" label="Refresh (ms)" /> </portletProperties> </portlet>
Тэг <userProperties>.
То же самое, что и предыдущий тэг, только задает свойства для пользователя.
Пример:
<userProperties> <property type="string" label="Your username" name="my_test_username" /> <property type="password" label="Your password" name="my_test_password" /> <property type="number" label="Your ID number" name="my_test_id_num" /> <property type="date" label="Delivery Date" name="my_test_delivery_date" /> <property type="boolean" label="Priority?" name="my_test_priority" /> <property type="enum" label="Shapes" name="my_test_shapes"> <item label="Square" value="square"/> <item label="Circle" value="circle"/> <item label="Rectangle" value="rectangle"/> </property> </userProperties>
Тэг <item>.
Описывает любой элемент. Тэг обычно используется внутри тэга <property>. Имеет атрибуты label и value, означающие метку и значение соответственно.
Тэг <property>.
Тэг обозначает некий параметр пользователя. Доступен из JavaScript через функцию getUserPropertyInfo().
Достучаться до параметра можно также через «${}» с использованием предварительного слова «prop.».
Пример:
<menuItem label="Test menu 2.0" id="TEST_MENU_SOME_ID2"> <actionUrl method="get" target="http://finance.yahoo.com"> <param name="whatismyparam">${prop.my_test_username}</param> </actionUrl> </menuItem>
У тэга есть следующие атрибуты:
Имя |
Обязателен |
Описание |
type |
да |
Тип параметра |
name |
да |
Имя параметра (как переменная в программировании) |
label |
нет |
Метка параметра, которая будет видна в редакторе параметров (словестное описание переменной) |
visible |
нет |
Видимость параметра в редакторе параметров |
value |
нет |
Стандартное значение параметра (так называемое «по умолчанию») |
readonly |
нет |
Параметр нельзя изменять |
required |
нет |
Параметр обязателен или нет |
Type может иметь различные значения, рассмотрим каждое:
- string
- minLength — минимальная длина строки;
- maxLength — максимальная длина строки;
- rows — количество отображаемых строк (в случае наличия элемента отображения).
- password
- minLength — минимальная длина строки;
- maxLength — максимальная длина строки.
- number
- minValue — минимальное значение;
- maxValue — максимальное значение.
- date
- нет дополнительных атрибутов.
- boolean
- нет дополнительных атрибутов.
- enum
- нет дополнительных атрибутов;
- использует тэг <item>.
Примеры:
<property type="string" name="home_currency" minLength="3" maxLength="3" label="Home Currency"/> <property type="password" name="passwd" minLength="4" maxLength="255" label="Password" /> <property type="number" name="WebExMax" label="Max # Of Meetings" /> <property type="date" label="Delivery Date" name="my_test_delivery_date" /> <property type="boolean" label="Priority?" name="my_test_priority" /> <property type="enum" name="chart_type" label="Ex-rate chart" value="H_2_O"> <item label="Home currency to other" value="H_2_O"/> <item label="Other to home currency" value="O_2_H"/> </property>
Итог.
Мы рассмотрели все тэги. На самом деле не все. Остался один. Я о нем специально умолчал. Он не особенно важный, скажем даже, что совсем не важный. Однако для полной картины его надо знать. Но я тебе о нем рассказывать не буду, чтобы сподвигнуть интерес к его поискам. Попробуй найти его! Все необходимые ссылки в моих статьях предложены.