В файле
includes/joomla.php описан класс
mosAdminMenus содержащий множество вспомогательных функций для создания различных списков и элементов интерфейса административной панели. В том числе, в нем присутствуют функции для создания списка изображений.
Самый простой способ добавить в компонент возможность пользователю выбирать изображения из списка, это воспользоваться статичной функцией
mosAdminMenus::Images, которая возвращает готовый элемент формы с заданным именем и позволяет задать активный элемент, корневую директорию и JavaScript для выполнения при изменении активного элемента списка.
function mosAdminMenus::Images( $name, $active, $javascript, $directory );
- $name — имя поля формы с выпадающим списком изображений
- $active — выбранный в настоящее время элемент в списке (NULL если новая запись)
- $javascript — JavaScript который будет выполнен по событию onchange списка. Если не задан, то при выборе элементов формы, по умолчанию текущее изображение будет отображаться в элементе формы с именем imagelib. Пример такого предпросмотра можно посмотреть в диалогах редактирования раздела/категории.
- $directory — директория из которой будут выбираться изображения
Пример использования функции
mosAdminMenus::Images
$lists['image'] = mosAdminMenus::Images( 'image', $row->image );
Для получения списка всех изображений сохраненных в поле images какого-либо объекта можно использовать функцию
mosAdminMenus::GetSavedImages которая возвращает уже готовый элемент формы с именем imagelist.
function GetSavedImages( &$row, $path )
- $row — объект, у которого в поле images хранится список изображений, разделенных символом |
- $path — путь к папке с изображениями
Кроме того, следует обратить внимание на дополнительные функции работы со списками изображений, добавленные в последних версиях Joomla (появились одновременно с возможностью выбора набора директорий с изображениями для каждой из категорий материалов). Эти функции позволяют задавать несколько корневых директорий для поиска изображений, возвращают не только списки изображений, но и списки директорий.
- mosAdminMenus::ReadImages
- mosAdminMenus::ReadImagesX
- mosAdminMenus::GetImages
- mosAdminMenus::GetImageFolders
Пример использования:
// calls function to read image from directory
$pathA = $mosConfig_absolute_path .'/images/stories';
$pathL = $mosConfig_live_site .'/images/stories';
$images = array();
$folders = array();
$folders[] = mosHTML::makeOption( '/' );
mosAdminMenus::ReadImages( $pathA, '/', $folders, $images );
// list of folders in images/stories/
$lists['folders'] = mosAdminMenus::GetImageFolders( $folders, $pathL );
// list of images in specfic folder in images/stories/
$lists['imagefiles'] = mosAdminMenus::GetImages( $images, $pathL );
// list of saved images
$lists['imagelist'] = mosAdminMenus::GetSavedImages( $row, $pathL );
Более сложный пример можно посмотреть в функции
editContent файла /administrator/components/com_content/admin.content.php