Initial commit - Typo3 11.5.41

This commit is contained in:
Matteo Gallo
2026-07-03 17:53:31 +02:00
commit 5ca4743197
6811 changed files with 568848 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types = 1);
return [
\MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum::class => [
'tableName' => 'sys_file_collection',
],
];

View File

@@ -0,0 +1,670 @@
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<general>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.tabs.general</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<switchableControllerActions>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.switchableControllerActions</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<itemsProcFunc>MiniFranske\FsMediaGallery\Hooks\ItemsProcFuncHook->getItemsForSwitchableControllerActions</itemsProcFunc>
<items type="array">
<numIndex index="0">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.switchableControllerActions.I.empty</numIndex>
<numIndex index="1">MediaAlbum->index</numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.switchableControllerActions.I.nestedList</numIndex>
<numIndex index="1">MediaAlbum->nestedList;MediaAlbum->showAsset</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.switchableControllerActions.I.flatList</numIndex>
<numIndex index="1">MediaAlbum->flatList;MediaAlbum->showAlbum;MediaAlbum->showAsset</numIndex>
</numIndex>
<numIndex index="3">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.switchableControllerActions.I.showAlbumByConfig</numIndex>
<numIndex index="1">MediaAlbum->showAlbumByConfig;MediaAlbum->showAsset</numIndex>
</numIndex>
<numIndex index="4">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.switchableControllerActions.I.showAlbumByParam</numIndex>
<numIndex index="1">MediaAlbum->showAlbum;MediaAlbum->showAsset</numIndex>
</numIndex>
<numIndex index="5">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.switchableControllerActions.I.randomAsset</numIndex>
<numIndex index="1">MediaAlbum->randomAsset</numIndex>
</numIndex>
</items>
<default>MediaAlbum->index</default>
<size>1</size>
</config>
</TCEforms>
</switchableControllerActions>
<settings.mediaAlbumsUids>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.mediaAlbumsUids</label>
<displayCond>FIELD:switchableControllerActions:IN:MediaAlbum->nestedList;MediaAlbum->showAsset,MediaAlbum->randomAsset</displayCond>
<config>
<type>select</type>
<renderType>selectTree</renderType>
<treeConfig>
<parentField>parentalbum</parentField>
<appearance>
<showHeader>TRUE</showHeader>
<width>650</width>
</appearance>
</treeConfig>
<internal_type>db</internal_type>
<size>5</size>
<autoSizeMax>20</autoSizeMax>
<maxitems>1000</maxitems>
<minitems>0</minitems>
<!-- itemsProcFunc>MiniFranske\FsMediaGallery\Controller\MediaAlbumController->flexformOptions</itemsProcFunc -->
<foreign_table>sys_file_collection</foreign_table>
<foreign_table_where>AND sys_file_collection.hidden = 0 AND (sys_file_collection.sys_language_uid = 0 OR sys_file_collection.l10n_parent = 0) ORDER BY sys_file_collection.sorting ASC, sys_file_collection.crdate DESC</foreign_table_where>
</config>
</TCEforms>
</settings.mediaAlbumsUids>
<settings.useAlbumFilterAsExclude>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.useAlbumFilterAsExclude</label>
<displayCond>FIELD:switchableControllerActions:IN:MediaAlbum->nestedList;MediaAlbum->showAsset,MediaAlbum->randomAsset</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.useAlbumFilterAsExclude.I.0</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.useAlbumFilterAsExclude.I.1</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
<size>1</size>
</config>
</TCEforms>
</settings.useAlbumFilterAsExclude>
<!-- single album selection -->
<settings.mediaAlbum>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.mediaAlbum</label>
<displayCond>FIELD:switchableControllerActions:IN:MediaAlbum->showAlbum;MediaAlbum->showAsset,MediaAlbum->showAlbumByConfig;MediaAlbum->showAsset</displayCond>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>sys_file_collection</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
<show_thumbs>1</show_thumbs>
<wizards>
<suggest>
<type>suggest</type>
</suggest>
</wizards>
</config>
</TCEforms>
</settings.mediaAlbum>
<settings.list.orderBy>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.orderBy</label>
<displayCond>FIELD:switchableControllerActions:IN:MediaAlbum->nestedList;MediaAlbum->showAsset,MediaAlbum->flatList;MediaAlbum->showAlbum;MediaAlbum->showAsset</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<itemsProcFunc>MiniFranske\FsMediaGallery\Hooks\ItemsProcFuncHook->getItemsForListOrderBy</itemsProcFunc>
<items>
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.orderBy.I.datetime</numIndex>
<numIndex index="1">datetime</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.orderBy.I.crdate</numIndex>
<numIndex index="1">crdate</numIndex>
</numIndex>
<numIndex index="3">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.orderBy.I.sorting</numIndex>
<numIndex index="1">sorting</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.list.orderBy>
<settings.list.orderDirection>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.orderDirection</label>
<displayCond>FIELD:switchableControllerActions:IN:MediaAlbum->nestedList;MediaAlbum->showAsset,MediaAlbum->flatList;MediaAlbum->showAlbum;MediaAlbum->showAsset</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.orderDirection.I.asc</numIndex>
<numIndex index="1">asc</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.orderDirection.I.desc</numIndex>
<numIndex index="1">desc</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.list.orderDirection>
<!-- startingpoint -->
<settings.startingpoint>
<TCEforms>
<label>LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.startingpoint</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>3</size>
<maxitems>50</maxitems>
<minitems>0</minitems>
<show_thumbs>1</show_thumbs>
<wizards>
<suggest>
<type>suggest</type>
</suggest>
</wizards>
</config>
</TCEforms>
</settings.startingpoint>
<!-- recursive -->
<settings.recursive>
<TCEforms>
<label>LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.recursive</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.0</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.1</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.2</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="5" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.3</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="6" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.4</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
<numIndex index="7" type="array">
<numIndex index="0">LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:recursive.I.5</numIndex>
<numIndex index="1">250</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.recursive>
</el>
</ROOT>
</general>
<list>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.tabs.list</sheetTitle>
<displayCond>FIELD:general.switchableControllerActions:IN:MediaAlbum->nestedList;MediaAlbum->showAsset,MediaAlbum->flatList;MediaAlbum->showAlbum;MediaAlbum->showAsset</displayCond>
</TCEforms>
<type>array</type>
<el>
<settings.list.pagination.itemsPerPage>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.pagination.itemsPerPage</label>
<config>
<type>input</type>
<eval>null,num</eval>
<size>2</size>
<max>3</max>
</config>
</TCEforms>
</settings.list.pagination.itemsPerPage>
<settings.list.thumb.width>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.thumb.width</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
</config>
</TCEforms>
</settings.list.thumb.width>
<settings.list.thumb.height>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.thumb.height</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
</config>
</TCEforms>
</settings.list.thumb.height>
<settings.list.thumb.random>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.thumb.random</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:no</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.list.thumb.random>
<settings.list.thumb.resizeMode>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.m</numIndex>
<numIndex index="1">m</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.c</numIndex>
<numIndex index="1">c</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.s</numIndex>
<numIndex index="1">s</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.list.thumb.resizeMode>
<settings.list.hideEmptyAlbums>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.list.hideEmptyAlbums</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:no</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.list.hideEmptyAlbums>
</el>
</ROOT>
</list>
<album>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.tabs.album</sheetTitle>
<displayCond>FIELD:general.switchableControllerActions:IN:MediaAlbum->nestedList;MediaAlbum->showAsset,MediaAlbum->flatList;MediaAlbum->showAlbum;MediaAlbum->showAsset,MediaAlbum->showAlbum;MediaAlbum->showAsset,MediaAlbum->showAlbumByConfig;MediaAlbum->showAsset</displayCond>
</TCEforms>
<type>array</type>
<el>
<settings.album.assets.orderBy>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.assets.orderBy</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<itemsProcFunc>MiniFranske\FsMediaGallery\Hooks\ItemsProcFuncHook->getItemsForAssetsOrderBy</itemsProcFunc>
<items>
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.assets.orderBy.I.name</numIndex>
<numIndex index="1">name</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.assets.orderBy.I.crdate</numIndex>
<numIndex index="1">crdate</numIndex>
</numIndex>
<numIndex index="3">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.assets.orderBy.I.title</numIndex>
<numIndex index="1">title</numIndex>
</numIndex>
<numIndex index="4">
<numIndex index="0">LLL:EXT:filemetadata/Resources/Private/Language/locallang_tca.xlf:sys_file_metadata.content_creation_date</numIndex>
<numIndex index="1">content_creation_date</numIndex>
</numIndex>
<numIndex index="5">
<numIndex index="0">LLL:EXT:filemetadata/Resources/Private/Language/locallang_tca.xlf:sys_file_metadata.content_modification_date</numIndex>
<numIndex index="1">content_modification_date</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.album.assets.orderBy>
<settings.album.assets.orderDirection>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.assets.orderDirection</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.assets.orderDirection.I.asc</numIndex>
<numIndex index="1">asc</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.assets.orderDirection.I.desc</numIndex>
<numIndex index="1">desc</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.album.assets.orderDirection>
<settings.album.pagination.itemsPerPage>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.album.pagination.itemsPerPage</label>
<config>
<type>input</type>
<eval>null,num</eval>
<size>2</size>
<max>3</max>
</config>
</TCEforms>
</settings.album.pagination.itemsPerPage>
<settings.album.thumb.width>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.album.thumb.width</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
<max>4</max>
</config>
</TCEforms>
</settings.album.thumb.width>
<settings.album.thumb.height>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.album.thumb.height</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
<max>4</max>
</config>
</TCEforms>
</settings.album.thumb.height>
<settings.album.thumb.resizeMode>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.m</numIndex>
<numIndex index="1">m</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.c</numIndex>
<numIndex index="1">c</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.s</numIndex>
<numIndex index="1">s</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.album.thumb.resizeMode>
<settings.album.lightbox.enable>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.album.lightbox.enable</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:no</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.album.lightbox.enable>
<settings.album.displayTitle>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.album.displayTitle</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:no</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.album.displayTitle>
</el>
</ROOT>
</album>
<detail>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.tabs.detail</sheetTitle>
<displayCond>FIELD:general.switchableControllerActions:IN:MediaAlbum->nestedList;MediaAlbum->showAsset,MediaAlbum->flatList;MediaAlbum->showAlbum;MediaAlbum->showAsset,MediaAlbum->showAlbum;MediaAlbum->showAsset,MediaAlbum->showAlbumByConfig;MediaAlbum->showAsset</displayCond>
</TCEforms>
<type>array</type>
<el>
<settings.detail.asset.width>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.detail.asset.width</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
<max>4</max>
</config>
</TCEforms>
</settings.detail.asset.width>
<settings.detail.asset.height>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.detail.asset.height</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
<max>4</max>
</config>
</TCEforms>
</settings.detail.asset.height>
<settings.detail.asset.resizeMode>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.m</numIndex>
<numIndex index="1">m</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.c</numIndex>
<numIndex index="1">c</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.s</numIndex>
<numIndex index="1">s</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.detail.asset.resizeMode>
</el>
</ROOT>
</detail>
<random>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.tabs.random</sheetTitle>
<displayCond>FIELD:general.switchableControllerActions:IN:MediaAlbum->randomAsset</displayCond>
</TCEforms>
<type>array</type>
<el>
<settings.random.targetPid>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.random.targetPid</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
<show_thumbs>1</show_thumbs>
<wizards>
<suggest>
<type>suggest</type>
</suggest>
</wizards>
</config>
</TCEforms>
</settings.random.targetPid>
<settings.random.thumb.width>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.random.thumb.width</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
<max>4</max>
</config>
</TCEforms>
</settings.random.thumb.width>
<settings.random.thumb.height>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.mediagallery.random.thumb.height</label>
<config>
<type>input</type>
<eval>num</eval>
<size>4</size>
<max>4</max>
</config>
</TCEforms>
</settings.random.thumb.height>
<settings.random.thumb.resizeMode>
<TCEforms>
<label>LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.I.inherit</numIndex>
<numIndex index="1"></numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.m</numIndex>
<numIndex index="1">m</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.c</numIndex>
<numIndex index="1">c</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:flexforms.general.resizeMode.I.s</numIndex>
<numIndex index="1">s</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.random.thumb.resizeMode>
</el>
</ROOT>
</random>
</sheets>
</T3DataStructure>

View File

@@ -0,0 +1,31 @@
routeEnhancers:
MediaGallery:
type: Extbase
extension: FsMediaGallery
plugin: Mediagallery
routes:
- routePath: '/'
_controller: 'MediaAlbum::nestedList'
- routePath: '/{page}'
_controller: 'MediaAlbum::nestedList'
_arguments:
page: 'currentAlbumPage'
- routePath: '/album/{media_album}'
_controller: 'MediaAlbum::nestedList'
_arguments:
media_album: mediaAlbum
- routePath: '/album/{media_album}/{page}'
_controller: 'MediaAlbum::nestedList'
_arguments:
media_album: mediaAlbum
page: 'currentPage'
defaultController: 'MediaAlbum::nestedList'
aspects:
media_album:
type: PersistedAliasMapper
tableName: sys_file_collection
routeFieldName: slug
page:
type: StaticRangeMapper
start: '1'
end: '100'

View File

@@ -0,0 +1,65 @@
services:
_defaults:
autowire: true
autoconfigure: true
public: false
MiniFranske\FsMediaGallery\Service\Utility: ~
MiniFranske\FsMediaGallery\Listeners\IconFactoryListener:
tags:
- name: event.listener
identifier: 'album-change'
method: 'buildIconForResource'
event: TYPO3\CMS\Core\Imaging\Event\ModifyIconForResourcePropertiesEvent
MiniFranske\FsMediaGallery\Listeners\FolderChangedListener:
tags:
- name: event.listener
identifier: 'album-change'
method: 'postFileAdd'
event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFileCopy'
event: TYPO3\CMS\Core\Resource\Event\AfterFileCopiedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFileCreate'
event: TYPO3\CMS\Core\Resource\Event\AfterFileCreatedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFileDelete'
event: TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFileMove'
event: TYPO3\CMS\Core\Resource\Event\AfterFileMovedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFileRename'
event: TYPO3\CMS\Core\Resource\Event\AfterFileRenamedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFileReplace'
event: TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent
- name: event.listener
identifier: 'album-change'
method: 'preFolderDelete'
event: TYPO3\CMS\Core\Resource\Event\BeforeFolderDeletedEvent
- name: event.listener
identifier: 'album-change'
method: 'preFolderMove'
event: TYPO3\CMS\Core\Resource\Event\BeforeFolderMovedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFolderAdd'
event: TYPO3\CMS\Core\Resource\Event\AfterFolderAddedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFolderDelete'
event: TYPO3\CMS\Core\Resource\Event\AfterFolderDeletedEvent
- name: event.listener
identifier: 'album-change'
method: 'postFolderMove'
event: TYPO3\CMS\Core\Resource\Event\AfterFolderMovedEvent

View File

@@ -0,0 +1,13 @@
<?php
defined('TYPO3_MODE') || die();
$GLOBALS['TCA']['pages']['ctrl']['typeicon_classes']['contains-mediagal'] =
'apps-pagetree-folder-contains-mediagal';
// Add module icon for Folder (page-contains)
$GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = [
'MediaGalleries',
'mediagal',
'apps-pagetree-folder-contains-mediagal'
];

View File

@@ -0,0 +1,117 @@
<?php
defined('TYPO3_MODE') || die();
$additionalColumns = [
'datetime' => [
'exclude' => 1,
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:date_formlabel',
'config' => [
'type' => 'input',
'size' => 12,
'max' => 20,
'eval' => 'datetime',
'default' => 0,
]
],
'sorting' => [
'label' => 'sorting',
'config' => [
'type' => 'passthrough'
]
],
'webdescription' => [
'exclude' => 1,
'label' => 'LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_db.xlf:tx_fsmediagallery_domain_model_mediaalbum.webdescription',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 5,
'eval' => 'trim',
'enableRichtext' => true,
'fieldControl' => [
'fullScreenRichtext' => [
'disabled' => false,
],
],
],
'defaultExtras' => 'richtext[]',
],
'parentalbum' => [
'exclude' => 1,
'label' => 'LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_db.xlf:tx_fsmediagallery_domain_model_mediaalbum.parentalbum',
'config' => [
'type' => 'select',
'renderType' => 'selectTree',
'foreign_table' => 'sys_file_collection',
'foreign_table_where' => ' AND (sys_file_collection.sys_language_uid = 0 OR sys_file_collection.l10n_parent = 0) AND sys_file_collection.pid = ###CURRENT_PID### AND sys_file_collection.uid != ###THIS_UID### ORDER BY sys_file_collection.sorting ASC, sys_file_collection.crdate DESC',
'subType' => 'db',
'treeConfig' => [
'parentField' => 'parentalbum',
'appearance' => [
'showHeader' => true,
'maxLevels' => 99,
'width' => 650,
],
],
'size' => 10,
'autoSizeMax' => 20,
'minitems' => 0,
'maxitems' => 1,
'default' => 0,
]
],
'main_asset' => [
'exclude' => 1,
'label' => 'LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_db.xlf:tx_fsmediagallery_domain_model_mediaalbum.main_asset',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_db.xlf:tx_fsmediagallery_domain_model_mediaalbum.main_asset.add'
],
'maxitems' => 1,
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
)
],
'slug' => [
'exclude' => true,
'label' => 'LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_db.xlf:tx_fsmediagallery_domain_model_mediaalbum.slug',
'config' => [
'type' => 'slug',
'generatorOptions' => [
'fields' => ['title'],
'fieldSeparator' => '/',
'prefixParentPageSlug' => false,
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInPid',
],
],
];
foreach ($GLOBALS['TCA']['sys_file_collection']['types'] as $type => $tmp) {
$GLOBALS['TCA']['sys_file_collection']['types'][$type]['showitem'] .= ',--div--;LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_db.xlf:tx_fsmediagallery_domain_model_mediaalbum';
// try to add field datetime before type (after title)
if ($replacedTca = preg_replace('/(\s*)type(\s*)([;,])/', 'datetime,type$3',
$GLOBALS['TCA']['sys_file_collection']['types'][$type]['showitem'])
) {
$GLOBALS['TCA']['sys_file_collection']['types'][$type]['showitem'] = $replacedTca;
} else {
$GLOBALS['TCA']['sys_file_collection']['types'][$type]['showitem'] .= ',datetime';
}
$GLOBALS['TCA']['sys_file_collection']['types'][$type]['showitem'] .= ',slug,parentalbum,main_asset,webdescription';
}
// enable manual sorting
$GLOBALS['TCA']['sys_file_collection']['ctrl']['sortby'] = 'sorting';
$GLOBALS['TCA']['sys_file_collection']['ctrl']['default_sortby'] = 'ORDER BY sorting ASC, crdate DESC';
// enable main asset preview in list module
$GLOBALS['TCA']['sys_file_collection']['ctrl']['thumbnail'] = 'main_asset';
\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
$GLOBALS['TCA']['sys_file_collection']['columns'],
$additionalColumns
);

View File

@@ -0,0 +1,15 @@
<?php
defined('TYPO3_MODE') || die();
// Media Gellery typoscript
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'fs_media_gallery',
'Configuration/TypoScript',
'Media Gallery'
);
// Add Theme 'Bootstrap3'
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'fs_media_gallery',
'Configuration/TypoScript/Themes/Bootstrap3',
'Media Gallery Theme \'Bootstrap3\''
);

View File

@@ -0,0 +1,16 @@
<?php
defined('TYPO3_MODE') || die();
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'fs_media_gallery',
'Mediagallery',
'LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:mediagallery.title'
);
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['fsmediagallery_mediagallery'] = 'layout,select_key,pages,recursive';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['fsmediagallery_mediagallery'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
'fsmediagallery_mediagallery',
'FILE:EXT:fs_media_gallery/Configuration/FlexForms/flexform_mediaalbum.xml'
);

View File

@@ -0,0 +1,19 @@
mod.wizards {
newContentElement {
wizardItems {
plugins {
elements {
fsmediagallery_mediagallery {
iconIdentifier = content-mediagallery
title = LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:mediagallery.title
description = LLL:EXT:fs_media_gallery/Resources/Private/Language/locallang_be.xlf:mediagallery.description
tt_content_defValues {
CType = list
list_type = fsmediagallery_mediagallery
}
}
}
}
}
}
}

View File

@@ -0,0 +1,27 @@
plugin.tx_fsmediagallery {
view {
templateRootPaths {
100 = {$plugin.tx_fsmediagallery.view.templateRootPath}
110 = EXT:fs_media_gallery/Resources/Private/Themes/Bootstrap3/Templates/
}
partialRootPaths {
100 = {$plugin.tx_fsmediagallery.view.partialRootPath}
110 = EXT:fs_media_gallery/Resources/Private/Themes/Bootstrap3/Partials/
}
layoutRootPaths {
100 = {$plugin.tx_fsmediagallery.view.layoutRootPath}
110 = EXT:fs_media_gallery/Resources/Private/Themes/Bootstrap3/Layouts/
}
widget {
MiniFranske\FsMediaGallery\ViewHelpers\Widget\PaginateViewHelper {
templateRootPath = EXT:fs_media_gallery/Resources/Private/Themes/Bootstrap3/Templates/
}
}
}
settings {
list {
dummyImage = EXT:fs_media_gallery/Resources/Public/Images/Blank.png
}
}
}
page.includeCSS.tx-fs-media-gallery = EXT:fs_media_gallery/Resources/Public/Css/MediaAlbum_Bootstrap3.css

View File

@@ -0,0 +1,24 @@
plugin.tx_fsmediagallery {
view {
# cat=plugin.tx_fsmediagallery/file; type=string; label=Path to template root (FE)
templateRootPath = EXT:fs_media_gallery/Resources/Private/Templates/
# cat=plugin.tx_fsmediagallery/file; type=string; label=Path to template partials (FE)
partialRootPath = EXT:fs_media_gallery/Resources/Private/Partials/
# cat=plugin.tx_fsmediagallery/file; type=string; label=Path to template layouts (FE)
layoutRootPath = EXT:fs_media_gallery/Resources/Private/Layouts/
}
persistence {
# cat=plugin.tx_fsmediagallery//a; type=string; label=Default storage PID: Comma separated list of pages/sysfolders which hold the album records
storagePid =
# cat=plugin.tx_fsmediagallery//b; type=options[0 levels (only selected page)=0,1 level=1,2 levels=2,3 levels=3,4levels=4,Infinite=250]; label=Recursion level: Recursion level of the storage PID. Default: 0 levels (only selected page)
recursive = 0
}
settings {
# cat=plugin.tx_fsmediagallery//c; type=string; label=Allowed Overwrite Fields: Comma separated list of settings which are allowed to be set by TypoScript
overrideFlexformSettingsIfEmpty = list.pagination.itemsPerPage,list.thumb.width,list.thumb.height,list.thumb.resizeMode,list.thumb.random,list.hideEmptyAlbums,list.orderBy,list.orderDirection,album.pagination.itemsPerPage,album.assets.orderBy,album.assets.orderDirection,album.thumb.width,album.thumb.height,album.thumb.resizeMode,album.lightbox.enable,album.lightbox.styleClass,album.displayTitle,album.lightbox.relPrefix,detail.asset.width,detail.asset.height,detail.asset.resizeMode,random.thumb.width,random.thumb.height,random.thumb.resizeMode
# cat=plugin.tx_fsmediagallery//d; type=string; label=Allowed Asset MimeTypes: Comma separated list of mime types (if empty, all files are included)
allowedAssetMimeTypes = image/jpeg, image/png, image/gif, video/youtube, video/vimeo
# cat=plugin.tx_fsmediagallery//e; type=int; label=Target page uid for random view
targetPid =
}
}

View File

@@ -0,0 +1,127 @@
plugin.tx_fsmediagallery {
view {
templateRootPaths.100 = {$plugin.tx_fsmediagallery.view.templateRootPath}
partialRootPaths.100 = {$plugin.tx_fsmediagallery.view.partialRootPath}
layoutRootPaths.100 = {$plugin.tx_fsmediagallery.view.layoutRootPath}
}
persistence {
# Comma separated list of pages/sysfolders which hold the album records
storagePid = {$plugin.tx_fsmediagallery.persistence.storagePid}
# Recursion level of the storagePid (startingpoint in flexform)
recursive = {$plugin.tx_fsmediagallery.persistence.recursive}
}
settings {
# Comma separated list of settings which are allowed to be set by TypoScript
overrideFlexformSettingsIfEmpty = {$plugin.tx_fsmediagallery.settings.overrideFlexformSettingsIfEmpty}
# Comma separated list of mime types (if empty, all files are included)
allowedAssetMimeTypes = {$plugin.tx_fsmediagallery.settings.allowedAssetMimeTypes}
# Comma separated list of albums uids
mediaAlbumsUids =
# Option to exclude given album uids (settings.mediaAlbums)
useAlbumFilterAsExclude = 0
# Settings for album lists (both nested and flat)
list {
thumb {
width = 180
height = 100
# Resize assets: m=resize proportional, c=crop, ''=squeeze (unproportional exact fit)
resizeMode = m
#if 0, always get first image of album as thumbnail
random = 1
}
hideEmptyAlbums = 1
# Sort albums list by: datetime|crdate|sorting
orderBy = datetime
# Sort direction for albums list: asc|desc
orderDirection = desc
# skip gallery view if there is only 1 album (is currently buggy when used with realUrl autoconf)
skipListWhenOnlyOneAlbum = 0
# Settings for nested album list
nested {
}
# Settings for flat album list
flat {
}
pagination {
itemsPerPage = 12
insertAbove = 0
insertBelow = 1
pagesBefore = 4
pagesAfter = 4
maximumNumberOfLinks = 9
class = GeorgRinger\NumberedPagination\NumberedPagination
}
}
# Settings for album view (list of images)
album {
# if 0, the album title won't be displayed
displayTitle = 1
thumb {
width = 120
height = 70
# Resize assets: m=resize proportional, c=crop, ''=squeeze (unproportional exact fit)
resizeMode = m
#if 0, always get first image of album as thumbnail
random = 1
}
lightbox {
enable = 1
styleClass = lightbox
relPrefix = albm_
# render JS code for colorbox
jsPlugin = colorbox
asset {
width = 1920
height = 1080
# Resize assets: m=resize proportional, c=crop, ''=squeeze (unproportional exact fit)
resizeMode = m
}
}
assets {
orderBy =
orderDirection = asc
}
pagination {
itemsPerPage = 32
insertAbove = 0
insertBelow = 1
pagesBefore = 4
pagesAfter = 4
maximumNumberOfLinks = 9
class = GeorgRinger\NumberedPagination\NumberedPagination
}
}
# Settings for detail view
detail {
asset {
width = 1920
height = 1080
# Resize assets: m=resize proportional, c=crop, '' or s=squeeze (unproportional exact fit)
resizeMode = m
}
lightbox {
maxWidth = 1400
maxHeight = 1400
}
}
random {
targetPid = {$plugin.tx_fsmediagallery.settings.targetPid}
thumb {
width = 250
height = 140
# Resize assets: m=resize proportional, c=crop, ''=squeeze (unproportional exact fit)
resizeMode = m
}
}
}
# skip default arguments
features.skipDefaultArguments = 0
}
# Include MediaGallery default styles
page.includeCSS.tx-fs-media-gallery = EXT:fs_media_gallery/Resources/Public/Css/MediaAlbum.css