Разрботка расширений для CMS Joomla - Страница 13

Изменить размер шрифта:

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

где

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

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

Щелкните, чтобы увидеть изображение
Щелкните, чтобы открылось окно с веб-страницей

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

Разрботка расширений для CMS Joomla - _17.jpg

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

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

JHTMLEmail

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

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

где

$mail - e-mail; $mailto - выводить ли e-mail в виде ссылки [email protected]">… или в виде текста; $text - текст этой ссылки; $email - является ли $text адресом электронной почты.

Пример:

echo JHtml::_('email.cloak', '[email protected]', 1, 'Написать администратору', 0);

JHTMLForm

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

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

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

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]; ?> "> id)?> name?>

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

Разрботка расширений для CMS Joomla - _18.jpg

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

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

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

JHTMLImage

Содержит два метода для поиска изображения в фронтенде и бэкенде соответственно. Каждый из них ищет либо изображение из директории images текущего шаблона сайта/панели управления, либо, если файла с заданным именем там нет, изображение из заданной директории.

string site(string $file, string $folder = '/images/system/', int $altFile = null, string $altFolder = '/images/system/', string $alt = null, array $attribs = null, bool $asTag = true) string administrator(string $file, string $folder = '/images/', int $altFile = null, string $altFolder = '/images/', string $alt = null, array $attribs = null, bool $asTag = true)

где

$file - имя файла; $folder - путь к файлу. Будет использован, если в директории images текущего шаблона не нашлось файла с заданным именем; $altFile - если не задано, то используются значения $file и $folder, при $altFile = -1 метод возвращает пустую строку, при других значениях используются $altFile и $altFolder; $altFolder - другой путь к файлу; $alt - будущее значение атрибута alt; $attribs - ассоциативный массив атрибутов; $asTag - вернуть весь тег с его содержимым или только путь.

Пример:

echo JHTML::_('image.site', 'notice-info.png', '/media/system/images/');

JHTMLList

Методы класса JHTMLList используются для создания списков некоторых значений.

Список для выбора одного из существующих в Joomla уровней доступа

string accesslevel(object &$row)

где $row - объект, имеющий поле access.

Пример:

$query = 'SELECT id,access FROM #__content WHERE id = 1'; $db =& JFactory::getDBO(); $db->setQuery($query); $article = $db->loadObject(); echo JHTML::_('list.accesslevel', $article);

Результат показан на рис. 3.4.

Разрботка расширений для CMS Joomla - _19.jpg

Рис. 3.4.  Список для выбора уровня доступа

Список для выбора изображения

array images(string $name, string $active = NULL, string $javascript = NULL, string $directory = NULL, string $extensions = "bmp|gif|jpg|png")

где

$name - имя поля; $active - выбранный по умолчанию элемент; $javascript - дополнительный код Javascript, который будет выведен внутри тега