О зимлетах №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>

Итог.

Мы рассмотрели все тэги. На самом деле не все. Остался один. Я о нем специально умолчал. Он не особенно важный, скажем даже, что совсем не важный. Однако для полной картины его надо знать. Но я тебе о нем рассказывать не буду, чтобы сподвигнуть интерес к его поискам. Попробуй найти его! Все необходимые ссылки в моих статьях предложены.

1529