11 Commits

Author SHA1 Message Date
9d4fad0889 fix: change back to current and make first release manual
All checks were successful
Build / build (push) Successful in 4m23s
Build / deploy-production (push) Successful in 4m50s
Build / deploy-stage (push) Successful in 5m0s
Build / switch-stage (push) Successful in 2m21s
Release / switch-production (push) Successful in 2m56s
2025-06-26 12:16:30 +02:00
9720b9328e fix: change to apt-get and change cache:flush to release from current, to work on first release
Some checks failed
Build / build (push) Successful in 4m16s
Build / deploy-stage (push) Successful in 3m42s
Build / switch-stage (push) Failing after 2m17s
Build / deploy-production (push) Successful in 3m56s
2025-06-26 11:55:16 +02:00
177d79ceb1 fix: change php version for deployment
Some checks failed
Build / build (push) Successful in 4m11s
Build / deploy-stage (push) Successful in 3m6s
Build / switch-stage (push) Successful in 2m4s
Build / deploy-production (push) Failing after 3m13s
2025-06-26 10:04:43 +02:00
b6ba7f24fe feat: deploy to production
Some checks failed
Build / build (push) Successful in 5m16s
Build / deploy-production (push) Failing after 2m24s
Build / deploy-stage (push) Failing after 2m3s
Build / switch-stage (push) Has been skipped
2025-06-26 09:47:50 +02:00
080bf9e186 fix: flush cache at deployment
All checks were successful
Build / build (push) Successful in 4m17s
Build / deploy-stage (push) Successful in 2m42s
Build / switch-stage (push) Successful in 2m8s
2025-06-23 17:19:24 +02:00
71d06aabd6 fix: flush cache before extension:setup
Some checks failed
Build / build (push) Successful in 4m22s
Build / deploy-stage (push) Failing after 2m29s
Build / switch-stage (push) Has been skipped
2025-06-23 17:10:43 +02:00
b65377dee4 fix: update card image styling for improved visibility and layout
Some checks failed
Build / build (push) Successful in 4m26s
Build / deploy-stage (push) Failing after 2m30s
Build / switch-stage (push) Has been skipped
2025-06-23 16:54:04 +02:00
c552021c35 fix: change back to columns
All checks were successful
Build / build (push) Successful in 4m20s
Build / deploy-stage (push) Successful in 2m38s
Build / switch-stage (push) Successful in 2m9s
2025-06-18 17:48:34 +02:00
1cd8e30a16 fix: change to imagecols
All checks were successful
Build / build (push) Successful in 4m19s
Build / deploy-stage (push) Successful in 2m43s
Build / switch-stage (push) Successful in 2m5s
2025-06-18 17:37:42 +02:00
6c602a4838 fix: remove not available view helper 2025-06-18 17:34:34 +02:00
37300492dc feat: add image gallery content element with configurable columns and backend preview
All checks were successful
Build / build (push) Successful in 4m21s
Build / deploy-stage (push) Successful in 2m41s
Build / switch-stage (push) Successful in 2m4s
2025-06-16 13:50:41 +02:00
9 changed files with 189 additions and 36 deletions

View File

@@ -68,8 +68,8 @@ jobs:
rm typo3.tar.gz rm typo3.tar.gz
- name: Install ssh agent and rsync - name: Install ssh agent and rsync
run: | run: |
apt update apt-get update
apt install -y openssh-client rsync apt-get install -y openssh-client rsync
- name: Upload release - name: Upload release
uses: deployphp/action@v1 uses: deployphp/action@v1
with: with:
@@ -93,8 +93,8 @@ jobs:
rm typo3.tar.gz rm typo3.tar.gz
- name: Install ssh agent and rsync - name: Install ssh agent and rsync
run: | run: |
apt update apt-get update
apt install -y openssh-client rsync apt-get install -y openssh-client rsync
- name: Switch to release - name: Switch to release
uses: deployphp/action@v1 uses: deployphp/action@v1
with: with:
@@ -102,28 +102,28 @@ jobs:
dep: --file=./build/deploy.php release:switch stage dep: --file=./build/deploy.php release:switch stage
private-key: ${{secrets.STAGE_KEY}} private-key: ${{secrets.STAGE_KEY}}
# deploy-production: deploy-production:
# needs: build needs: build
# runs-on: ubuntu-latest runs-on: ubuntu-latest
# steps: steps:
# - name: Setup PHP - name: Setup PHP
# uses: shivammathur/setup-php@7c0b4c8c8ebed23eca9ec2802474895d105b11bc uses: shivammathur/setup-php@7c0b4c8c8ebed23eca9ec2802474895d105b11bc
# with: with:
# php-version: ${{ env.PHP_VERSION }} php-version: ${{ env.PHP_VERSION }}
# - uses: actions/download-artifact@v3 - uses: actions/download-artifact@v3
# with: with:
# name: typo3 name: typo3
# - name: Extract artifact - name: Extract artifact
# run: | run: |
# tar xf typo3.tar.gz tar xf typo3.tar.gz
# rm typo3.tar.gz rm typo3.tar.gz
# - name: Install ssh agent and rsync - name: Install ssh agent and rsync
# run: | run: |
# apt update apt-get update
# apt install -y openssh-client rsync apt-get install -y openssh-client rsync
# - name: Deploy - name: Deploy
# uses: deployphp/action@v1 uses: deployphp/action@v1
# with: with:
# deployer-binary: "./bin/dep" deployer-binary: "./bin/dep"
# dep: --file=./build/deploy.php release:create production dep: --file=./build/deploy.php release:create production
# private-key: ${{secrets.PROD_KEY}} private-key: ${{secrets.PROD_KEY}}

View File

@@ -26,8 +26,8 @@ jobs:
composer validate --no-check-publish && composer install --prefer-dist --no-progress --ignore-platform-reqs composer validate --no-check-publish && composer install --prefer-dist --no-progress --ignore-platform-reqs
- name: Install ssh agent, rsync - name: Install ssh agent, rsync
run: | run: |
apt update apt-get update
apt install -y openssh-client rsync apt-get install -y openssh-client rsync
- name: Switch to release - name: Switch to release
uses: deployphp/action@v1 uses: deployphp/action@v1
with: with:

View File

@@ -94,6 +94,7 @@ task('release:create', [
'deploy:vendors', 'deploy:vendors',
'deploy:shared', 'deploy:shared',
'deploy:writable', 'deploy:writable',
'typo3:cache:flush',
'typo3:extension:setup', 'typo3:extension:setup',
'deploy:unlock', 'deploy:unlock',
'deploy:success' 'deploy:success'
@@ -117,6 +118,7 @@ task('deploy', [
'deploy:vendors', 'deploy:vendors',
'deploy:shared', 'deploy:shared',
'deploy:writable', 'deploy:writable',
'typo3:cache:flush',
'typo3:extension:setup', 'typo3:extension:setup',
'deploy:symlink', 'deploy:symlink',
'php:reload', 'php:reload',

View File

@@ -9,7 +9,7 @@ RTE {
TCEFORM { TCEFORM {
tt_content { tt_content {
CType { CType {
keepItems = cloonar_text,cloonar_textimage,cloonar_hero,cloonar_cards,form_formframework keepItems = cloonar_text,cloonar_textimage,cloonar_hero,cloonar_cards,cloonar_imagegallery,form_formframework
} }
} }
} }

View File

@@ -25,7 +25,7 @@
<div class="card-front absolute w-full h-full backface-hidden overflow-hidden shadow-lg"> <div class="card-front absolute w-full h-full backface-hidden overflow-hidden shadow-lg">
<f:if condition="{card.images}"> <f:if condition="{card.images}">
<f:then> <f:then>
<picture class="w-full h-full object-cover grayscale group-hover:grayscale-0 transition-all duration-500"> <picture class="w-full h-full object-cover transition-all duration-500">
<!-- WEBP source --> <!-- WEBP source -->
<source <source
type="image/webp" type="image/webp"
@@ -59,9 +59,9 @@
</div> </div>
</f:else> </f:else>
</f:if> </f:if>
<div class="absolute inset-0 bg-black bg-opacity-40 flex flex-col items-center justify-center"> <div class="absolute inset-0 bg-white bg-opacity-80 flex flex-col items-center justify-center">
<div class="w-full"> <div class="w-full">
<h3 class="text-white text-xl font-bold text-center px-4">{card.header}</h3> <h3 class="text-black text-xl font-bold text-center px-4">{card.header}</h3>
</div> </div>
<div class="w-full text-center"> <div class="w-full text-center">
<div class="w-6 h-6 bg-primary text-white rounded-full inline-flex items-center justify-center"> <div class="w-6 h-6 bg-primary text-white rounded-full inline-flex items-center justify-center">
@@ -72,7 +72,7 @@
</div> </div>
<div class="card-back absolute w-full h-full backface-hidden rotate-y-180 bg-light-grey border border-dark-grey p-6"> <div class="card-back absolute w-full h-full backface-hidden rotate-y-180 bg-light-grey border border-dark-grey p-6">
<h4>{card.header}</h4> <h4 class="text-center">{card.header}</h4>
<div class="text-sm"> <div class="text-sm">
<f:format.html>{card.bodytext}</f:format.html> <f:format.html>{card.bodytext}</f:format.html>
</div> </div>

View File

@@ -0,0 +1,26 @@
name: cloonar/imagegallery
typeName: cloonar_imagegallery
group: default
prefixFields: false
fields:
- identifier: header
useExistingField: true
- identifier: image
type: File
properties:
allowed: [jpg, jpeg, png, gif, webp]
multiple: true
useExistingField: true
- identifier: columns
type: Select
renderType: selectSingle
default: 1
items:
- label: LLL:EXT:base/ContentBlocks/ContentElements/imagegallery/language/labels.xlf:columns.1
value: 1
- label: LLL:EXT:base/ContentBlocks/ContentElements/imagegallery/language/labels.xlf:columns.2
value: 2
- label: LLL:EXT:base/ContentBlocks/ContentElements/imagegallery/language/labels.xlf:columns.3
value: 3
- label: LLL:EXT:base/ContentBlocks/ContentElements/imagegallery/language/labels.xlf:columns.5
value: 5

View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file datatype="plaintext" original="labels.xlf" source-language="en" product-name="cloonar/imagegallery">
<header/>
<body>
<trans-unit id="title">
<source>Image Gallery</source>
</trans-unit>
<trans-unit id="description">
<source>A gallery of images with configurable columns</source>
</trans-unit>
<trans-unit id="columns.1">
<source>1 Column</source>
</trans-unit>
<trans-unit id="columns.2">
<source>2 Columns</source>
</trans-unit>
<trans-unit id="columns.3">
<source>3 Columns</source>
</trans-unit>
<trans-unit id="columns.5">
<source>5 Columns</source>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -0,0 +1,36 @@
<html
xmlns:be="http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers"
data-namespace-typo3-fluid="true"
>
<f:layout name="Preview"/>
<f:section name="Header">
<be:link.editRecord uid="{data.uid}" table="{data.mainType}">
<f:if condition="{data.header}">
<f:then><strong>{data.header}</strong></f:then>
</f:if>
</be:link.editRecord>
</f:section>
<f:section name="Content">
<f:if condition="{data.image}">
<div class="row">
<f:for each="{data.image}" as="image" iteration="iterator">
<f:if condition="{iterator.index} < 3">
<div class="col-4">
<f:image image="{image}" width="100" height="auto" treatIdAsReference="1" alt="Preview image" />
</div>
</f:if>
</f:for>
</div>
<p>
<f:switch expression="{data.columns}">
<f:case value="2">2 Columns</f:case>
<f:case value="3">3 Columns</f:case>
<f:case value="5">5 Columns</f:case>
<f:defaultCase>1 Column</f:defaultCase>
</f:switch>
</p>
</f:if>
</f:section>
</html>

View File

@@ -0,0 +1,63 @@
<f:layout name="Default" />
<f:section name="Header"></f:section>
<f:section name="Main">
<f:if condition="{data.header}">
<h2 class="text-center mb-8">{data.header}</h2>
</f:if>
<f:if condition="{data.image}">
<f:variable name="columnClass">
<f:switch expression="{data.columns}">
<f:case value="2">md:grid-cols-2</f:case>
<f:case value="3">md:grid-cols-3</f:case>
<f:case value="5">md:grid-cols-5</f:case>
<f:defaultCase>md:grid-cols-1</f:defaultCase>
</f:switch>
</f:variable>
<div class="grid grid-cols-1 {columnClass} gap-6 md:gap-8">
<f:for each="{data.image}" as="image">
<div class="relative">
<f:if condition="{image.link}">
<f:then>
<f:link.typolink parameter="{image.link}" class="block w-full h-full">
<picture class="block w-full h-full">
<source
type="image/webp"
srcset="{f:uri.image(image:image, width:'320', cropVariant:'default', fileExtension:'webp')} 320w,
{f:uri.image(image:image, width:'768', cropVariant:'default', fileExtension:'webp')} 768w"
sizes="(max-width: 767px) 90vw, 33vw" />
<img
src="{f:uri.image(image:image, width:'768', cropVariant:'default')}"
srcset="{f:uri.image(image:image, width:'320', cropVariant:'default')} 320w,
{f:uri.image(image:image, width:'768', cropVariant:'default')} 768w"
sizes="(max-width: 767px) 90vw, 33vw"
alt="{image.alternative}"
class="w-full h-full object-cover"
/>
</picture>
</f:link.typolink>
</f:then>
<f:else>
<picture class="block w-full h-full">
<source
type="image/webp"
srcset="{f:uri.image(image:image, width:'320', cropVariant:'default', fileExtension:'webp')} 320w,
{f:uri.image(image:image, width:'768', cropVariant:'default', fileExtension:'webp')} 768w"
sizes="(max-width: 767px) 90vw, 33vw" />
<img
src="{f:uri.image(image:image, width:'768', cropVariant:'default')}"
srcset="{f:uri.image(image:image, width:'320', cropVariant:'default')} 320w,
{f:uri.image(image:image, width:'768', cropVariant:'default')} 768w"
sizes="(max-width: 767px) 90vw, 33vw"
alt="{image.alternative}"
class="w-full h-full object-cover"
/>
</picture>
</f:else>
</f:if>
</div>
</f:for>
</div>
</f:if>
</f:section>