Чтение онлайн

ЖАНРЫ

Разрботка расширений для CMS Joomla
Шрифт:

где

$tooltip - текст подсказки; $title - название подсказки или ассоциативный массив с ключами title, image, text, href, alt и соответствующими значениями; $image - изображение, для которого будет выводиться подсказка (если не задано значение $text); $text - текст, для которого будет выводиться подсказка (если не задано значение $image); $href - URL, на который будет произведен переход по щелчку на изображение или текст; $alt - значение атрибута alt тега <img>; $class - название класса элемента <span>, в который будет заключен тег <img>.

Изображение

с подсказкой:

echo JHTML::tooltip('Текст подсказки', 'Заголовок подсказки', 'tooltip.png', '', 'http://www.mysite.ru');

Текст с подсказкой:

echo JHTML::tooltip('Текст подсказки', 'Заголовок подсказки', '', 'Наведите на этот текст курсор мыши, чтобы увидеть подсказку');

Поддерживающие классы

Рассмотрим некоторые методы поддерживающих классов. Полный список этих методов можно найти в документации, однако на текущий момент она не достаточно полная и содержит ошибки, поэтому для детальной справки по какому-либо методу вы можете обратиться напрямую к исходным кодам в папке /libraries/joomla/html/html.

JHTMLBehavior

Методы этого класса загружают код Javascript в заголовок документа. Методы JHTMLBehavior позволяют вывести календарь, дерево элементов, файловый загрузчик и некоторые другие элементы управления. Рассмотрим один из методов, позволяющий вывести всплывающее модальное окно без перезагрузки страницы:

void modal(string $selector = 'a.modal', array $params = array)

где

$selector - селектор класса; $params - массив параметров, ключи которого могут быть следующими: ajaxOptions, size, shadow, onOpen, onClose, onUpdate, onResize, onShow, onHide.

В следующем примере выводятся две ссылки. При нажатии на первую из них появляется всплывающее окно с изображением, на вторую - с веб-страницей.

<?php JHTML::_('behavior.modal'); ?> <a href="#" class="modal" rel="{size: {x: 100, y: 100}, handler:'iframe'}" >Щелкните, чтобы увидеть изображение</a><br/> <a href="#" class="modal" rel="{size: {x: 700, y: 500}, handler:'iframe'}" >Щелкните, чтобы открылось окно с веб-страницей</a>

Первое окно выглядит так, как на рис. 3.2.

(есть увеличенное изображение)

Рис. 3.2. Модальное окно

JHTMLEmail

Содержит один метод для скрытия адреса электронной почты в целях его защиты от спам-ботов:

string cloak(string $mail, bool $mailto=1, string $text='', bool $email=1)

где

$mail - e-mail; $mailto - выводить ли e-mail в виде ссылки <a href="#">…</a> или в виде текста; $text - текст этой ссылки; $email - является ли $text адресом электронной почты.

Пример:

echo JHtml::_('email.cloak', 'admin@mysite.ru', 1, 'Написать администратору', 0);

JHTMLForm

Содержит один метод, который возвращает код скрытого поля формы для уменьшения риска CSRF-атак: string token

Именем

получившегося элемента формы станет сгенерированная случайным образом строка, которая используется для проверки того, что запрос был сделан из конкретных формы и сессии.

Для предотвращения CSRF-атак вставляйте в каждую форму своего компонента строку:

<?php echo JHTML::_('form.token');?>

JHTMLGrid

Методы данного класса используются для вывода в таблице в панели управления таких элементов, как чекбокс, пиктограмма для переключения состояния " опубликовано"/"не опубликовано", для отображения заголовка столбца как ссылки для сортировки по этому столбцу и др.

Таблица должна располагаться внутри формы под названием adminForm, обязательно включающей два скрытых поля: boxchecked со значением по умолчанию 0 и task.

Для создания чекбокса используется метод

mixed id(int $rowNum, int $recId, bool $checkedOut=false, string $name='cid')

где

$rowNum - номер строки в таблице; $recId - id записи; $checkedOut - отмечен ли элемент; $name - имя элемента формы.

Метод возвращает html-код чекбокса, если элемент не отмечен, и пустую строку в противном случае.

Для создания пиктограммы, по щелчку на которой можно изменять значение поля published с 0 на 1 и обратно, используется

string published(mixed $value, int $i, string $img1 = 'tick.png', string $img0 = 'publish_x.png', string $prefix='')

где

$value - объект или только значение поля published; $i - номер строки в таблице; $img1 - изображение при published = 1; $img0 - изображение при published = 0; $prefix - префикс, который будет добавлен к названиям по умолчанию задач publish/unpublish.

Для примера выведем элементы массива $rows как строки таблицы, добавив для каждой записи ячейки с чекбоксом и значком "опубликовано"/"не опубликовано":

$k = 0; for ($i = 0, $n = count($rows); $i < $n; $i ++) { $row = &$rows[$i]; ?> <tr class="<?="row$k"?>"> <td><?=JHTML::_('grid.id', $i, $row->id)?></td> <td><?=$row->name?></td> <td align="center"><?=JHTML::_('grid.published', $row, $i)?></td> </tr> <?php $k = 1 - $k; }

Пример результата приведен на рис. 3.3.

(есть увеличенное изображение)

Рис. 3.3. Чекбокс и пиктограмма "опубликовано/не опубликовано"

Обратите внимание, что методы класса JHTMLGrid лишь отображают какой-либо элемент, но не добавляют код для его обработки. В приведенном выше примере кнопки "опубликовано"/"не опубликовано"отображаются, но не работают. Чтобы это исправить, необходимо зарегистрировать задачи publish и unpublish (если вы не изменили их названия, задав какой-либо префикс) и написать функцию для их обработки, которая будет вызывать метод JTable::publish.

JHTMLImage

Поделиться с друзьями: