Расширение "Альбом"

Расширение предназначено для вывода альбомов медиаданных: изображений, аудио- и видеофайлов. Оно позволяет:
представить заданную последовательность медиафайлов в виде таблицы уменьшенных изображений;
в диалоговом режиме менять способы представления и число столбцов альбома;
пошагово просматривать отдельные элементы альбома;
составлять выборки файлов, входящих в альбом;
включать выбранные медиафайлы в другие альбомы;
публиковать данные альбома для возможности коллективного доступа к их содержимому.
Для возможности полного использования возможностей расширения необходимо наличие в системе файлов albom.php, albkadr.php, albspis.php, albsf.php (не входят в базовую комплектацию).

Функция albom() - вывод альбома в табличном представлении

Функция albom(p) обеспечивает вывод альбома в табличном представлении. Её единственным параметром является массив или строка p, включающая параметры описания альбома в формате ключ:значение, разделённые пробелами. Параметрами могут быть:
d - указатель на массив с описанием данных и характеристик альбома;
w - ширина уменьшенного изображения;
h - высота уменьшенного изображения;
c - число столбцов в таблице представления альбома;
i - каталог уменьшенных изображений.
Обязательным параметром является только указатель данных d. Он должен указывать на файл или секцию, организованные как Массивы данных расширений.
В простейшем случае можно ограничиться только этим параметром, поскольку остальные будут заданы по умолчанию. Рассмотрим пример. В файле данной публикации имеется секция a1 следующего содержания:
$.x albom
$.n Альбом примера 1
/a1
shurem_kniga01.jpg
shurem_kniga02.jpg
shurem_kniga03.jpg
shurem_kniga04.jpg
shurem_ssg2.mp3
shurem_tekst.txt
shurem_kniga05.jpg
shurem_kniga06.jpg
shurem_kniga07.jpg
shurem_kniga08.jpg
shurem_kniga09.jpg
shurem_kniga10.jpg
dok_00.s
dfa_dfa.pdf
shurem_kniga11.jpg
shurem_kniga12.jpg
shurem_kniga13.jpg
shurem_kniga14.jpg
dok_dok.k
shurem_kniga15.jpg
shurem_ssg6.mp3
db/photo/vs/2021-08-17_16-25-22.mp4
shurem_kniga16.jpg
shurem_kniga17.jpg
shurem_kniga18.png
shurem_ssg7.mp3
db/photo/vs/2012-05-12_12-58-49.jpg
shurem_ssg1.mp3
//
Секция a1 содержит массив данных расширения "Альбом". Строго говоря, системные разделы этого массива (начинаются со знака $), здесь не обязательны. Но их рекомендуется задавать (хотя бы $.x albom - указание на тип расширения), поскольку в этом случае, при наличии нескольких секций с массивами данных в статье можно организовать меню их выбора. Если задан и не пуст раздел $.n, то его содержимое будет выводиться как заголовок альбома. Данные альбома могут задаваться произвольным числом не системных секций, которые могут именоваться как угодно. Однако имя не должно начинаться с символа $ и должно состоять более, чем из одного символа. Все не системные разделы массива данных при формировании альбома объединяются, формируя единый список источника данных.
Файлы списка могут быть заданы с путём или без него. Если путь не задан, то система считает, что данный файл находится в каталоге загруженных файлов, который един для всех пользователей. Подробнее см. Интерфейс управления файлами. Как правило, именно эти файлы и доступны пользователям для размещения в статьях. Однако медиафайлы могут находиться и в иных каталогах сайта, куда их может разместить владелец сайта, загружая данные по ftp. Поэтому все пользователи со статусом Писатель и выше могут использовать их в собственных альбомах за счёт механизма создания одних альбомов на основе других.
В списке имён файлов альбома пустые строки, а также строки, начинающиеся c символа ; (точка с запятой) игнорируются. Это позволяет вставлять в перечисление файлов комментарии.
В данном примере секция просто перечисляет некоторые медиафайлы разных типов, размещённые в разных каталогах этого сайта. Чтобы вывести их в виде альбома можно использовать функцию albom("d:*~a1")
Разметка
@albom("d:*~a1")
Вывод
Альбом примера 1
Список  Поток  1  2  3  4  5  6  7 
Audio
Tekst
Audio Video
Audio
Audio
Если Вы читаете этот файл со смартфона, то изображения выведены в одну колонку, если с нормального компьютера, то в 4 колонки. Каждый выведенный элемент представляет собой ссылку на один из включённых в альбом медиафайлов. Если система не может найти файл, указанный в списке, то он игнорируется и никак в альбоме не отображается.
Если файл опознан как картинка, то в альбом выводится её уменьшенное представление. Оно является ссылкой, переход по которой открывает в отдельном окне (вкладке) режим покадрового просмотра альбома. В нём картинка выводится в оригинальном размере или поджимается под ширину окна браузера. Там же имеются ссылки, позволяющие переходить в начало альбома ("Начало"), к предыдущему файлу ("Назад"), к последующему ("Вперёд") и в конец альбома ("Конец").
Если файл опознан как аудиофайл или видеофайл, то в альбоме выводится ссылка с надписью Audio или Video, переход по которой открывает в отдельном окне (вкладке) браузера страницу с плеером, позволяющим его воспроизвести.
Если файл опознан как текстовый (txt,pdf), то выводится ссылка, при переходе по которой делается попытка открыть этот файл. Если файл опознан как публикация (статья, книга, массив данных), то выводится ссылка на страницу интерфейса взаимодействия с файлом данного типа. В любом случае ссылка именуется словом Tekst.
Над альбомом размещаются ссылки управления его представлением. Ссылки с цифрами от 1 до 7 позволяют в отдельном окне (вкладке) вывести альбом в режиме таблицы с соответствующим им числом колонок.
Ссылка "Поток" в отдельном окне (вкладке) выводит альбом смещая изображения влево, вплотную друг к другу (float: left). Часто это позволяет более компактно разместить изображения. Однако важно иметь в виду, что при наличии в альбоме аудиофайлов отображение потоком в отдельных случаях может оборвать вывод части альбома. Из режима отображения потоком можно вернуться к отображению альбома в режиме таблицы.
Ссылка "Список" в отдельном окне (вкладке) выводит полный список полноразмерных изображений файлов альбома, ужимая их под ширину окна браузера. Для файлов, опознанных как аудио- или видео- выводится соответствующий плеер, позволяющий воспроизвести данный файл. Если файл опознан как текстовый (txt,pdf), то выводится ссылка, при переходе по которой делается попытка открыть этот файл. Если файл опознан как публикация (статья, книга, массив данных), то выводится ссылка страницу интерфейса взаимодействия с файлом данного типа. В любом случае ссылка именуется словом Tekst.
Авторизованным пользователям предоставляется дополнительный сервис. Под каждым объектом альбома выводится маркер метки файла, а в конце статьи автоматически формируются кнопки Принять и Закрыть. Если в представленных в статье альбомах пометить те или иные объекты и потом нажать кнопку Принять самом низу сраницы, то будет выведено окно, в котором в форме ввода будет находиться список отмеченных файлов, который можно использовать для формирования нового альбома. Пользователи со статусом Читатель могут использовать эти данные при создании и правке записей в ленте личных данных, а пользователи со статусом Читатель и Эксперт ещё и при создании новых публикаций, создаваемых на основе медиафайлов, выбранных из просмотренных альбомов.
Для создания альбома файлы можно не только перечислять по одному в отдельной строке, но и задавать маску файла с помощью конструкции #<маска_файлов>. В файле данной публикации имеется секция a2 следующего содержания:
$.x albom
$.n Альбом примера 2
/a2
db/photo/vs/2021-08-17_16-25-22.mp4
#shurem_kniga*.*
db/photo/vs/2012-05-12_12-58-49.jpg
//
Сделаем её основой нового альбома.
Разметка
@albom("d:*~a2")
Вывод
Альбом примера 2
Список  Поток  1  2  3  4  5  6  7 
Video
При отображении изображений в альбоме система автоматически уменьшает их представление, ориентируясь на заданную в функции albom() ширину и высоту уменьшенного изображения. Ширина в пикселях регулируется параметром w, а высота параметром h. По умолчанию w=200, h=150. Если ширина картинки больше высоты, то высота уменьшенного изображения (иконки) подгоняется пропорционально установленной ширине. В противном случае ширина подгоняется пропорционально установленной высоте.
В рассматриваемом примере у большинства избражений высота больше ширины. Изменим высоту иконок в альбоме, используя параметр h.
Разметка
@albom("d:*~a2 h:250")
Вывод
Альбом примера 2
Список  Поток  1  2  3  4  5  6  7 
Video
Параметр c (латинское) регулирует число столбцов, выводимых в таблице альбома. По умолчанию c=4 для компьютеров и планшетов и c=1 для смартфонов.
Разметка
@albom("d:*~a2 c:6")
Вывод
Альбом примера 2
Список  Поток  1  2  3  4  5  6  7 
Video
Параметр i устанавливает каталог размещения заранее созданных иконок основных изображений. Для него администратором может быть установлен каталог по умолчанию. При формировании альбома система сначала пытается найти файл с тем же именем в каталоге иконок. Если таковой имеется, то он и будет использован в качестве представителя основного файла при выводе альбома. В противном случае для формирования иконки-представителя будут использоваться параметры w и h, соответствующим образом ужимающие изображение представляемого файла.
Использование параметра i, а также загрузка заранее созданных иконок в отдельные каталоги сайта обычно доступна только для весьма привилегированных пользователей. Большинству же доступна возможность загружать файлы лишь в общий каталог загрузок. Если оригинальный файл и его представитель в альбоме загружены в общий каталог, то уставить их соответствие можно, используя более общую форму описания файлов альбома в соответствующей секции.
В общем виде описание элемента альбома состоит из трёх компонент:
<имя_основного_файла> [<имя_файла_иконки>|-] [<условие_включения_в_альбом>]
В рассмотренных ранее примерах использовалась только простейшая форма определения элемента альбома. В файле данной публикации имеется секция a3 следующего содержания.
$.x albom
$.n Альбом примера 3
/a3
db/photo/vs/2021-08-17_16-25-22.mp4 - sp()>0
#shurem_kniga0*.*
db/photo/vs/2012-05-12_12-58-49.jpg shurem_foto2.jpg
shurem_kniga13.jpg shurem_foto1.jpg sp()>0
//
Здесь элементы альбома заданы в более сложной форме. Для первого элемента иконка не указана (-), но он будет выведен в альбом только в том случае, если читающий эту статью пользователь авторизован (sp()>0). Далее указано безусловное правило отбора в альбом файлов: #shurem_kniga0*.*. Третий элемент также является безусловным, но он указывает, что представителем файла db/photo/vs/2012-05-12_12-58-49.jpg будет файл shurem_foto2.jpg. Именно он и будет выведен в альбоме как ссылка на файл db/photo/vs/2012-05-12_12-58-49.jpg. В последнем элементе указано, что он должен быть выведен в альбом только для авторизованных пользователей, а представителем файла shurem_kniga13.jpg в альбоме будет файл shurem_foto1.jpg. Перейдите по ссылке на уменьшенном изображении, чтобы убедиться, что она указывает на совсем другой изображение.
Альбом примера 3
Список  Поток  1  2  3  4  5  6  7 
Условие отбора может быть задано также сразу для нескольких элементов альбома. Оно должно быть помещено в строку, начинающуюся с символа ?. Далее должно следовать условие. Если оно выполняется, то последующие строки обрабатываются. Если - нет, то пропускаются до следующей конструкции ? <условие>. Если после символа ? условие отсутствует, то все ограничения сбрасываются и последующие описатели альбома обрабатываются безусловно.
В файле данной публикации имеется секция a4 следующего содержания:
$.x albom
$.n Альбом примера 4
/a4
? sp()=0
shurem_kniga01.jpg
shurem_kniga02.jpg
shurem_kniga03.jpg
shurem_kniga04.jpg
shurem_kniga05.jpg
shurem_kniga06.jpg
shurem_kniga07.jpg
shurem_kniga08.jpg
shurem_kniga09.jpg
? sp()>0
#shurem_kniga1*.*
?
db/photo/vs/2012-05-12_12-58-49.jpg shurem_foto2.jpg
//
Если на её основе построить альбом, то для неавторизованных пользователей будет выведена одна группа файлов, а для авторизованных - другая. При этом последняя инструкция будет обработана в любом случае.
Альбом примера 4
Список  Поток  1  2  3  4  5  6  7 
Поскольку все данные для примеров в секциях корректно оформлены как массивы данных расширения "Альбом", то в данной статье доступна возможность вывести меню секций и выбирать отдельный просмотр альбома из каждой из них с помощью функции sdf(). Она не имеет параметров и выводит ссылки на все секции, в которых содержатся корректно оформленные массивы данных расширений.
Разметка
@sdf()
Вывод
dok albom 2023-12-30 20:40:24
dok albom 2023-12-30 20:40:24
dok albom 2023-12-30 20:40:24
dok albom 2023-12-30 20:40:24
При переходе по ссылкам, сформированным функцией sdf(), альбомы формируются в отдельных окнах (вкладках) со значениями параметров, принятыми по умолчанию.
Для авторизованных пользователей в данном перечне также выводятся поля для пометок. При нажатии на кнопку Принять в отдельной форме ввода будут собраны указатели данных на все выделенные объекты.
Оцените публикацию по предложенной шкале
-5  -4  -3  -2  -1  0  +1  +2  +3  +4  +5

Статистика Код