Compare commits
13 Commits
c4d01f2a47
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 85e8eb0615 | |||
| 82ab2960fc | |||
| 9d4fad0889 | |||
| 9720b9328e | |||
| 177d79ceb1 | |||
| b6ba7f24fe | |||
| 080bf9e186 | |||
| 71d06aabd6 | |||
| b65377dee4 | |||
| c552021c35 | |||
| 1cd8e30a16 | |||
| 6c602a4838 | |||
| 37300492dc |
@@ -68,8 +68,8 @@ jobs:
|
||||
rm typo3.tar.gz
|
||||
- name: Install ssh agent and rsync
|
||||
run: |
|
||||
apt update
|
||||
apt install -y openssh-client rsync
|
||||
apt-get update
|
||||
apt-get install -y openssh-client rsync
|
||||
- name: Upload release
|
||||
uses: deployphp/action@v1
|
||||
with:
|
||||
@@ -93,8 +93,8 @@ jobs:
|
||||
rm typo3.tar.gz
|
||||
- name: Install ssh agent and rsync
|
||||
run: |
|
||||
apt update
|
||||
apt install -y openssh-client rsync
|
||||
apt-get update
|
||||
apt-get install -y openssh-client rsync
|
||||
- name: Switch to release
|
||||
uses: deployphp/action@v1
|
||||
with:
|
||||
@@ -102,28 +102,28 @@ jobs:
|
||||
dep: --file=./build/deploy.php release:switch stage
|
||||
private-key: ${{secrets.STAGE_KEY}}
|
||||
|
||||
# deploy-production:
|
||||
# needs: build
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - name: Setup PHP
|
||||
# uses: shivammathur/setup-php@7c0b4c8c8ebed23eca9ec2802474895d105b11bc
|
||||
# with:
|
||||
# php-version: ${{ env.PHP_VERSION }}
|
||||
# - uses: actions/download-artifact@v3
|
||||
# with:
|
||||
# name: typo3
|
||||
# - name: Extract artifact
|
||||
# run: |
|
||||
# tar xf typo3.tar.gz
|
||||
# rm typo3.tar.gz
|
||||
# - name: Install ssh agent and rsync
|
||||
# run: |
|
||||
# apt update
|
||||
# apt install -y openssh-client rsync
|
||||
# - name: Deploy
|
||||
# uses: deployphp/action@v1
|
||||
# with:
|
||||
# deployer-binary: "./bin/dep"
|
||||
# dep: --file=./build/deploy.php release:create production
|
||||
# private-key: ${{secrets.PROD_KEY}}
|
||||
deploy-production:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@7c0b4c8c8ebed23eca9ec2802474895d105b11bc
|
||||
with:
|
||||
php-version: ${{ env.PHP_VERSION }}
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: typo3
|
||||
- name: Extract artifact
|
||||
run: |
|
||||
tar xf typo3.tar.gz
|
||||
rm typo3.tar.gz
|
||||
- name: Install ssh agent and rsync
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y openssh-client rsync
|
||||
- name: Deploy
|
||||
uses: deployphp/action@v1
|
||||
with:
|
||||
deployer-binary: "./bin/dep"
|
||||
dep: --file=./build/deploy.php release:create production
|
||||
private-key: ${{secrets.PROD_KEY}}
|
||||
|
||||
@@ -26,8 +26,8 @@ jobs:
|
||||
composer validate --no-check-publish && composer install --prefer-dist --no-progress --ignore-platform-reqs
|
||||
- name: Install ssh agent, rsync
|
||||
run: |
|
||||
apt update
|
||||
apt install -y openssh-client rsync
|
||||
apt-get update
|
||||
apt-get install -y openssh-client rsync
|
||||
- name: Switch to release
|
||||
uses: deployphp/action@v1
|
||||
with:
|
||||
|
||||
@@ -94,6 +94,7 @@ task('release:create', [
|
||||
'deploy:vendors',
|
||||
'deploy:shared',
|
||||
'deploy:writable',
|
||||
'typo3:cache:flush',
|
||||
'typo3:extension:setup',
|
||||
'deploy:unlock',
|
||||
'deploy:success'
|
||||
@@ -117,6 +118,7 @@ task('deploy', [
|
||||
'deploy:vendors',
|
||||
'deploy:shared',
|
||||
'deploy:writable',
|
||||
'typo3:cache:flush',
|
||||
'typo3:extension:setup',
|
||||
'deploy:symlink',
|
||||
'php:reload',
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
page = PAGE
|
||||
page {
|
||||
typeNum = 0
|
||||
shortcutIcon = EXT:base/Resources/Public/Favicons/favicon-96x96.png
|
||||
shortcutIcon = EXT:base/Resources/Public/Favicons/web-app-manifest-512x512.png
|
||||
|
||||
bodyTagCObject = COA
|
||||
bodyTagCObject {
|
||||
|
||||
@@ -9,7 +9,7 @@ RTE {
|
||||
TCEFORM {
|
||||
tt_content {
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<div class="card-front absolute w-full h-full backface-hidden overflow-hidden shadow-lg">
|
||||
<f:if condition="{card.images}">
|
||||
<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 -->
|
||||
<source
|
||||
type="image/webp"
|
||||
@@ -59,9 +59,9 @@
|
||||
</div>
|
||||
</f:else>
|
||||
</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">
|
||||
<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 class="w-full text-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 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">
|
||||
<f:format.html>{card.bodytext}</f:format.html>
|
||||
</div>
|
||||
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user