Initial commit

This commit is contained in:
Björn Fromme
2018-04-18 17:24:00 +02:00
commit da4db35be3
875 changed files with 80368 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
root = true
charset = utf-8
trim_trailing_whitespace = true
[*]
end_of_line = lf
insert_final_newline = true
[*.{html,js}]
indent_size = 4
indent_style = space
[*.{css,scss}]
indent_size = 2
indent_style = space
+25
View File
@@ -0,0 +1,25 @@
.DS_Store
.idea
.tmp
index.php
vendor
node_modules
bower_components
typo3
web/fileadmin
web/typo3conf/ENABLE_INSTALL_TOOL
web/typo3conf/realurl_autoconf.php
web/typo3conf/deprecation*
web/typo3conf/ext/*
!web/typo3conf/ext/ep_events/
!web/typo3conf/ext/ep_products/
!web/typo3conf/ext/ep_theme/
!web/typo3conf/ext/ep_track/
web/typo3conf/ext/ep_events/Resources/Public/*
web/typo3conf/ext/ep_theme/Resources/Public/*
web/typo3conf/LocalConfiguration.php
web/typo3conf/AdditionalConfiguration.php
web/typo3conf/PackageStates.php
web/typo3conf/l10n
web/typo3temp
web/uploads
+104
View File
@@ -0,0 +1,104 @@
{
"repositories": [
{ "type": "composer", "url": "https://composer.typo3.org/" }
],
"name": "dpn/ep-reisen-web",
"description" : "EP Reisen TYPO3 website package",
"license": "GPL-2.0+",
"type": "project",
"require": {
"php": "^5.6",
"typo3/cms": "^7.6",
"georgringer/news": "^6.1",
"dmitryd/typo3-realurl": "^2.3",
"helhum/typo3-console": "^4.9",
"typo3/cms-backend": "^7.6",
"typo3/cms-belog": "^7.6",
"typo3/cms-beuser": "^7.6",
"typo3/cms-context-help": "^7.6",
"typo3/cms-core": "^7.6",
"typo3/cms-extbase": "^7.6",
"typo3/cms-extensionmanager": "^7.6",
"typo3/cms-filelist": "^7.6",
"typo3/cms-filemetadata": "^7.6",
"typo3/cms-fluid": "^7.6",
"typo3/cms-fluid-styled-content": "^7.6",
"typo3/cms-form": "^7.6",
"typo3/cms-frontend": "^7.6",
"typo3/cms-func": "^7.6",
"typo3/cms-func-wizards": "^7.6",
"typo3/cms-info": "^7.6",
"typo3/cms-info-pagetsconfig": "^7.6",
"typo3/cms-install": "^7.6",
"typo3/cms-lang": "^7.6",
"typo3/cms-lowlevel": "^7.6",
"typo3/cms-opendocs": "^7.6",
"typo3/cms-recordlist": "^7.6",
"typo3/cms-recycler": "^7.6",
"typo3/cms-reports": "^7.6",
"typo3/cms-rsaauth": "^7.6",
"typo3/cms-rtehtmlarea": "^7.6",
"typo3/cms-saltedpasswords": "^7.6",
"typo3/cms-scheduler": "^7.6",
"typo3/cms-setup": "^7.6",
"typo3/cms-sv": "^7.6",
"typo3/cms-sys-action": "^7.6",
"typo3/cms-t3editor": "^7.6",
"typo3/cms-t3skin": "^7.6",
"typo3/cms-taskcenter": "^7.6",
"typo3/cms-tstemplate": "^7.6",
"typo3/cms-viewpage": "^7.6",
"typo3/cms-wizard-crpages": "^7.6",
"typo3/cms-wizard-sortpages": "^7.6",
"fluidtypo3/vhs": "^3.1",
"typo3-ter/gridelements": "7.2",
"typo3-ter/media": "^4.5",
"typo3-ter/metaseo": "2.1",
"typo3-ter/ods-redirects": "^1.3",
"typo3-ter/pagepath": "^1.1",
"typo3-ter/pb-social": "^1.3",
"typo3-ter/sourceopt": "^1.0",
"typo3-ter/html-compress": "^1.1",
"typo3-ter/imageoptimizer": "^1.0",
"typo3-ter/loginlimit": "^1.0",
"doctrine/dbal": "^2.5",
"yohang/calendr": "^2.1"
},
"scripts": {
"typo3-cms-scripts": [
"typo3cms install:fixfolderstructure",
"typo3cms install:generatepackagestates"
],
"post-install-cmd": [
"@typo3-cms-scripts"
],
"post-update-cmd": [
"@typo3-cms-scripts"
]
},
"extra": {
"typo3/cms": {
"cms-package-dir": "{$vendor-dir}/typo3/cms",
"web-dir": "web"
},
"helhum/typo3-console": {
"install-extension-dummy": false
}
},
"autoload": {
"psr-4": {
"EP\\EpEvents\\": "web/typo3conf/ext/ep_events/Classes",
"EP\\EpProducts\\": "web/typo3conf/ext/ep_products/Classes",
"EP\\EpTheme\\": "web/typo3conf/ext/ep_theme/Classes",
"EP\\EpTrack\\": "web/typo3conf/ext/ep_track/Classes"
}
},
"require-dev": {
"deployer/deployer": "^4.3"
},
"config": {
"platform": {
"php": "5.6.34"
}
}
}
Generated
+3800
View File
File diff suppressed because it is too large Load Diff
+66
View File
@@ -0,0 +1,66 @@
<?php
namespace Deployer;
require 'recipe/typo3.php';
set('typo3_webroot', 'web');
set('application', 'typo3-deployer');
set('repository', '[email protected]:dreipunktnull/ep-reisen-web');
set('git_tty', true);
set('ssh_type', 'native');
set('ssh_multiplexing', true);
set('allow_anonymous_stats', false);
add('shared_files', [
'{{typo3_webroot}}/typo3conf/LocalConfiguration.php'
]);
server('production', 'dreipunktnull.com')
->user('ssh-438277-ep-reisen')
->forwardAgent()
->set('deploy_path', '~/{{application}}')
->set('bin/php', '/usr/local/bin/php5-56STABLE-CLI')
;
task('build:epevents', function () {
runLocally('cd ' . __DIR__ . '/web/typo3conf/ext/ep_events && npm i && npm run build');
});
task('build:eptheme', function () {
runLocally('cd ' . __DIR__ . '/web/typo3conf/ext/ep_theme && npm i && npm run build');
});
task('upload:epevents', function () {
upload(
__DIR__ . '/web/typo3conf/ext/ep_events/Resources/Public/',
'{{release_path}}/web/typo3conf/ext/ep_events/Resources/Public'
);
});
task('upload:eptheme', function () {
upload(
__DIR__ . '/web/typo3conf/ext/ep_theme/Resources/Public/',
'{{release_path}}/web/typo3conf/ext/ep_theme/Resources/Public'
);
});
task('assets:epevents', [
'build:epevents',
'upload:epevents',
]);
task('assets:eptheme', [
'build:eptheme',
'upload:eptheme',
]);
task('assets', [
'assets:epevents',
'assets:eptheme',
]);
after('deploy:symlink', 'assets');
after('deploy:failed', 'deploy:unlock');
+368
View File
@@ -0,0 +1,368 @@
SetEnv TYPO3_CONTEXT "Development"
#####
#
# Example .htaccess file for TYPO3 CMS - for use with Apache Webserver
#
# This file includes settings for the following configuration options:
#
# - Compression
# - Caching
# - MIME types
# - Cross Origin requests
# - Rewriting and Access
# - Miscellaneous
# - PHP optimisation
#
# If you want to use it, you have to copy it to the root folder of your TYPO3 installation (if its
# not there already) and rename it to '.htaccess'. To make .htaccess files work, you might need to
# adjust the 'AllowOverride' directive in your Apache configuration file.
#
# IMPORTANT: You may need to change this file depending on your TYPO3 installation!
# Consider adding this file's content to your webserver's configuration directly for speed improvement
#
# Lots of the options are taken from https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess
#
####
### Begin: Compression ###
# Compressing resource files will save bandwidth and so improve loading speed especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Uncomment the following lines and
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
# config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
#<FilesMatch "\.js\.gzip$">
# AddType "text/javascript" .gzip
#</FilesMatch>
#<FilesMatch "\.css\.gzip$">
# AddType "text/css" .gzip
#</FilesMatch>
#AddEncoding gzip .gzip
<IfModule mod_deflate.c>
# Force compression for mangled `Accept-Encoding` request headers
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# Compress all output labeled with one of the following media types.
#
# (!) For Apache versions below version 2.3.7 you don't need to
# enable `mod_filter` and can remove the `<IfModule mod_filter.c>`
# and `</IfModule>` lines as `AddOutputFilterByType` is still in
# the core directives.
#
# https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/ld+json \
application/manifest+json \
application/rdf+xml \
application/rss+xml \
application/schema+json \
application/vnd.geo+json \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-javascript \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/eot \
font/opentype \
image/bmp \
image/svg+xml \
image/vnd.microsoft.icon \
image/x-icon \
text/cache-manifest \
text/css \
text/html \
text/javascript \
text/plain \
text/vcard \
text/vnd.rim.location.xloc \
text/vtt \
text/x-component \
text/x-cross-domain-policy \
text/xml
</IfModule>
<IfModule mod_mime.c>
AddEncoding gzip svgz
</IfModule>
</IfModule>
### End: Compression ###
### Begin: Browser caching of resource files ###
# This affects Frontend and Backend and increases performance.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/schema+json "access plus 0 seconds"
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType text/x-component "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType application/manifest+json "access plus 1 week"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rdf+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType font/eot "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType text/x-cross-domain-policy "access plus 1 week"
</IfModule>
### End: Browser caching of resource files ###
### Begin: MIME types ###
# Proper MIME types for all files
<IfModule mod_mime.c>
# Data interchange
AddType application/atom+xml atom
AddType application/json json map topojson
AddType application/ld+json jsonld
AddType application/rss+xml rss
AddType application/vnd.geo+json geojson
AddType application/xml rdf xml
# JavaScript
AddType application/javascript js
# Manifest files
AddType application/manifest+json webmanifest
AddType application/x-web-app-manifest+json webapp
AddType text/cache-manifest appcache
# Media files
AddType audio/mp4 f4a f4b m4a
AddType audio/ogg oga ogg opus
AddType image/bmp bmp
AddType image/svg+xml svg svgz
AddType image/webp webp
AddType video/mp4 f4v f4p m4v mp4
AddType video/ogg ogv
AddType video/webm webm
AddType video/x-flv flv
AddType image/x-icon cur ico
# Web fonts
AddType application/font-woff woff
AddType application/font-woff2 woff2
AddType application/vnd.ms-fontobject eot
AddType application/x-font-ttf ttc ttf
AddType font/opentype otf
# Other
AddType application/octet-stream safariextz
AddType application/x-bb-appworld bbaw
AddType application/x-chrome-extension crx
AddType application/x-opera-extension oex
AddType application/x-xpinstall xpi
AddType text/vcard vcard vcf
AddType text/vnd.rim.location.xloc xloc
AddType text/vtt vtt
AddType text/x-component htc
</IfModule>
# UTF-8 encoding
AddDefaultCharset utf-8
<IfModule mod_mime.c>
AddCharset utf-8 .atom .css .js .json .manifest .rdf .rss .vtt .webapp .webmanifest .xml
</IfModule>
### End: MIME types ###
### Begin: Cross Origin ###
# Send the CORS header for images when browsers request it.
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
<FilesMatch "\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$">
SetEnvIf Origin ":" IS_CORS
Header set Access-Control-Allow-Origin "*" env=IS_CORS
</FilesMatch>
</IfModule>
</IfModule>
# Allow cross-origin access to web fonts.
<IfModule mod_headers.c>
<FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
### End: Cross Origin ###
### Begin: Rewriting and Access ###
# You need rewriting, if you use a URL-Rewriting extension (RealURL, CoolUri).
<IfModule mod_rewrite.c>
# Enable URL rewriting
RewriteEngine On
# Store the current location in an environment variable CWD to use
# mod_rewrite in .htaccess files without knowing the RewriteBase
RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=CWD:%2]
# Rules to set ApplicationContext based on hostname
#RewriteCond %{HTTP_HOST} ^dev\.example\.com$
#RewriteRule .? - [E=TYPO3_CONTEXT:Development]
#RewriteCond %{HTTP_HOST} ^staging\.example\.com$
#RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
#RewriteCond %{HTTP_HOST} ^www\.example\.com$
#RewriteRule .? - [E=TYPO3_CONTEXT:Production]
# Rule for versioned static files, configured through:
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
# IMPORTANT: This rule has to be the very first RewriteCond in order to work!
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ %{ENV:CWD}$1.$3 [L]
# Access block for folders
RewriteRule _(?:recycler|temp)_/ - [F]
RewriteRule fileadmin/templates/.*\.(?:txt|ts)$ - [F]
RewriteRule ^(?:vendor|typo3_src|typo3temp/logs) - [F]
RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ - [F]
# Block access to all hidden files and directories with the exception of
# the visible content from within the `/.well-known/` hidden directory (RFC 5785).
RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule (?:^|/)\. - [F]
# Stop rewrite processing, if we are in the typo3/ directory or any other known directory
# NOTE: Add your additional local storages here
RewriteRule ^(?:typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L]
# If the file/symlink/directory does not exist => Redirect to index.php.
# For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ %{ENV:CWD}index.php [QSA,L]
</IfModule>
# Access block for files
<FilesMatch "(?i:^\.|^#.*#|^(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|^composer\.(?:json|lock)|^ext_conf_template\.txt|^ext_typoscript_constants\.txt|^ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|ya?ml|ts|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sw[op]|git.*)|.*(?:~|rc))$">
# Apache < 2.3
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
# Apache ≥ 2.3
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
# Block access to vcs directories
<IfModule mod_alias.c>
RedirectMatch 404 /\.(?:git|svn|hg)/
</IfModule>
### End: Rewriting and Access ###
### Begin: Miscellaneous ###
# 404 error prevention for non-existing redirected folders
Options -MultiViews
# Make sure that directory listings are disabled.
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
<IfModule mod_headers.c>
# Force IE to render pages in the highest available mode
Header set X-UA-Compatible "IE=edge"
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff2?|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
# Reducing MIME type security risks
Header set X-Content-Type-Options "nosniff"
</IfModule>
# ETag removal
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
### End: Miscellaneous ###
# Add your own rules here.
+1
View File
@@ -0,0 +1 @@
deny from all
@@ -0,0 +1,35 @@
<?php
namespace EP\EpEvents;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
final class Constants
{
const PAGETYPE_CATEGORY = 101;
const PAGETYPE_OFFER = 102;
const PAGETYPE_ACTIVITY = 103;
}
@@ -0,0 +1,78 @@
<?php
namespace EP\EpEvents\Controller;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Model\Activity;
use EP\EpEvents\Domain\Repository\ActivityRepository;
use EP\EpEvents\Domain\Repository\OfferRepository;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class ActivityController extends ActionController
{
/**
* @var ActivityRepository
*/
protected $activityRepository;
/**
* @var OfferRepository
*/
protected $offerRepository;
/**
* @param ActivityRepository $activityRepository
* @param OfferRepository $offerRepository
*/
public function __construct(ActivityRepository $activityRepository, OfferRepository $offerRepository)
{
parent::__construct();
$this->activityRepository = $activityRepository;
$this->offerRepository = $offerRepository;
}
public function listAction()
{
$configuration = ['activityType' => $this->settings['activityType']];
$content = $this->configurationManager->getContentObject()->data;
$activities = $this->activityRepository->findByConfiguratorType($configuration['activityType']);
$this->view->assign('activities', $activities);
$this->view->assign('configuration', $configuration);
$this->view->assign('content', $content);
}
/**
* @param Activity $activity
*/
public function detailAction(Activity $activity)
{
$offers = $this->offerRepository->findByActivity($activity);
$this->view->assign('activity', $activity);
$this->view->assign('offers', $offers);
}
}
@@ -0,0 +1,111 @@
<?php
namespace EP\EpEvents\Controller;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Model\Inquiry;
use EP\EpEvents\Service\EmailService;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
class AjaxFormController extends ActionController
{
/**
* @var EmailService
*/
protected $emailService;
/**
* @param EmailService $service
*/
public function injectEmailService(EmailService $service)
{
$this->emailService = $service;
}
/**
* @param Inquiry $inquiry
*
* @return string
*/
public function processInquiryFormAction(Inquiry $inquiry)
{
$response['status'] = 'ok';
$this->emailService->send(
$this->settings['inquiryToEmail'],
$this->settings['inquiryToName'],
'Anfrage E&P Events',
'Email/Inquiry',
[ 'inquiry' => $inquiry ]
);
return json_encode($response);
}
/**
* @param Inquiry $inquiry
*
* @return string
*/
public function processConfiguratorFormAction(Inquiry $inquiry)
{
$response['status'] = 'ok';
$this->emailService->send(
$this->settings['inquiryToEmail'],
$this->settings['inquiryToName'],
'Anfrage E&P Events',
'Email/Configurator',
[ 'inquiry' => $inquiry ]
);
return json_encode($response);
}
/**
* @return string
*/
protected function errorAction() {
$formErrors = [];
if ($this->arguments->getValidationResults()->hasErrors()) {
foreach ($this->arguments->getValidationResults()->getFlattenedErrors() as $key => $errors)
{
$key = str_replace('.', '', $key);
$errorsRaw = [];
foreach ($errors as $error)
{
$translationKey = sprintf('tx_epevents.message.%s.%s', $key, $error->getCode());
$errorsRaw[] = LocalizationUtility::translate($translationKey, 'ep_events');
}
$formErrors[$key] = implode(', ', $errorsRaw);
}
}
$response['status'] = 'validation';
$response['errors'] = $formErrors;
return json_encode($response);
}
}
@@ -0,0 +1,56 @@
<?php
namespace EP\EpEvents\Controller;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Repository\ContactRepository;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class ContactController extends ActionController
{
/**
* @var ContactRepository
*/
protected $contactRepository;
/**
* @param ContactRepository $contactRepository
*/
public function injectContactRepository(ContactRepository $contactRepository)
{
$this->contactRepository = $contactRepository;
}
public function listAction()
{
$contacts = $this->contactRepository->findAll();
$content = $this->configurationManager->getContentObject()->data;
$this->view->assign('contacts', $contacts);
$this->view->assign('content', $content);
}
}
@@ -0,0 +1,103 @@
<?php
namespace EP\EpEvents\Controller;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Model\Inquiry;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class FormController extends ActionController
{
public function inquiryFormAction()
{
$inquiry = $this->getInquiryFromContext();
$this->view->assign('inquiry', $inquiry);
}
/**
* @param int $travelType
* @param int $locationType
*/
public function contactFormAction($travelType = 0, $locationType = 0)
{
$inquiry = Inquiry::fromArguments($travelType, $locationType);
$pageUrl = $this->getCurrentPageUrl();
$inquiry->setPageUrl($pageUrl);
$this->view->assign('inquiry', $inquiry);
}
public function configuratorAction()
{
$inquiry = $this->getInquiryFromContext();
$this->view->assign('inquiry', $inquiry);
}
/**
* @return Inquiry
*/
protected function getInquiryFromContext()
{
$content = $this->configurationManager->getContentObject()->data;
$defaults = $this->settings['configurator']['defaults'];
if (isset($content['offer'])) {
$offer = $content['offer'];
$inquiry = Inquiry::fromOffer($offer, $defaults);
} elseif (isset($content['travelType'])) {
/** @var \EP\EpEvents\Domain\Model\Traveltype $travelType */
$travelType = $content['travelType'];
$inquiryName = $this->settings['configurator']['options']['travelType'][$travelType->getConfiguratorType()];
$inquiry = Inquiry::fromTraveltype($travelType, $inquiryName, $defaults);
} elseif (isset($content['activityType'])) {
$inquiry = new Inquiry($defaults);
$inquiry->setActivityType($content['activityType']);
} else {
$inquiry = new Inquiry($defaults);
}
$pageUrl = $this->getCurrentPageUrl();
$inquiry->setPageUrl($pageUrl);
return $inquiry;
}
/**
* @return string
*/
protected function getCurrentPageUrl()
{
if (GeneralUtility::_GET('ref')) {
$pageUid = GeneralUtility::_GET('ref');
} else {
$pageUid = $GLOBALS['TSFE']->id;
}
return $this->uriBuilder
->reset()
->setCreateAbsoluteUri(true)
->setTargetPageUid($pageUid)
->build()
;
}
}
@@ -0,0 +1,81 @@
<?php
namespace EP\EpEvents\Controller;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Model\Offer;
use EP\EpEvents\Domain\Repository\OfferRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class OfferController extends ActionController
{
/**
* @var OfferRepository
*/
protected $offerRepository;
/**
* @param OfferRepository $offerRepository
*/
public function __construct(OfferRepository $offerRepository)
{
parent::__construct();
$this->offerRepository = $offerRepository;
}
public function teaserAction()
{
$content = $this->configurationManager->getContentObject()->data;
$configuration = [
'travelType' => isset($this->settings['travelType']) ? $this->settings['travelType'] : $content['travelType'],
'locationType' => isset($this->settings['locationType']) ? $this->settings['locationType'] : $content['locationType'],
'locationDistance' => isset($this->settings['locationDistance']) ? $this->settings['locationDistance'] : $content['locationDistance'],
'hotelType' => isset($this->settings['hotelType']) ? $this->settings['hotelType'] : $content['hotelType'],
'activityType' => isset($this->settings['activityType']) ? $this->settings['activityType'] : $content['activityType'],
'offerUid' => isset($content['offerUid']) ? $content['offerUid'] : null,
];
$offers = $this->offerRepository->findByConfiguration($configuration);
$this->view->assign('offers', $offers);
$this->view->assign('configuration', $configuration);
$this->view->assign('content', $content);
}
/**
* @param Offer $offer
*/
public function detailAction(Offer $offer = null)
{
if ($offer === null) {
$pageUid = $GLOBALS['TSFE']->id;
$offer = $this->offerRepository->findByDetailPage($pageUid)->getFirst();
}
$search = GeneralUtility::_GET('search');
$this->view->assign('offer', $offer);
$this->view->assign('search', $search);
}
}
@@ -0,0 +1,108 @@
<?php
namespace EP\EpEvents\Controller;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Model\Search;
use EP\EpEvents\Domain\Repository\OfferRepository;
use TYPO3\CMS\Core\Log\LogManager;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class SearchController extends ActionController
{
/**
* @var OfferRepository
*/
protected $offerRepository;
/**
* @param OfferRepository $offerRepository
*/
public function __construct(OfferRepository $offerRepository)
{
parent::__construct();
$this->offerRepository = $offerRepository;
}
/**
* @param Search $search
*/
public function formAction(Search $search = null)
{
if ($search === null) {
$search = new Search(null, $GLOBALS['TSFE']->id);
}
$this->view->assign('search', $search);
}
public function initializeResultAction()
{
$query = GeneralUtility::_GET('search');
if ($query) {
$search = new Search($query);
$this->request->setArgument('search', $search);
}
}
/**
* @param Search $search
*/
public function resultAction(Search $search = null)
{
if ($search === null) {
$this->redirectToUri('/');
}
$result = null;
$searchValid = strlen($search->getQuery()) >= 3;
if ($searchValid) {
$this->logSearch($search);
$result = $this->offerRepository->search($search->getQuery());
}
$this->view->assign('searchValid', $searchValid);
$this->view->assign('result', $result);
$this->view->assign('search', $search);
}
/**
* @param Search $search
*/
private function logSearch(Search $search)
{
$ignoreIps = GeneralUtility::trimExplode(',', $this->settings['searchLogIgnoreIps'], true);
$remoteIp = GeneralUtility::getIndpEnv('REMOTE_ADDR');
if (in_array($remoteIp, $ignoreIps)) {
return;
}
/** @var $logger \TYPO3\CMS\Core\Log\Logger */
$logger = GeneralUtility::makeInstance(LogManager::class)->getLogger(__CLASS__);
$logger->info('Searchresult processed', [
'search' => $search->getQuery(),
'pageUid' => $search->getPageUid(),
]);
}
}
@@ -0,0 +1,56 @@
<?php
namespace EP\EpEvents\Controller;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Repository\TestimonialRepository;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class TestimonialController extends ActionController
{
/**
* @var TestimonialRepository
*/
protected $testimonialRepository;
/**
* @param TestimonialRepository $testimonialRepository
*/
public function injectTestimonialRepository(TestimonialRepository $testimonialRepository)
{
$this->testimonialRepository = $testimonialRepository;
}
public function listAction()
{
$testimonials = $this->testimonialRepository->findAll();
$content = $this->configurationManager->getContentObject()->data;
$this->view->assign('testimonials', $testimonials);
$this->view->assign('content', $content);
}
}
@@ -0,0 +1,87 @@
<?php
namespace EP\EpEvents\DataProcessing;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Constants;
use EP\EpEvents\Domain\Repository\OfferRepository;
use EP\EpEvents\Domain\Repository\TraveltypeRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;
class OfferProcessor implements DataProcessorInterface
{
/**
* @param ContentObjectRenderer $cObj
* @param array $contentObjectConfiguration
* @param array $processorConfiguration
* @param array $processedData
*
* @return array
*/
public function process(
ContentObjectRenderer $cObj,
array $contentObjectConfiguration,
array $processorConfiguration,
array $processedData
) {
// Process page data for special page type only
if ((int) $cObj->data['doktype'] !== Constants::PAGETYPE_OFFER) {
return $processedData;
}
// Get offer repository instance
/** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var \EP\EpEvents\Domain\Repository\OfferRepository $repository */
$repository = $objectManager->get(OfferRepository::class);
$offer = null;
// First look for selected offer in page settings and fetch offer
// by page uid otherwise
$offerUid = (int) $cObj->data['tx_epevents_offer'];
if ($offerUid !== 0) {
/** @var \EP\EpEvents\Domain\Model\Offer $offer */
$offer = $repository->findByIdentifier($offerUid);
} else {
$pageUid = $GLOBALS['TSFE']->id;
$offer = $repository->findOneByDetailPage($pageUid);
}
/** @var \EP\EpEvents\Domain\Model\Offer $offer */
$processedData['offer'] = $offer;
$processedData['travelType'] = null;
if ($offer->getConfiguratorType()) {
$configuratorType = $offer->getConfiguratorType();
/** @var \EP\EpEvents\Domain\Repository\TraveltypeRepository $repository */
$repository = $objectManager->get(TraveltypeRepository::class);
$processedData['travelType'] = $repository->findOneByConfiguratorType($configuratorType);
}
$processedData['search'] = GeneralUtility::_GET('search');
return $processedData;
}
}
@@ -0,0 +1,72 @@
<?php
namespace EP\EpEvents\DataProcessing;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Constants;
use EP\EpEvents\Domain\Repository\TraveltypeRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;
class TraveltypeProcessor implements DataProcessorInterface
{
/**
* @param ContentObjectRenderer $cObj
* @param array $contentObjectConfiguration
* @param array $processorConfiguration
* @param array $processedData
*
* @return array
*/
public function process(
ContentObjectRenderer $cObj,
array $contentObjectConfiguration,
array $processorConfiguration,
array $processedData
) {
// Process page data for special page type only
if ((int) $cObj->data['doktype'] !== Constants::PAGETYPE_CATEGORY) {
return $processedData;
}
// Get traveltype repository instance
/** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var \EP\EpEvents\Domain\Repository\TraveltypeRepository $repository */
$repository = $objectManager->get(TraveltypeRepository::class);
$traveltype = null;
$traveltypeUid = (int) $cObj->data['tx_epevents_traveltype'];
if ($traveltypeUid !== 0) {
/** @var \EP\EpEvents\Domain\Model\Traveltype $traveltype */
$traveltype = $repository->findByIdentifier($traveltypeUid);
}
$processedData['traveltype'] = $traveltype;
return $processedData;
}
}
@@ -0,0 +1,241 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Activity
*/
class Activity extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* @var array
*/
protected $configuratorTypeLabels = [
1 => 'Outdoor & Action',
2 => 'Event-Gastronomie',
3 => 'Sightseeing',
4 => 'Spezial',
];
/**
* @var string
*/
protected $name = '';
/**
* @var string
*/
protected $description = '';
/**
* @var string
*/
protected $footertext = '';
/**
* @var string
*/
protected $bannertext = '';
/**
* @var string
*/
protected $keywords = '';
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageTeaser;
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageHeader;
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageOffer;
/**
* @var int
*/
protected $configuratorType = 0;
/**
* @return string $name
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string $description
*/
public function getDescription()
{
return $this->description;
}
/**
* @param string $description
*/
public function setDescription($description)
{
$this->description = $description;
}
/**
* @return string
*/
public function getFootertext()
{
return $this->footertext;
}
/**
* @param string $footertext
*/
public function setFootertext($footertext)
{
$this->footertext = $footertext;
}
/**
* @return string
*/
public function getBannertext()
{
return $this->bannertext;
}
/**
* @param string $bannertext
*/
public function setBannertext($bannertext)
{
$this->bannertext = $bannertext;
}
/**
* @return string
*/
public function getKeywords()
{
return $this->keywords;
}
/**
* @param string $keywords
*/
public function setKeywords($keywords)
{
$this->keywords = $keywords;
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser
*/
public function getImageTeaser()
{
return $this->imageTeaser;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser
*/
public function setImageTeaser(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser)
{
$this->imageTeaser = $imageTeaser;
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
*/
public function getImageHeader()
{
return $this->imageHeader;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
*/
public function setImageHeader(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader)
{
$this->imageHeader = $imageHeader;
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer
*/
public function getImageOffer()
{
return $this->imageOffer;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer
*/
public function setImageOffer(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer)
{
$this->imageOffer = $imageOffer;
}
/**
* @return int $configuratorType
*/
public function getConfiguratorType()
{
return $this->configuratorType;
}
/**
* @param int $configuratorType
*/
public function setConfiguratorType($configuratorType)
{
$this->configuratorType = $configuratorType;
}
/**
* @return string
*/
public function getConfiguratorTypeLabel()
{
return $this->configuratorTypeLabels[$this->configuratorType];
}
}
@@ -0,0 +1,166 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Contact
*/
class Contact extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* name
*
* @var string
*/
protected $name = '';
/**
* position
*
* @var string
*/
protected $position = '';
/**
* email
*
* @var string
*/
protected $email = '';
/**
* phone
*
* @var string
*/
protected $phone = '';
/**
* image
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $image = null;
/**
* Returns the name
*
* @return string $name
*/
public function getName()
{
return $this->name;
}
/**
* Sets the name
*
* @param string $name
* @return void
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getPosition()
{
return $this->position;
}
/**
* @param string $position
*/
public function setPosition($position)
{
$this->position = $position;
}
/**
* Returns the email
*
* @return string $email
*/
public function getEmail()
{
return $this->email;
}
/**
* Sets the email
*
* @param string $email
* @return void
*/
public function setEmail($email)
{
$this->email = $email;
}
/**
* @return string
*/
public function getPhone()
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone($phone)
{
$this->phone = $phone;
}
/**
* Returns the image
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
*/
public function getImage()
{
return $this->image;
}
/**
* Sets the image
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
* @return void
*/
public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image)
{
$this->image = $image;
}
}
@@ -0,0 +1,197 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Hotel
*/
class Hotel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* name
*
* @var string
*/
protected $name = '';
/**
* internal name
*
* @var string
*/
protected $nameInternal = '';
/**
* description
*
* @var string
*/
protected $description = '';
/**
* imageTeaser
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageTeaser = null;
/**
* imageOffer
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageOffer = null;
/**
* configuratorType
*
* @var int
*/
protected $configuratorType = 0;
/**
* Returns the name
*
* @return string $name
*/
public function getName()
{
return $this->name;
}
/**
* Sets the name
*
* @param string $name
* @return void
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getNameInternal()
{
return $this->nameInternal;
}
/**
* @param string $nameInternal
*/
public function setNameInternal($nameInternal)
{
$this->nameInternal = $nameInternal;
}
/**
* Returns the description
*
* @return string $description
*/
public function getDescription()
{
return $this->description;
}
/**
* Sets the description
*
* @param string $description
* @return void
*/
public function setDescription($description)
{
$this->description = $description;
}
/**
* Returns the imageTeaser
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser
*/
public function getImageTeaser()
{
return $this->imageTeaser;
}
/**
* Sets the imageTeaser
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser
* @return void
*/
public function setImageTeaser(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser)
{
$this->imageTeaser = $imageTeaser;
}
/**
* Returns the imageOffer
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer
*/
public function getImageOffer()
{
return $this->imageOffer;
}
/**
* Sets the imageOffer
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer
* @return void
*/
public function setImageOffer(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer)
{
$this->imageOffer = $imageOffer;
}
/**
* Returns the configuratorType
*
* @return int $configuratorType
*/
public function getConfiguratorType()
{
return $this->configuratorType;
}
/**
* Sets the configuratorType
*
* @param int $configuratorType
* @return void
*/
public function setConfiguratorType($configuratorType)
{
$this->configuratorType = $configuratorType;
}
}
@@ -0,0 +1,449 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Extbase\DomainObject\AbstractValueObject;
class Inquiry extends AbstractValueObject
{
/**
* @var string
*/
protected $inquiryName;
/**
* @var string
*/
protected $travelType;
/**
* @var string
*/
protected $hotelType;
/**
* @var string
*/
protected $locationType;
/**
* @var string
*/
protected $activityType;
/**
* @var string
*/
protected $distance;
/**
* @var string
*/
protected $pax;
/**
* @var string
*/
protected $budget;
/**
* @var string
*/
protected $period;
/**
* @var string
*/
protected $dateFrom;
/**
* @var string
*/
protected $dateTo;
/**
* @var string
*
* @validate NotEmpty
*/
protected $name;
/**
* @var string
*
* @validate NotEmpty
* @validate EmailAddress
*/
protected $email;
/**
* @var string
*
* @validate NotEmpty
*/
protected $phone;
/**
* @var string
*/
protected $message;
/**
* @var string
*/
protected $pageUrl;
/**
* @param array $defaults
*/
public function __construct(array $defaults = [])
{
foreach ($defaults as $key => $value)
{
if (property_exists($this, $key)) {
$this->$key = $value;
}
}
}
/**
* @param Offer $offer
* @param array $defaults
*
* @return Inquiry
*/
public static function fromOffer(Offer $offer, array $defaults = [])
{
$inquiry = new self($defaults);
$inquiry->setInquiryName($offer->getName() . ' ' . $offer->getLocation()->getName());
$inquiry->setTravelType($offer->getConfiguratorType());
if ($offer->getLocation()) {
$inquiry->setLocationType($offer->getLocation()->getConfiguratorType());
}
if ($offer->getHotel()) {
$inquiry->setHotelType($offer->getHotel()->getConfiguratorType());
}
if ($offer->getLocation()->getConfiguratorDistance()) {
$inquiry->setDistance($offer->getLocation()->getConfiguratorDistance());
}
$activities = [];
/** @var \EP\EpEvents\Domain\Model\Activity $activity */
foreach ($offer->getActivities() as $activity)
{
$activities[] = $activity->getConfiguratorType();
}
$inquiry->setActivityType(implode(',', array_unique($activities)));
return $inquiry;
}
/**
* @param Traveltype $traveltype
* @param string $name
* @param array $defaults
*
* @return Inquiry
*/
public static function fromTraveltype(Traveltype $traveltype, $name = '', array $defaults = [])
{
$inquiry = new self($defaults);
$inquiry->setInquiryName($name);
$inquiry->setTravelType($traveltype->getConfiguratorType());
return $inquiry;
}
/**
* @param int $travelType
* @param int $locationType
*
* @return Inquiry
*/
public static function fromArguments($travelType = 0, $locationType = 0)
{
$inquiry = new self;
$inquiry->setTravelType((string) $travelType);
$inquiry->setLocationType((string) $locationType);
return $inquiry;
}
/**
* @return string
*/
public function getInquiryName()
{
return $this->inquiryName;
}
/**
* @param string $inquiryName
*/
public function setInquiryName($inquiryName)
{
$this->inquiryName = $inquiryName;
}
/**
* @return string
*/
public function getTravelType()
{
return $this->travelType;
}
/**
* @param string $travelType
*/
public function setTravelType($travelType)
{
$this->travelType = $travelType;
}
/**
* @return string
*/
public function getHotelType()
{
return $this->hotelType;
}
/**
* @param string $hotelType
*/
public function setHotelType($hotelType)
{
$this->hotelType = $hotelType;
}
/**
* @return string
*/
public function getLocationType()
{
return $this->locationType;
}
/**
* @param string $locationType
*/
public function setLocationType($locationType)
{
$this->locationType = $locationType;
}
/**
* @return string
*/
public function getActivityType()
{
return $this->activityType;
}
/**
* @param string $activityType
*/
public function setActivityType($activityType)
{
$this->activityType = $activityType;
}
/**
* @return string
*/
public function getDistance()
{
return $this->distance;
}
/**
* @param string $distance
*/
public function setDistance($distance)
{
$this->distance = $distance;
}
/**
* @return string
*/
public function getPax()
{
return $this->pax;
}
/**
* @param string $pax
*/
public function setPax($pax)
{
$this->pax = $pax;
}
/**
* @return string
*/
public function getBudget()
{
return $this->budget;
}
/**
* @param string $budget
*/
public function setBudget($budget)
{
$this->budget = $budget;
}
/**
* @return string
*/
public function getPeriod()
{
return $this->period;
}
/**
* @param string $period
*/
public function setPeriod($period)
{
$this->period = $period;
}
/**
* @return string
*/
public function getDateFrom()
{
return $this->dateFrom;
}
/**
* @param string $dateFrom
*/
public function setDateFrom($dateFrom)
{
$this->dateFrom = $dateFrom;
}
/**
* @return string
*/
public function getDateTo()
{
return $this->dateTo;
}
/**
* @param string $dateTo
*/
public function setDateTo($dateTo)
{
$this->dateTo = $dateTo;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* @param string $email
*/
public function setEmail($email)
{
$this->email = $email;
}
/**
* @return string
*/
public function getPhone()
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone($phone)
{
$this->phone = $phone;
}
/**
* @return string
*/
public function getMessage()
{
return $this->message;
}
/**
* @param string $message
*/
public function setMessage($message)
{
$this->message = $message;
}
/**
* @return string
*/
public function getPageUrl()
{
return $this->pageUrl;
}
/**
* @param string $pageUrl
*/
public function setPageUrl($pageUrl)
{
$this->pageUrl = $pageUrl;
}
}
@@ -0,0 +1,364 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Location
*/
class Location extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
const DISTANCE_GERMANY = 1;
const DISTANCE_EUROPE = 2;
const DISTANCE_WORLD = 3;
/**
* name
*
* @var string
*/
protected $name = '';
/**
* descriptionShort
*
* @var string
*/
protected $descriptionShort = '';
/**
* descriptionLong
*
* @var string
*/
protected $descriptionLong = '';
/**
* season
*
* @var string
*/
protected $season = '';
/**
* imageHeader
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageHeader = null;
/**
* imageTeaser
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageTeaser = null;
/**
* imageOffer
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageOffer = null;
/**
* configuratorType
*
* @var int
*/
protected $configuratorType = 0;
/**
* configuratorDistance
*
* @var int
*/
protected $configuratorDistance = 1;
/**
* footerText1
*
* @var string
*/
protected $footerText1 = '';
/**
* footerText2
*
* @var string
*/
protected $footerText2 = '';
/**
* footerText3
*
* @var string
*/
protected $footerText3 = '';
/**
* Returns the name
*
* @return string $name
*/
public function getName()
{
return $this->name;
}
/**
* Sets the name
*
* @param string $name
* @return void
*/
public function setName($name)
{
$this->name = $name;
}
/**
* Returns the descriptionShort
*
* @return string $descriptionShort
*/
public function getDescriptionShort()
{
return $this->descriptionShort;
}
/**
* Sets the descriptionShort
*
* @param string $descriptionShort
* @return void
*/
public function setDescriptionShort($descriptionShort)
{
$this->descriptionShort = $descriptionShort;
}
/**
* Returns the imageHeader
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
*/
public function getImageHeader()
{
return $this->imageHeader;
}
/**
* Sets the imageHeader
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
* @return void
*/
public function setImageHeader(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader)
{
$this->imageHeader = $imageHeader;
}
/**
* Returns the imageTeaser
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser
*/
public function getImageTeaser()
{
return $this->imageTeaser;
}
/**
* Sets the imageTeaser
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser
* @return void
*/
public function setImageTeaser(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser)
{
$this->imageTeaser = $imageTeaser;
}
/**
* Returns the imageOffer
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer
*/
public function getImageOffer()
{
return $this->imageOffer;
}
/**
* Sets the imageOffer
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer
* @return void
*/
public function setImageOffer(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageOffer)
{
$this->imageOffer = $imageOffer;
}
/**
* Returns the configuratorType
*
* @return int $configuratorType
*/
public function getConfiguratorType()
{
return $this->configuratorType;
}
/**
* Sets the configuratorType
*
* @param int $configuratorType
* @return void
*/
public function setConfiguratorType($configuratorType)
{
$this->configuratorType = $configuratorType;
}
/**
* @return int
*/
public function getConfiguratorDistance()
{
return $this->configuratorDistance;
}
/**
* @param int $configuratorDistance
*/
public function setConfiguratorDistance($configuratorDistance)
{
$this->configuratorDistance = $configuratorDistance;
}
/**
* Returns the descriptionLong
*
* @return string descriptionLong
*/
public function getDescriptionLong()
{
return $this->descriptionLong;
}
/**
* Sets the descriptionLong
*
* @param string $descriptionLong
* @return void
*/
public function setDescriptionLong($descriptionLong)
{
$this->descriptionLong = $descriptionLong;
}
/**
* @return string
*/
public function getSeason()
{
return $this->season;
}
/**
* @param string $season
*/
public function setSeason($season)
{
$this->season = $season;
}
/**
* Returns the footerText1
*
* @return string $footerText1
*/
public function getFooterText1()
{
return $this->footerText1;
}
/**
* Sets the footerText1
*
* @param string $footerText1
* @return void
*/
public function setFooterText1($footerText1)
{
$this->footerText1 = $footerText1;
}
/**
* Returns the footerText2
*
* @return string $footerText2
*/
public function getFooterText2()
{
return $this->footerText2;
}
/**
* Sets the footerText2
*
* @param string $footerText2
* @return void
*/
public function setFooterText2($footerText2)
{
$this->footerText2 = $footerText2;
}
/**
* Returns the footerText3
*
* @return string $footerText3
*/
public function getFooterText3()
{
return $this->footerText3;
}
/**
* Sets the footerText3
*
* @param string $footerText3
* @return void
*/
public function setFooterText3($footerText3)
{
$this->footerText3 = $footerText3;
}
}
@@ -0,0 +1,652 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Offer
*/
class Offer extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
const TYPE_EXAMPLE = 1;
const TYPE_CLIENT = 2;
/**
* @var array
*/
protected $configuratorTypeLabels = [
1 => 'Incentive',
2 => 'Team Building',
3 => 'Meeting',
4 => 'Corporate Event',
];
/**
* type
*
* @var int
*/
protected $type = 1;
/**
* name
*
* @var string
*/
protected $name = '';
/**
* name internal
*
* @var string
*/
protected $nameInternal = '';
/**
* groupname
*
* @var string
*/
protected $groupname = '';
/**
* price
*
* @var int
*/
protected $price = 0;
/**
* headline
*
* @var string
*/
protected $headline = '';
/**
* header
*
* @var string
*/
protected $header = '';
/**
* arrival
*
* @var string
*/
protected $arrival = '';
/**
* schedule
*
* @var string
*/
protected $schedule = '';
/**
* services
*
* @var string
*/
protected $services = '';
/**
* guidelines
*
* @var string
*/
protected $guidelines = '';
/**
* imageHeader
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageHeader = null;
/**
* imageTeaser
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageTeaser = null;
/**
* imageTeaserMobile
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageTeaserMobile = null;
/**
* bookingForm
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $bookingForm = null;
/**
* configuratorType
*
* @var int
*/
protected $configuratorType = 0;
/**
* contact
*
* @var \EP\EpEvents\Domain\Model\Contact
*/
protected $contact = null;
/**
* hotel
*
* @var \EP\EpEvents\Domain\Model\Hotel
*/
protected $hotel = null;
/**
* location
*
* @var \EP\EpEvents\Domain\Model\Location
*/
protected $location = null;
/**
* activities
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpEvents\Domain\Model\Activity>
*/
protected $activities = null;
/**
* detailPage
*
* @var int
*/
protected $detailPage = 0;
/**
* __construct
*/
public function __construct()
{
//Do not remove the next line: It would break the functionality
$this->initStorageObjects();
}
/**
* Initializes all ObjectStorage properties
* Do not modify this method!
* It will be rewritten on each save in the extension builder
* You may modify the constructor of this class instead
*
* @return void
*/
protected function initStorageObjects()
{
$this->activities = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}
/**
* @return int
*/
public function getType()
{
return $this->type;
}
/**
* @param int $type
*/
public function setType($type)
{
$this->type = $type;
}
/**
* Returns the name
*
* @return string $name
*/
public function getName()
{
return $this->name;
}
/**
* Sets the name
*
* @param string $name
* @return void
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getNameInternal()
{
return $this->nameInternal;
}
/**
* @param string $nameInternal
*/
public function setNameInternal($nameInternal)
{
$this->nameInternal = $nameInternal;
}
/**
* Returns the groupname
*
* @return string $groupname
*/
public function getGroupname()
{
return $this->groupname;
}
/**
* Sets the groupname
*
* @param string $groupname
* @return void
*/
public function setGroupname($groupname)
{
$this->groupname = $groupname;
}
/**
* @return int
*/
public function getPrice()
{
return $this->price;
}
/**
* @param int $price
*/
public function setPrice($price)
{
$this->price = $price;
}
/**
* @return string
*/
public function getHeadline()
{
return $this->headline;
}
/**
* @param string $headline
*/
public function setHeadline($headline)
{
$this->headline = $headline;
}
/**
* Returns the header
*
* @return string $header
*/
public function getHeader()
{
return $this->header;
}
/**
* Sets the header
*
* @param string $header
* @return void
*/
public function setHeader($header)
{
$this->header = $header;
}
/**
* Returns the arrival
*
* @return string $arrival
*/
public function getArrival()
{
return $this->arrival;
}
/**
* Sets the arrival
*
* @param string $arrival
* @return void
*/
public function setArrival($arrival)
{
$this->arrival = $arrival;
}
/**
* Returns the schedule
*
* @return string $schedule
*/
public function getSchedule()
{
return $this->schedule;
}
/**
* Sets the schedule
*
* @param string $schedule
* @return void
*/
public function setSchedule($schedule)
{
$this->schedule = $schedule;
}
/**
* Returns the services
*
* @return string $services
*/
public function getServices()
{
return $this->services;
}
/**
* Sets the services
*
* @param string $services
* @return void
*/
public function setServices($services)
{
$this->services = $services;
}
/**
* Returns the guidelines
*
* @return string $guidelines
*/
public function getGuidelines()
{
return $this->guidelines;
}
/**
* Sets the guidelines
*
* @param string $guidelines
* @return void
*/
public function setGuidelines($guidelines)
{
$this->guidelines = $guidelines;
}
/**
* Returns the imageHeader
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
*/
public function getImageHeader()
{
return $this->imageHeader;
}
/**
* Sets the imageHeader
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
* @return void
*/
public function setImageHeader(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader)
{
$this->imageHeader = $imageHeader;
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
public function getImageTeaser()
{
return $this->imageTeaser;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser
*/
public function setImageTeaser(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaser)
{
$this->imageTeaser = $imageTeaser;
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
public function getImageTeaserMobile()
{
return $this->imageTeaserMobile;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaserMobile
*/
public function setImageTeaserMobile(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageTeaserMobile)
{
$this->imageTeaserMobile = $imageTeaserMobile;
}
/**
* Returns the bookingForm
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $bookingForm
*/
public function getBookingForm()
{
return $this->bookingForm;
}
/**
* Sets the bookingForm
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $bookingForm
* @return void
*/
public function setBookingForm(\TYPO3\CMS\Extbase\Domain\Model\FileReference $bookingForm)
{
$this->bookingForm = $bookingForm;
}
/**
* Returns the contact
*
* @return \EP\EpEvents\Domain\Model\Contact $contact
*/
public function getContact()
{
return $this->contact;
}
/**
* Sets the contact
*
* @param \EP\EpEvents\Domain\Model\Contact $contact
* @return void
*/
public function setContact(\EP\EpEvents\Domain\Model\Contact $contact)
{
$this->contact = $contact;
}
/**
* Returns the hotel
*
* @return \EP\EpEvents\Domain\Model\Hotel $hotel
*/
public function getHotel()
{
return $this->hotel;
}
/**
* Sets the hotel
*
* @param \EP\EpEvents\Domain\Model\Hotel $hotel
* @return void
*/
public function setHotel(\EP\EpEvents\Domain\Model\Hotel $hotel)
{
$this->hotel = $hotel;
}
/**
* Returns the location
*
* @return \EP\EpEvents\Domain\Model\Location $location
*/
public function getLocation()
{
return $this->location;
}
/**
* Sets the location
*
* @param \EP\EpEvents\Domain\Model\Location $location
* @return void
*/
public function setLocation(\EP\EpEvents\Domain\Model\Location $location)
{
$this->location = $location;
}
/**
* Adds a Activity
*
* @param \EP\EpEvents\Domain\Model\Activity $activity
* @return void
*/
public function addActivity(\EP\EpEvents\Domain\Model\Activity $activity)
{
$this->activities->attach($activity);
}
/**
* Removes a Activity
*
* @param \EP\EpEvents\Domain\Model\Activity $activityToRemove The Activity to be removed
* @return void
*/
public function removeActivity(\EP\EpEvents\Domain\Model\Activity $activityToRemove)
{
$this->activities->detach($activityToRemove);
}
/**
* Returns the activities
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpEvents\Domain\Model\Activity> $activities
*/
public function getActivities()
{
return $this->activities;
}
/**
* Sets the activities
*
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpEvents\Domain\Model\Activity> $activities
* @return void
*/
public function setActivities(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $activities)
{
$this->activities = $activities;
}
/**
* Returns the configuratorType
*
* @return int $configuratorType
*/
public function getConfiguratorType()
{
return $this->configuratorType;
}
/**
* Sets the configuratorType
*
* @param int $configuratorType
* @return void
*/
public function setConfiguratorType($configuratorType)
{
$this->configuratorType = $configuratorType;
}
/**
* @return int
*/
public function getDetailPage()
{
return $this->detailPage;
}
/**
* @param int $detailPage
*/
public function setDetailPage($detailPage)
{
$this->detailPage = $detailPage;
}
/**
* @return string
*/
public function getConfiguratorTypeLabel()
{
return $this->configuratorTypeLabels[$this->configuratorType];
}
}
@@ -0,0 +1,84 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2018 Björn Fromme <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Search
{
/**
* @var string
*/
protected $query;
/**
* @var int
*/
protected $pageUid;
/**
* @param string $query
* @param null $pageUid
*/
public function __construct($query = null, $pageUid = null)
{
$this->setQuery($query);
$this->setPageUid($pageUid);
}
/**
* @return string
*/
public function getQuery()
{
return $this->query;
}
/**
* @param string $query
*/
public function setQuery($query)
{
$this->query = $query;
}
/**
* @return int
*/
public function getPageUid()
{
return $this->pageUid;
}
/**
* @param int $pageUid
*/
public function setPageUid($pageUid)
{
$this->pageUid = $pageUid;
}
}
@@ -0,0 +1,120 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Testimonial
*/
class Testimonial extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* clientName
*
* @var string
*/
protected $clientName = '';
/**
* clientImage
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $clientImage = null;
/**
* quote
*
* @var string
*/
protected $quote = '';
/**
* Returns the clientName
*
* @return string $clientName
*/
public function getClientName()
{
return $this->clientName;
}
/**
* Sets the clientName
*
* @param string $clientName
* @return void
*/
public function setClientName($clientName)
{
$this->clientName = $clientName;
}
/**
* Returns the clientImage
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $clientImage
*/
public function getClientImage()
{
return $this->clientImage;
}
/**
* Sets the clientImage
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $clientImage
* @return void
*/
public function setClientImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $clientImage)
{
$this->clientImage = $clientImage;
}
/**
* Returns the quote
*
* @return string $quote
*/
public function getQuote()
{
return $this->quote;
}
/**
* Sets the quote
*
* @param string $quote
* @return void
*/
public function setQuote($quote)
{
$this->quote = $quote;
}
}
@@ -0,0 +1,252 @@
<?php
namespace EP\EpEvents\Domain\Model;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Traveltype
*/
class Traveltype extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* @var string
*/
protected $title = '';
/**
* @var string
*/
protected $subtitle = '';
/**
* @var string
*/
protected $headertext = '';
/**
* @var string
*/
protected $subheadline = '';
/**
* @var string
*/
protected $description = '';
/**
* @var string
*/
protected $bannertext = '';
/**
* @var string
*/
protected $buttonlabel = '';
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageHeader;
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $imageBanner;
/**
* configuratorType
*
* @var int
*/
protected $configuratorType = 0;
/**
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* @param string $title
*/
public function setTitle($title)
{
$this->title = $title;
}
/**
* @return string
*/
public function getSubtitle()
{
return $this->subtitle;
}
/**
* @param string $subtitle
*/
public function setSubtitle($subtitle)
{
$this->subtitle = $subtitle;
}
/**
* @return string
*/
public function getHeadertext()
{
return $this->headertext;
}
/**
* @param string $headertext
*/
public function setHeadertext($headertext)
{
$this->headertext = $headertext;
}
/**
* @return string
*/
public function getSubheadline()
{
return $this->subheadline;
}
/**
* @param string $subheadline
*/
public function setSubheadline($subheadline)
{
$this->subheadline = $subheadline;
}
/**
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* @param string $description
*/
public function setDescription($description)
{
$this->description = $description;
}
/**
* @return string
*/
public function getBannertext()
{
return $this->bannertext;
}
/**
* @param string $bannertext
*/
public function setBannertext($bannertext)
{
$this->bannertext = $bannertext;
}
/**
* @return string
*/
public function getButtonlabel()
{
return $this->buttonlabel;
}
/**
* @param string $buttonlabel
*/
public function setButtonlabel($buttonlabel)
{
$this->buttonlabel = $buttonlabel;
}
/**
* Returns the imageHeader
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
*/
public function getImageHeader()
{
return $this->imageHeader;
}
/**
* Sets the imageHeader
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader
* @return void
*/
public function setImageHeader(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageHeader)
{
$this->imageHeader = $imageHeader;
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
public function getImageBanner()
{
return $this->imageBanner;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $imageBanner
*/
public function setImageBanner(\TYPO3\CMS\Extbase\Domain\Model\FileReference $imageBanner)
{
$this->imageBanner = $imageBanner;
}
/**
* @return int $configuratorType
*/
public function getConfiguratorType()
{
return $this->configuratorType;
}
/**
* @param int $configuratorType
* @return void
*/
public function setConfiguratorType($configuratorType)
{
$this->configuratorType = $configuratorType;
}
}
@@ -0,0 +1,41 @@
<?php
namespace EP\EpEvents\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings;
class AbstractRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
public function initializeObject()
{
/** @var $querySettings \TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings */
$querySettings = $this->objectManager->get(Typo3QuerySettings::class);
$querySettings->setRespectStoragePage(FALSE);
$this->setDefaultQuerySettings($querySettings);
}
}
@@ -0,0 +1,31 @@
<?php
namespace EP\EpEvents\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class ActivityRepository extends AbstractRepository
{
}
@@ -0,0 +1,40 @@
<?php
namespace EP\EpEvents\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
class ContactRepository extends AbstractRepository
{
/**
* @var array
*/
protected $defaultOrderings = [
'sorting' => QueryInterface::ORDER_ASCENDING,
];
}
@@ -0,0 +1,113 @@
<?php
namespace EP\EpEvents\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpEvents\Domain\Model\Activity;
use EP\EpEvents\Domain\Model\Offer;
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
class OfferRepository extends AbstractRepository
{
/**
* @var array
*/
protected $defaultOrderings = [
'nameInternal' => QueryInterface::ORDER_ASCENDING,
];
/**
* @param array $configuration
* @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
*/
public function findByConfiguration(array $configuration)
{
if (array_sum($configuration) === 0) {
return [];
}
$query = $this->createQuery();
$constraints = [
$query->logicalNot($query->equals('type', Offer::TYPE_CLIENT))
];
if ($configuration['offerUid']) {
$constraints[] = $query->logicalNot($query->equals('uid', $configuration['offerUid']));
}
if ($configuration['travelType'] > 0) {
$constraints[] = $query->equals('configuratorType', $configuration['travelType']);
}
if ($configuration['locationDistance'] > 0) {
$constraints[] = $query->equals('location.configuratorDistance', $configuration['locationDistance']);
}
if ($configuration['locationType'] > 0) {
$constraints[] = $query->equals('location.configuratorType', $configuration['locationType']);
}
if ($configuration['hotelType'] > 0) {
$constraints[] = $query->equals('hotel.configuratorType', $configuration['hotelType']);
}
if ($configuration['activityType'] > 0) {
$constraints[] = $query->equals('activities.configuratorType', $configuration['activityType']);
}
return $query->matching($query->logicalAnd($constraints))->execute();
}
/**
* @param Activity $activity
* @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
*/
public function findByActivity(Activity $activity)
{
$query = $this->createQuery();
$query->matching(
$query->logicalAnd(
$query->contains('activities', $activity),
$query->equals('type', Offer::TYPE_EXAMPLE)
)
);
return $query->execute();
}
/**
* @param string $queryString
* @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
*/
public function search($queryString)
{
$query = $this->createQuery();
$constraints = [
$query->like('nameInternal', '%' . $queryString . '%'),
$query->like('header', '%' . $queryString . '%'),
$query->like('services', '%' . $queryString . '%'),
$query->like('location.name', '%' . $queryString . '%'),
];
return $query->matching(
$query->logicalAnd(
$query->greaterThan('detailPage', 0),
$query->logicalOr($constraints)
)
)->execute();
}
}
@@ -0,0 +1,32 @@
<?php
namespace EP\EpEvents\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class TestimonialRepository extends AbstractRepository
{
}
@@ -0,0 +1,32 @@
<?php
namespace EP\EpEvents\Domain\Repository;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class TraveltypeRepository extends AbstractRepository
{
}
@@ -0,0 +1,50 @@
<?php
namespace EP\EpEvents\Form;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class UrlField
{
public function render($parameters, $fObj)
{
$uid = $parameters['row']['uid'];
$urlSegment = $parameters['row']['url'];
if ($uid && $urlSegment) {
$url = \tx_pagepath_api::getPagePath(889, [
'tx_epevents_offer' => [
'controller' => 'offer',
'action' => 'show',
'offer' => $uid,
]
]);
return urldecode($url);
}
return '';
}
}
@@ -0,0 +1,70 @@
<?php
namespace EP\EpEvents\Hooks;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\DataHandling\DataHandler;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Extbase\Object\ObjectManager;
class Tcemain
{
/**
* @param array $fields
* @param string $table
* @param int $id
* @param DataHandler $obj
*/
public function processDatamap_preProcessFieldArray(array &$fields, $table, $id, DataHandler $obj)
{
if ($table === 'tx_epevents_domain_model_offer') {
// Set default value for url segment
if (empty($fields['url'])) {
$fields['url'] = $fields['name'] . date('dmy');
}
// Clear realurl cache for detail page
$settings = $this->getSettings();
$detailPageUid = $settings['plugin']['tx_epevents']['settings']['offerDetailPageUid'];
if ((int) $detailPageUid > 0) {
$GLOBALS['TYPO3_DB']->exec_DELETEquery('tx_realurl_urldata', 'page_id=' . $detailPageUid);
}
}
}
/**
* @return array
*/
protected function getSettings()
{
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$configurationManager = $objectManager->get(ConfigurationManagerInterface::class);
return GeneralUtility::removeDotsFromTS(
$configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT)
);
}
}
@@ -0,0 +1,111 @@
<?php
namespace EP\EpEvents\Service;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\Mail\MailMessage;
use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Fluid\View\StandaloneView;
class EmailService implements SingletonInterface
{
/**
* @var ConfigurationManagerInterface
*/
protected $configurationManager;
/**
* @var array
*/
protected $settings;
/**
* @param ConfigurationManagerInterface $manager
*/
public function injectConfigurationManager(ConfigurationManagerInterface $manager)
{
$this->configurationManager = $manager;
$settings = GeneralUtility::removeDotsFromTS(
$this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT)
);
$this->settings = $settings['plugin']['tx_epevents'];
}
/**
* @param string $toEmail
* @param string $toName
* @param string $subject
* @param string $templateName
* @param array $variables
* @return bool
*/
public function send($toEmail, $toName, $subject, $templateName, array $variables = [])
{
$fromEmail = $this->settings['settings']['inquiryToEmail'];
$fromName = $this->settings['settings']['inquiryToName'];
/** @var MailMessage $message */
$message = GeneralUtility::makeInstance(MailMessage::class);
$message
->setTo([$toEmail => $toName])
->setFrom([$fromEmail => $fromName])
->setSubject($subject)
;
$view = $this->getView($templateName);
$view->assignMultiple($variables);
$message->setBody($view->render(), 'text/html');
$message->send();
return $message->isSent();
}
/**
* @param string $templateName
* @param string $format
* @return StandaloneView
*/
protected function getView($templateName, $format = 'html')
{
/** @var StandaloneView $view */
$view = GeneralUtility::makeInstance(StandaloneView::class);
$view->setFormat($format);
$view->getRequest()->setControllerExtensionName('ep_events');
$view->setTemplateRootPaths($this->settings['view']['templateRootPaths']);
$view->setLayoutRootPaths($this->settings['view']['layoutRootPaths']);
$view->setPartialRootPaths($this->settings['view']['partialRootPaths']);
$view->setTemplate($templateName);
return $view;
}
}
@@ -0,0 +1,71 @@
<?php
namespace EP\EpEvents\ViewHelpers;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
class ConfiguratorTypeLabelsViewHelper extends AbstractViewHelper
{
/**
* @var array
*/
protected $settings;
/**
* @param \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager
*/
public function injectConfigurationManager(ConfigurationManagerInterface $configurationManager)
{
$this->settings = $configurationManager->getConfiguration(
ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS,
'epevents'
);
}
/**
* @param string $type
* @param string $values
*
* @return string
*/
public function render($type, $values)
{
if (empty($values)) {
return 'Keine Angabe';
}
$types = [];
$indexes = GeneralUtility::trimExplode(',', $values);
foreach ($indexes as $index)
{
$types[] = $this->settings['configurator']['options'][$type][$index];
}
return implode(', ', $types);
}
}
@@ -0,0 +1,57 @@
<?php
namespace EP\EpEvents\ViewHelpers;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
class SectionCssClassViewHelper extends AbstractViewHelper
{
/**
* @var array
*/
protected $cssClasses = [
1 => 'incentives',
2 => 'teambuilding',
3 => 'meetings',
4 => 'events',
];
/**
* @param string $sectionValue
*
* @return string
*/
public function render($sectionValue)
{
if (array_key_exists($sectionValue, $this->cssClasses)) {
return 'section-' . $this->cssClasses[$sectionValue];
}
return 'section-default';
}
}
@@ -0,0 +1,63 @@
<?php
namespace EP\EpEvents\ViewHelpers;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
class SectionIconViewHelper extends AbstractViewHelper
{
/**
* @var array
*/
protected $icons = [
1 => 'icon_incentives',
2 => 'icon_teambuilding',
3 => 'icon_meetings',
4 => 'icon_events',
];
/**
* @param string $sectionValue
* @param bool $opaque
*
* @return string
*/
public function render($sectionValue, $opaque = false)
{
$icon = '';
if (array_key_exists($sectionValue, $this->icons)) {
$icon = $this->icons[$sectionValue];
if ($opaque) {
$icon .= '_opaque';
}
$icon .= '.svg';
}
return $icon;
}
}
@@ -0,0 +1,47 @@
<?php
namespace EP\EpEvents\ViewHelpers;
/***************************************************************
*
* Copyright notice
*
* (c) 2017 Björn Fromme <[email protected]>, dreipunktnull
* Cedric Ziel <[email protected]>, dreipunktnull
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
class SoftHyphenViewHelper extends AbstractViewHelper
{
/**
* @param string $string
*
* @return string
*/
public function render($string = null)
{
if ($string === null) {
$string = $this->renderChildren();
}
return str_replace('--', '&shy;', $string);
}
}
+1
View File
@@ -0,0 +1 @@
deny from all
@@ -0,0 +1,47 @@
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Konfiguration</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.activityType>
<TCEforms>
<exclude>0</exclude>
<label>Programmtyp:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">Outdoor &amp; Action</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Event-Gastronomie</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">Sightseeing</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">Spezial</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
</items>
<minitems>1</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.activityType>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
@@ -0,0 +1,183 @@
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Konfiguration</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.travelType>
<TCEforms>
<exclude>0</exclude>
<label>Art der Reise:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Auswahl</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Incentives</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Teambuilding</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">Meeting</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">Corporate Event</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.travelType>
<settings.locationType>
<TCEforms>
<exclude>0</exclude>
<label>Destination:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Auswahl</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Meer</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Berge</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">Städte</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">Spezial</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.locationType>
<settings.locationDistance>
<TCEforms>
<exclude>0</exclude>
<label>Entfernung:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Auswahl</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Deutschland</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Europa</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">Welt</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.locationDistance>
<settings.hotelType>
<TCEforms>
<exclude>0</exclude>
<label>Unterkunft:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Auswahl</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">3-Sterne</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">4-Sterne</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">5-Sterne</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">Spezial</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.hotelType>
<settings.activityType>
<TCEforms>
<exclude>0</exclude>
<label>Programm:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Auswahl</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Outdoor &amp; Action</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Event-Gastronomie</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">Sightseeing</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">Spezial</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.activityType>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
@@ -0,0 +1,158 @@
mod {
web_layout.BackendLayouts {
frontpageEpEvents {
title = EP Events: Startseite
config {
backend_layout {
colCount = 2
rowCount = 5
rows {
1 {
columns {
1 {
name = Content
colPos = 3
colspan = 2
}
}
}
2 {
columns {
1 {
name = Kachel
colPos = 10
}
2 {
name = Kachel
colPos = 11
}
}
}
3 {
columns {
1 {
name = Kachel
colPos = 12
}
2 {
name = Kachel
colPos = 13
}
}
}
4 {
columns {
1 {
name = Content
colPos = 0
colspan = 2
}
}
}
5 {
columns {
1 {
name = Footer Content
colPos = 4
colspan = 2
}
}
}
}
}
}
}
subpageEpEvents {
title = EP Events: Unterseite
config {
backend_layout {
colCount = 1
rowCount = 2
rows {
1 {
columns {
1 {
name = Header
colPos = 1
}
}
}
2 {
columns {
1 {
name = Content
colPos = 0
}
}
}
}
}
}
}
categoryEpEvents {
title = EP Events: Kategorie
config {
backend_layout {
colCount = 1
rowCount = 2
rows {
1 {
columns {
1 {
name = Content (Slider etc.)
colPos = 0
}
}
}
2 {
columns {
1 {
name = Footer Content
colPos = 2
}
}
}
}
}
}
}
offerEpEvents {
title = EP Events: Beispielangebot
config {
backend_layout {
colCount = 1
rowCount = 1
rows {
1 {
columns {
1 {
name = Content (Slider etc.)
colPos = 2
}
}
}
}
}
}
}
activityEpEvents {
title = EP Events: Programmpunkt
config {
backend_layout {
colCount = 1
rowCount = 1
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
}
}
}
}
}
}
@@ -0,0 +1,38 @@
RTE {
default {
contentCSS = EXT:ep_events/Resources/Public/css/rte.min.css
showButtons (
blockstylelabel, blockstyle, textstylelabel, textstyle, linebreak,
formatblock, bar, bold, italic, bar, orderedlist, unorderedlist,
indent, bar, link, unlink, removeformat, linebreak,
table, toggleborders, tableproperties, rowproperties, rowinsertabove,
rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter,
columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter,
celldelete, cellsplit, cellmerge, image, insertcharacter, chMode, pastetoggle
)
keepButtonGroupTogether = 1
proc {
allowedClasses = coloured-list, footnote-list
entryHTMLparser_db {
tags {
span.fixAttrib.style.unset = 1
span.rmTagIfNoAttrib = 1
}
}
}
buttons {
formatblock.removeItems = h1,h5,h6,section,div,footer,header,nav,aside,blockquote,pre,address,article
pastetoggle.setActiveOnRteOpen = 1
blockstyle.tags.ul.allowedClasses = coloured-list, footnote-list
}
}
classes {
button.name = Button
buttonfull.name = Button (volle Breite)
coloured-list.name = Farbige Bullets
footnote-list.name = Fußnote
}
}
@@ -0,0 +1,114 @@
TCEFORM {
tt_content {
# Disable image orientations
imageorient.removeItems = 0,1,2,8,9,25,26
imageorient.disabled = 1
# Disable image columns
imagecols.disabled = 1
# Disable image norows
image_noRows.disabled = 1
# Disable image border
imageborder.disabled = 1
# Disable image width
imagewidth.disabled = 1
# Disable image height
imageheight.disabled = 1
# Disable image link
image_link.disabled = 1
# Enable image zoom
image_zoom = 1
# Disable image compression
image_compression.disabled = 1
# Disable image effects
image_effects.disabled = 1
# Disable image frames
image_frames.disabled = 1
# Disable image caption position
imagecaption_position.disabled = 1
# Disable layout field for all other types
layout.types.text.disabled = 1
layout.types.textpic.disabled = 1
layout.types.bullets.disabled = 1
layout.types.html.disabled = 1
layout.types.image.disabled = 1
layout.types.list.disabled = 1
layout.types.menu.disabled = 1
layout.types.shortcut.disabled = 1
layout.types.table.disabled = 1
layout.types.uploads.disabled = 1
layout.types.mailform.disabled = 1
layout.types.login.disabled = 1
layout.types.header.disabled = 1
layout.types.herounit {
altLabels {
1 = Groß
}
removeItems = 2,3
}
header_layout {
addItems {
10 = H1 (Icon, opt. Subheadline)
20 = H2 (Icon, opt. Subheadline)
}
removeItems = 4,5
altLabels {
1 = H1 (opt. Subheadline)
2 = H2 (opt. Subheadline)
3 = H3
}
}
# Table background color
table_bgColor.disabled = 1
# Table border
table_border.disabled = 1
# Table cell spacing
table_cellspacing.disabled = 1
# Table cell padding
table_cellpadding.disabled = 1
# File size
filelink_size.disabled = 1
# Upload description
uploads_description.disabled = 1
# Upload type
uploads_type.disabled = 1
# Disable description
rowDescription.disabled = 1
# Disable categories
categories.disabled = 1
# Enable header link
header_link = 1
# Disable header position
header_position.disabled = 1
}
pages {
cache_tags.disabled = 1
fe_login_mode.disabled = 1
layout.disabled = 1
}
}
@@ -0,0 +1,35 @@
mod {
wizards.newContentElement.wizardItems {
epevents {
header = EP Events
elements {
tile {
iconIdentifier = content-image
title = Kachel
description = Kachel für Reisearten auf der Startseite
tt_content_defValues.CType = tile
}
statement {
iconIdentifier = content-image
title = Statement
description = Statment mit Button
tt_content_defValues.CType = statement
}
herounit {
iconIdentifier = content-image
title = Herounit
description = Seitenheader
tt_content_defValues.CType = herounit
}
banner {
iconIdentifier = content-image
title = Banner
description = Banner für Kategorieseiten
tt_content_defValues.CType = banner
}
}
show := addToList(tile, statement, herounit, banner)
}
}
}
@@ -0,0 +1,4 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/PageTS/Mod/WebLayout/BackendLayouts.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/PageTS/Mod/Wizards/NewContentElement.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/PageTS/RTE.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/PageTS/TCEFORM.ts">
@@ -0,0 +1,113 @@
<?php
defined('TYPO3_MODE') or die ();
call_user_func(function() {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'pages',
'doktype',
[
'Kategorie-Seite',
\EP\EpEvents\Constants::PAGETYPE_CATEGORY,
'apps-pagetree-category-page',
],
'1',
'after'
);
\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
$GLOBALS['TCA']['pages'],
[
'ctrl' => [
'typeicon_classes' => [
\EP\EpEvents\Constants::PAGETYPE_CATEGORY => 'apps-pagetree-category-page',
],
],
'types' => [
(string) \EP\EpEvents\Constants::PAGETYPE_CATEGORY => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Frontend\Page\PageRepository::DOKTYPE_DEFAULT],
]
]
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'pages',
'doktype',
[
'Beispiel-Seite',
\EP\EpEvents\Constants::PAGETYPE_OFFER,
'apps-pagetree-example-page',
],
'1',
'after'
);
\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
$GLOBALS['TCA']['pages'],
[
'ctrl' => [
'typeicon_classes' => [
\EP\EpEvents\Constants::PAGETYPE_OFFER => 'apps-pagetree-example-page',
],
],
'types' => [
(string) \EP\EpEvents\Constants::PAGETYPE_OFFER => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Frontend\Page\PageRepository::DOKTYPE_DEFAULT],
],
]
);
$temporaryColumns = [
'tx_epevents_traveltype' => [
'exclude' => 0,
'label' => 'Reiseart',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Keine Zuordnung', 0],
],
'foreign_table' => 'tx_epevents_domain_model_traveltype',
'minitems' => 0,
'maxitems' => 1,
]
],
'tx_epevents_offer' => [
'exclude' => 0,
'label' => 'Angebot/Beispielangebot',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Keine Zuordnung', 0],
],
'foreign_table' => 'tx_epevents_domain_model_offer',
'foreign_table_where' => 'AND tx_epevents_domain_model_offer.type = 1 ORDER BY tx_epevents_domain_model_offer.name_internal',
'minitems' => 0,
'maxitems' => 1,
]
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'pages',
$temporaryColumns
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'pages',
'--div--;Konfigurator,
tx_epevents_traveltype',
(string) \EP\EpEvents\Constants::PAGETYPE_CATEGORY
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'pages',
'--div--;Konfigurator,
tx_epevents_offer',
(string) \EP\EpEvents\Constants::PAGETYPE_OFFER
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
'ep_events',
'Configuration/TypoScript/pageTSconfig.ts',
'EP Events'
);
});
@@ -0,0 +1,68 @@
<?php
defined('TYPO3_MODE') or die();
call_user_func(function() {
$temporaryColumns = [
'tx_epevents_configurator_travel_type' => [
'exclude' => 0,
'label' => 'Reiseart',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Keine Zuordnung', 0],
['Incentive', 1],
['Teambuilding', 2],
['Meeting', 3],
['Corporate Event', 4],
],
'minitems' => 0,
'maxitems' => 1,
]
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $temporaryColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'headers',
'tx_epevents_configurator_travel_type',
'before:header_layout'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'header',
'tx_epevents_configurator_travel_type',
'before:header_layout'
);
$GLOBALS['TCA']['tt_content']['types']['header']['columnsOverrides'] = [
'header' => [
'config' => [
'type' => 'text',
'cols' => 60,
'rows' => 2,
],
],
'tx_epevents_configurator_travel_type' => [
'label' => 'Icon/Kategorie',
],
];
$pluginSignature = 'epevents_offerteasers';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
$pluginSignature, 'FILE:EXT:ep_events/Configuration/FlexForms/offers.xml'
);
$pluginSignature = 'epevents_activityteasers';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
$pluginSignature, 'FILE:EXT:ep_events/Configuration/FlexForms/activities.xml'
);
});
@@ -0,0 +1,50 @@
<?php
defined('TYPO3_MODE') or die();
call_user_func(function() {
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'tt_content',
'CType',
[
'Banner',
'banner',
'content-image'
],
'herounit',
'after'
);
$GLOBALS['TCA']['tt_content']['types']['banner'] = [
'showitem' => '
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
tx_epevents_configurator_travel_type, bodytext, header, header_link, assets
',
'columnsOverrides' => [
'header' => [
'label' => 'Button Label',
],
'header_link' => [
'label' => 'Button Link',
],
'bodytext' => [
'label' => 'Text',
],
'assets' => [
'label' => 'Hintergrundbild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('assets', [
'appearance' => [
'createNewRelationLinkTitle' => 'Hinzufügen'
],
'foreign_types' => $GLOBALS['TCA']['tt_content']['columns']['image']['config']['foreign_types'],
'maxitems' => 1,
'minitems' => 1,
], 'jpg')
]
]
];
});
@@ -0,0 +1,69 @@
<?php
defined('TYPO3_MODE') or die();
call_user_func(function() {
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'tt_content',
'CType',
[
'Herounit',
'herounit',
'content-image'
],
'statement',
'after'
);
$GLOBALS['TCA']['tt_content']['palettes']['herounit_layout'] = [
'showitem' => 'layout, tx_epevents_configurator_travel_type',
];
$GLOBALS['TCA']['tt_content']['types']['herounit'] = [
'showitem' => '
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general, --palette--;;herounit_layout,
header, subheader, bodytext, assets
',
'columnsOverrides' => [
'header' => [
'label' => 'Titel',
'config' => [
'type' => 'text',
'cols' => 50,
'rows' => 2,
],
],
'subheader' => [
'label' => 'Untertitel',
'config' => [
'type' => 'text',
'cols' => 50,
'rows' => 2,
],
],
'bodytext' => [
'label' => 'Headertext',
'config' => [
'cols' => 80,
'rows' => 4,
'eval' => 'trim'
],
],
'assets' => [
'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('assets', [
'appearance' => [
'createNewRelationLinkTitle' => 'Hinzufügen'
],
'foreign_types' => $GLOBALS['TCA']['tt_content']['columns']['image']['config']['foreign_types'],
'maxitems' => 1,
'minitems' => 1,
], 'jpg')
]
]
];
});
@@ -0,0 +1,47 @@
<?php
defined('TYPO3_MODE') or die();
call_user_func(function() {
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'tt_content',
'CType',
[
'Statement',
'statement',
'content-image'
],
'tile',
'after'
);
$GLOBALS['TCA']['tt_content']['types']['statement'] = [
'showitem' => '
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
tx_epevents_configurator_travel_type, bodytext, header, header_link
',
'columnsOverrides' => [
'header' => [
'label' => 'Button Label',
'config' => [
'size' => 32,
],
],
'header_link' => [
'label' => 'Button Link',
],
'bodytext' => [
'label' => 'Text',
'config' => [
'cols' => 80,
'rows' => 2,
'eval' => 'trim,required'
],
],
]
];
});
@@ -0,0 +1,59 @@
<?php
defined('TYPO3_MODE') or die();
call_user_func(function() {
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'tt_content',
'CType',
[
'Kachel',
'tile',
'content-image'
],
'textmedia',
'after'
);
$GLOBALS['TCA']['tt_content']['types']['tile'] = [
'showitem' => '
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
tx_epevents_configurator_travel_type, header, header_link, bodytext,
--div--;Bild,
assets
',
'columnsOverrides' => [
'header' => [
'config' => [
'type' => 'text',
'cols' => 32,
'rows' => 2,
]
],
'bodytext' => [
'label' => 'Teasertext',
'config' => [
'type' => 'input',
'size' => 80,
'eval' => 'trim,required'
],
],
'assets' => [
'label' => 'Teaserbild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('assets', [
'appearance' => [
'createNewRelationLinkTitle' => 'Hinzufügen'
],
'foreign_types' => $GLOBALS['TCA']['tt_content']['columns']['image']['config']['foreign_types'],
'maxitems' => 1,
'minitems' => 1,
], 'jpg')
]
]
];
});
@@ -0,0 +1,286 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_events/Resources/Private/Language/locallang.xlf:tx_epevents_domain_model_activity',
'label' => 'name_internal',
'default_sortby' => 'ORDER BY name_internal',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => TRUE,
'versioningWS' => 2,
'versioning_followPages' => TRUE,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'name,name_internal,description,image_teaser,image_header,image_offer,configurator_type,',
'iconfile' => 'EXT:ep_events/Resources/Public/images/tx_epevents_domain_model_activity.gif'
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, name_internal,
keywords, description, bannertext, footertext, image_teaser, image_header, image_offer, configurator_type',
],
'types' => [
'1' => [
'showitem' => '--palette--;;general,
--palette--;;naming, keywords, bannertext,
--div--;Texte, description, footertext,
--div--;Bilder, image_teaser, image_header, image_offer',
'columnsOverrides' => [
'description' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'footertext' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
],
],
],
'palettes' => [
'general' => ['showitem' => 'configurator_type, hidden'],
'naming' => ['showitem' => 'name, name_internal'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0]
],
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_epevents_domain_model_activity',
'foreign_table_where' => 'AND tx_epevents_domain_model_activity.pid=###CURRENT_PID### AND tx_epevents_domain_model_activity.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
]
],
'hidden' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
],
],
'starttime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'endtime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'name' => [
'exclude' => 0,
'label' => 'Bezeichnung',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
],
],
'name_internal' => [
'exclude' => 0,
'label' => 'Bezeichnung intern',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
],
],
'keywords' => [
'exclude' => 0,
'label' => 'Keywords',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 3,
'eval' => 'trim',
],
],
'description' => [
'exclude' => 0,
'label' => 'Beschreibung (kurz)',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'footertext' => [
'exclude' => 0,
'label' => 'Footertext',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'bannertext' => [
'exclude' => 0,
'label' => 'Bannertext',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 3,
'eval' => 'trim',
],
],
'image_teaser' => [
'exclude' => 0,
'label' => 'Bild Teaser',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_teaser',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'image_header' => [
'exclude' => 0,
'label' => 'Bild Header',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_header',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'image_offer' => [
'exclude' => 0,
'label' => 'Bild Angebotsseite',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_offer',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'configurator_type' => [
'exclude' => 0,
'label' => 'Konfigurator Typ',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Outdoor & Action', 1],
['Event-Gastronomie', 2],
['Sightseeing', 3],
['Spezial', 4],
],
'default' => 1,
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'eval' => ''
],
],
],
];
@@ -0,0 +1,186 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_events/Resources/Private/Language/locallang.xlf:tx_epevents_domain_model_contact',
'label' => 'name',
'default_sortby' => 'ORDER BY name',
'sortby' => 'sorting',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => TRUE,
'versioningWS' => 2,
'versioning_followPages' => TRUE,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'name,email,phone,image,',
'iconfile' => 'EXT:ep_events/Resources/Public/images/tx_epevents_domain_model_contact.gif'
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, position, email, phone, image',
],
'types' => [
'1' => [
'showitem' => 'hidden, name, position, email, phone, image'
],
],
'palettes' => [
'1' => ['showitem' => ''],
],
'columns' => [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0]
],
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_epevents_domain_model_contact',
'foreign_table_where' => 'AND tx_epevents_domain_model_contact.pid=###CURRENT_PID### AND tx_epevents_domain_model_contact.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
]
],
'hidden' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
],
],
'starttime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'endtime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'sorting' => [
'config' => [
'type' => 'passthrough'
]
],
'name' => [
'exclude' => 0,
'label' => 'Name',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim'
],
],
'position' => [
'exclude' => 0,
'label' => 'Position',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim'
],
],
'email' => [
'exclude' => 0,
'label' => 'E-Mail',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,email'
],
],
'phone' => [
'exclude' => 0,
'label' => 'Telefon',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim'
],
],
'image' => [
'exclude' => 0,
'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
],
];
@@ -0,0 +1,225 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_events/Resources/Private/Language/locallang.xlf:tx_epevents_domain_model_hotel',
'label' => 'name_internal',
'default_sortby' => 'ORDER BY name_internal',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => TRUE,
'versioningWS' => 2,
'versioning_followPages' => TRUE,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'name,name_internal,description,image_teaser,image_offer,configurator_type,',
'iconfile' => 'EXT:ep_events/Resources/Public/images/tx_epevents_domain_model_hotel.gif'
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, name_internal,
description, image_teaser, image_offer, configurator_type',
],
'types' => [
'1' => [
'showitem' => '--palette--;;general, --palette--;;naming, description,
--div--;Bilder, image_teaser, image_offer',
'columnsOverrides' => [
'description' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
],
],
],
'palettes' => [
'general' => ['showitem' => 'configurator_type, hidden'],
'naming' => ['showitem' => 'name, name_internal'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0]
],
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_epevents_domain_model_hotel',
'foreign_table_where' => 'AND tx_epevents_domain_model_hotel.pid=###CURRENT_PID### AND tx_epevents_domain_model_hotel.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
]
],
'hidden' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
],
],
'starttime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'endtime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'name' => [
'exclude' => 0,
'label' => 'Bezeichnung',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
],
],
'name_internal' => [
'exclude' => 0,
'label' => 'Bezeichnung intern',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
],
],
'description' => [
'exclude' => 0,
'label' => 'Beschreibung',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'image_teaser' => [
'exclude' => 0,
'label' => 'Bild Teaser',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_teaser',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'image_offer' => [
'exclude' => 0,
'label' => 'Bild Angebotsseite',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_offer',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'configurator_type' => [
'exclude' => 0,
'label' => 'Konfigurator Typ',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['3-Sterne', 1],
['4-Sterne', 2],
['5-Sterne', 3],
['Spezial', 4],
],
'default' => 1,
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'eval' => ''
],
],
],
];
@@ -0,0 +1,320 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_events/Resources/Private/Language/locallang.xlf:tx_epevents_domain_model_location',
'label' => 'name',
'default_sortby' => 'ORDER BY name',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => TRUE,
'versioningWS' => 2,
'versioning_followPages' => TRUE,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'name,description_short,description_long,season,image_header,image_teaser,image_offer,
configurator_type,configurator_distance,footer_text1,footer_text2,footer_text3,',
'iconfile' => 'EXT:ep_events/Resources/Public/images/tx_epevents_domain_model_location.gif'
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, description_short,
description_long, season, image_header, image_teaser, image_offer, configurator_type, configurator_distance,
footer_text1, footer_text2, footer_text3',
],
'types' => [
'1' => [
'showitem' => 'hidden, --palette--;;configurator,
name, description_short, description_long, season, footer_text1, footer_text2, footer_text3,
--div--;Bilder, image_header, image_teaser, image_offer',
'columnsOverrides' => [
'description_short' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'description_long' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'footer_text1' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'footer_text2' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'footer_text3' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
],
],
],
'palettes' => [
'configurator' => ['showitem' => 'configurator_type, configurator_distance'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0]
],
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_epevents_domain_model_location',
'foreign_table_where' => 'AND tx_epevents_domain_model_location.pid=###CURRENT_PID### AND tx_epevents_domain_model_location.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
]
],
'hidden' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
],
],
'starttime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'endtime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'name' => [
'exclude' => 0,
'label' => 'Bezeichnung',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim'
],
],
'description_short' => [
'exclude' => 0,
'label' => 'Beschreibung kurz',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'description_long' => [
'exclude' => 0,
'label' => 'Beschreibung lang',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'season' => [
'exclude' => 0,
'label' => 'Beste Reisezeit',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 5,
'eval' => 'trim',
],
],
'image_header' => [
'exclude' => 0,
'label' => 'Bild Header',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_header',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'image_teaser' => [
'exclude' => 0,
'label' => 'Bild Teaser',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_teaser',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'image_offer' => [
'exclude' => 0,
'label' => 'Bild Angebotsseite',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_offer',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'footer_text1' => [
'exclude' => 0,
'label' => 'Footer Text 1',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'footer_text2' => [
'exclude' => 0,
'label' => 'Footer Text 2',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'footer_text3' => [
'exclude' => 0,
'label' => 'Footer Text 3',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'configurator_type' => [
'exclude' => 0,
'label' => 'Konfigurator Typ',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Meer', 1],
['Berge', 2],
['Städte', 3],
['Spezial', 4],
],
'default' => 1,
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'eval' => ''
],
],
'configurator_distance' => [
'exclude' => 0,
'l10n_mode' => 'exclude',
'label' => 'Entfernung',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[ 'Deutschland', \EP\EpEvents\Domain\Model\Location::DISTANCE_GERMANY ],
[ 'Europa', \EP\EpEvents\Domain\Model\Location::DISTANCE_EUROPE ],
[ 'Welt', \EP\EpEvents\Domain\Model\Location::DISTANCE_WORLD ],
]
],
],
],
];
@@ -0,0 +1,494 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_events/Resources/Private/Language/locallang.xlf:tx_epevents_domain_model_offer',
'label' => 'name_internal',
'default_sortby' => 'ORDER BY name_internal',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => TRUE,
'versioningWS' => 2,
'versioning_followPages' => TRUE,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'name,name_internal,groupname,header,arrival,schedule,services,guidelines,image_header,
booking_form,configurator_type,contact,hotel,location,activities,',
'iconfile' => 'EXT:ep_events/Resources/Public/images/tx_epevents_domain_model_offer.gif',
'type' => 'type',
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, name, name_internal,
groupname, price, headline, header, arrival, schedule, services, guidelines, image_teaser,
image_teaser_mobile, image_header, booking_form, configurator_type, contact, hotel, location, activities,
detail_page, url, url_rendered',
],
'types' => [
'1' => [
'showitem' => 'hidden,
--palette--;;general, --palette--;;naming, headline, header, services,
--div--;Bilder, image_teaser, image_teaser_mobile, image_header,
--div--;Verknüpfungen, contact, hotel, location, activities',
'columnsOverrides' => [
'header' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'services' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
],
],
'2' => [
'showitem' => 'hidden,
--palette--;;general_ext, --palette--;;naming, --palette--;;url, groupname, headline, header,
services, arrival, schedule, guidelines,
--div--;Bilder/Dateien, image_header, booking_form,
--div--;Verknüpfungen, contact, hotel, location, activities',
'columnsOverrides' => [
'header' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'arrival' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'schedule' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'services' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
'guidelines' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
],
],
],
'palettes' => [
'general' => ['showitem' => 'type, configurator_type, detail_page'],
'general_ext' => ['showitem' => 'type, configurator_type, price'],
'naming' => ['showitem' => 'name, name_internal'],
'url' => ['showitem' => 'url, url_rendered'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0]
],
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_epevents_domain_model_offer',
'foreign_table_where' => 'AND tx_epevents_domain_model_offer.pid=###CURRENT_PID### AND tx_epevents_domain_model_offer.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
]
],
'hidden' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
],
],
'starttime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'endtime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'type' => [
'exclude' => 0,
'l10n_mode' => 'exclude',
'label' => 'Angebotsart',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[ 'Beispiel', \EP\EpEvents\Domain\Model\Offer::TYPE_EXAMPLE ],
[ 'Angebotslink', \EP\EpEvents\Domain\Model\Offer::TYPE_CLIENT ],
]
],
],
'name' => [
'exclude' => 0,
'label' => 'Bezeichnung',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
],
],
'name_internal' => [
'exclude' => 0,
'label' => 'Bezeichnung intern',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
],
],
'groupname' => [
'exclude' => 0,
'label' => 'Gruppe/Kontakt',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 5,
'eval' => 'trim',
],
],
'price' => [
'exclude' => 0,
'label' => 'Preis',
'config' => [
'type' => 'input',
'size' => 8,
'eval' => 'int'
],
],
'headline' => [
'exclude' => 0,
'label' => 'Headline',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
],
],
'header' => [
'exclude' => 0,
'label' => 'Header',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'arrival' => [
'exclude' => 0,
'label' => 'Anreise',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'schedule' => [
'exclude' => 0,
'label' => 'Ablauf',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'services' => [
'exclude' => 0,
'label' => 'Leistungen',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'guidelines' => [
'exclude' => 0,
'label' => 'Angebotsrichtlinien',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'image_teaser' => [
'exclude' => 0,
'label' => 'Bild Teaser',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_teaser',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'image_teaser_mobile' => [
'exclude' => 0,
'label' => 'Bild Teaser (mobil)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_teaser_m',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'image_header' => [
'exclude' => 0,
'label' => 'Bild Header',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_header',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'booking_form' => [
'exclude' => 0,
'label' => 'Buchungsformular',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'booking_form',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:media.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_UNKNOWN => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
]
),
],
'configurator_type' => [
'exclude' => 0,
'label' => 'Konfigurator Typ',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Incentive', 1],
['Teambuilding', 2],
['Meeting', 3],
['Corporate Event', 4],
],
'default' => 1,
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'eval' => ''
],
],
'contact' => [
'exclude' => 0,
'label' => 'Ansprechpartner',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epevents_domain_model_contact',
'foreign_table_where' => 'AND 1=1 order by name',
'minitems' => 1,
'maxitems' => 1,
],
],
'hotel' => [
'exclude' => 0,
'label' => 'Unterkunft',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epevents_domain_model_hotel',
'foreign_table_where' => 'AND 1=1 order by name',
'minitems' => 1,
'maxitems' => 1,
],
],
'location' => [
'exclude' => 0,
'label' => 'Location',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epevents_domain_model_location',
'foreign_table_where' => 'AND 1=1 order by name',
'minitems' => 1,
'maxitems' => 1,
],
],
'activities' => [
'exclude' => 0,
'label' => 'Programmpunkte',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'foreign_table' => 'tx_epevents_domain_model_activity',
'foreign_table_where' => 'AND 1=1 order by name',
'MM' => 'tx_epevents_offer_activity_mm',
'size' => 10,
'autoSizeMax' => 30,
'minitems' => 1,
'maxitems' => 9999,
'multiple' => 0,
'wizards' => [
'suggest' => [
'type' => 'suggest',
'default' => [
'searchWholePhrase' => 1,
]
]
],
],
],
'detail_page' => [
'exclude' => 0,
'label' => 'Detailseite',
'config' => [
'type' => 'input',
'size' => 4,
'eval' => 'int,required',
'wizards' => [
'_PADDING' => 2,
'link' => [
'type' => 'popup',
'title' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link_formlabel',
'icon' => 'actions-wizard-link',
'module' => [
'name' => 'wizard_link',
],
'params' => [
'blindLinkOptions' => 'file,folder,mail,spec,url',
],
'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1'
],
],
'softref' => 'typolink'
],
],
'url' => [
'exclude' => 0,
'label' => 'URL Segment',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,lower,nospace',
],
],
'url_rendered' => [
'exclude' => 0,
'label' => 'Resultierende URL',
'config' => [
'type' => 'user',
'userFunc' => \EP\EpEvents\Form\UrlField::class . '->render',
]
],
],
];
@@ -0,0 +1,169 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_events/Resources/Private/Language/locallang.xlf:tx_epevents_domain_model_testimonial',
'label' => 'client_name',
'default_sortby' => 'ORDER BY client_name',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => TRUE,
'versioningWS' => 2,
'versioning_followPages' => TRUE,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'client_name,client_image,quote,',
'iconfile' => 'EXT:ep_events/Resources/Public/images/tx_epevents_domain_model_testimonial.gif'
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, client_name, client_image,
quote',
],
'types' => [
'1' => [
'showitem' => 'hidden, client_name, client_image, quote',
'columnsOverrides' => [
'quote' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
],
],
],
'palettes' => [
'1' => ['showitem' => ''],
],
'columns' => [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0]
],
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_epevents_domain_model_testimonial',
'foreign_table_where' => 'AND tx_epevents_domain_model_testimonial.pid=###CURRENT_PID### AND tx_epevents_domain_model_testimonial.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
]
],
'hidden' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
],
],
'starttime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'endtime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'client_name' => [
'exclude' => 0,
'label' => 'Name, Firma',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim'
],
],
'client_image' => [
'exclude' => 0,
'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'client_image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'quote' => [
'exclude' => 0,
'label' => 'Zitat',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
],
];
@@ -0,0 +1,268 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_events/Resources/Private/Language/locallang.xlf:tx_epevents_domain_model_traveltype',
'label' => 'title',
'default_sortby' => 'ORDER BY title ASC',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => TRUE,
'versioningWS' => 2,
'versioning_followPages' => TRUE,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'title,subtitle,headertext,subheadline,description',
'iconfile' => 'EXT:ep_events/Resources/Public/images/tx_epevents_domain_model_traveltype.gif',
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, subtitle,
headertext, subheadline, bannertext, description, buttonlabel, configurator_type, image_header, image_banner',
],
'types' => [
'1' => [
'showitem' => '--palette--;;general, --palette--;;herounit, subheadline, bannertext,
buttonlabel, description,
--div--;Bilder,image_header, image_banner',
'columnsOverrides' => [
'description' => [
'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]',
],
],
],
],
'palettes' => [
'general' => ['showitem' => 'hidden, configurator_type'],
'herounit' => ['showitem' => 'title, subtitle, headertext'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0]
],
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_epevents_domain_model_offer',
'foreign_table_where' => 'AND tx_epevents_domain_model_offer.pid=###CURRENT_PID### AND tx_epevents_domain_model_offer.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
]
],
'hidden' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => [
'type' => 'check',
],
],
'starttime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'endtime' => [
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'size' => 13,
'max' => 20,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
],
],
'title' => [
'exclude' => 0,
'label' => 'Titel',
'config' => [
'type' => 'text',
'cols' => 60,
'rows' => 2,
'eval' => 'trim,required'
],
],
'subtitle' => [
'exclude' => 0,
'label' => 'Untertitel',
'config' => [
'type' => 'text',
'cols' => 60,
'rows' => 2,
'eval' => 'trim'
],
],
'headertext' => [
'exclude' => 0,
'label' => 'Headertext',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 4,
'eval' => 'trim',
],
],
'subheadline' => [
'exclude' => 0,
'label' => 'Subheadline',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim',
],
],
'description' => [
'exclude' => 0,
'label' => 'Beschreibung',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
],
],
'bannertext' => [
'exclude' => 0,
'label' => 'Bannertext',
'config' => [
'type' => 'text',
'cols' => 40,
'rows' => 3,
'eval' => 'trim',
],
],
'buttonlabel' => [
'exclude' => 0,
'label' => 'Button Label',
'config' => [
'type' => 'text',
'cols' => 30,
'rows' => 2,
'eval' => 'trim',
'default' => 'Beipiel Angebote',
],
],
'image_header' => [
'exclude' => 0,
'label' => 'Bild Header',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_header',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
'jpg'
),
],
'image_banner' => [
'exclude' => 0,
'label' => 'Banner Hintergrund',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image_banner',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
],
'maxitems' => 1
],
'jpg'
),
],
'configurator_type' => [
'exclude' => 0,
'label' => 'Konfigurator Typ',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Incentive', 1],
['Team Building', 2],
['Meeting', 3],
['Corporate Event', 4],
],
'default' => 1,
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'eval' => ''
],
],
],
];
@@ -0,0 +1,12 @@
tt_content.banner =< lib.fluidContent
tt_content.banner {
templateName = Banner
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = assets
references.table = tt_content
as = image
}
}
}
@@ -0,0 +1,12 @@
tt_content.herounit =< lib.fluidContent
tt_content.herounit {
templateName = Herounit
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = assets
references.table = tt_content
as = image
}
}
}
@@ -0,0 +1,4 @@
tt_content.statement =< lib.fluidContent
tt_content.statement {
templateName = Statement
}
@@ -0,0 +1,12 @@
tt_content.tile =< lib.fluidContent
tt_content.tile {
templateName = Tile
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = assets
references.table = tt_content
as = image
}
}
}
@@ -0,0 +1,8 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/Static/setup.txt">
lib.fluidContent {
layoutRootPaths.20 = EXT:ep_events/Resources/Private/Layouts/FluidStyledContent
templateRootPaths.20 = EXT:ep_events/Resources/Private/Templates/FluidStyledContent
partialRootPaths.20 = EXT:ep_events/Resources/Private/Partials
settings < plugin.tx_epevents.settings
}
@@ -0,0 +1 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:form/Configuration/TypoScript/setup.txt">
@@ -0,0 +1,17 @@
lib.configurator = USER
lib.configurator {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = EpEvents
pluginName = Configurator
vendorName = EP
controller = Form
action = configurator
switchableControllerActions {
Form {
1 = configurator
}
}
settings =< plugin.tx_epevents.settings
persistence =< plugin.tx_epevents.persistence
view =< plugin.tx_epevents.view
}
@@ -0,0 +1,49 @@
lib.dynamicContent = COA
lib.dynamicContent {
5 = LOAD_REGISTER
5 {
colPos.cObject = TEXT
colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
pageUid.cObject = TEXT
pageUid.cObject {
field = pageUid
ifEmpty.data = TSFE:id
}
contentFromPid.cObject = TEXT
contentFromPid.cObject {
data = DB:pages:{register:pageUid}:content_from_pid
data.insertData = 1
}
wrap.cObject = TEXT
wrap.cObject {
field = wrap
}
}
20 = CONTENT
20 {
table = tt_content
select {
includeRecordsWithoutDefaultTranslation = 1
orderBy = sorting
where = colPos={register:colPos}
where.insertData = 1
pidInList.data = register:pageUid
pidInList.override.data = register:contentFromPid
}
stdWrap {
dataWrap = {register:wrap}
required = 1
}
}
90 = RESTORE_REGISTER
}
lib.dynamicContentSlide =< lib.dynamicContent
lib.dynamicContentSlide.20.slide = -1
@@ -0,0 +1,126 @@
lib.parseFunc {
makelinks = 1
makelinks {
http {
keep = path
extTarget = _blank
}
mailto {
keep = path
}
}
tags {
link = TEXT
link {
current = 1
typolink {
parameter {
data = parameters : allParams
}
extTarget = _blank
}
parseFunc.constants = 1
}
a = TEXT
a {
current = 1
typolink {
parameter.data = parameters:href
title.data = parameters:title
ATagParams.data = parameters:allParams
target.data = parameters:target
extTarget = _blank
extTarget.override.data = parameters:target
}
}
}
allowTags := addToList(a, abbr, acronym, address, article, aside, b, bdo)
allowTags := addToList(big, blockquote, br, caption, center, cite, code, col)
allowTags := addToList(colgroup, dd, del, dfn, dl, div, dt, em, font)
allowTags := addToList(footer, header, h1, h2, h3, h4, h5, h6, hr, i, img)
allowTags := addToList(ins, kbd, label, li, link, meta, nav, ol, p, pre, q)
allowTags := addToList(samp, sdfield, section, small, span, strike, strong)
allowTags := addToList(style, sub, sup, table, thead, tbody, tfoot, td, th)
allowTags := addToList(tr, title, tt, u, ul, var)
denyTags = *
sword = <span class="text-highlight">|</span>
constants = 1
nonTypoTagStdWrap {
HTMLparser = 1
HTMLparser {
keepNonMatchedTags = 1
htmlSpecialChars = 2
}
}
}
lib.parseFunc_RTE < lib.parseFunc
lib.parseFunc_RTE {
externalBlocks := addToList(article, aside, blockquote, div, dd, dl, footer)
externalBlocks := addToList(header, nav, ol, section, table, ul, pre)
externalBlocks {
ol {
stripNL = 1
stdWrap {
parseFunc = < lib.parseFunc
}
}
ul {
stripNL = 1
stdWrap {
parseFunc = < lib.parseFunc
}
}
table {
stripNL = 1
stdWrap {
wrap = <div class="table-responsive">|</div>
}
HTMLtableCells = 1
HTMLtableCells {
default.stdWrap {
parseFunc = < lib.parseFunc_RTE
parseFunc {
nonTypoTagStdWrap {
encapsLines {
nonWrappedTag =
}
}
}
}
}
}
pre {
stripNL = 1
}
div {
stripNL = 1
callRecursive = 1
}
blockquote < .div
article < .div
aside < .div
footer < .div
header < .div
nav < .div
section < .div
dl < .div
dd < .div
}
nonTypoTagStdWrap {
encapsLines {
encapsTagList = p, pre, h1, h2, h3, h4, h5, h6, hr, dt
remapTag.DIV = P
nonWrappedTag = P
innerStdWrap_all.ifBlank = &nbsp;
}
}
nonTypoTagStdWrap {
HTMLparser = 1
HTMLparser {
keepNonMatchedTags = 1
htmlSpecialChars = 2
}
}
}
@@ -0,0 +1,17 @@
lib.searchForm = USER
lib.searchForm {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = EpEvents
pluginName = SearchForm
vendorName = EP
controller = Search
action = form
switchableControllerActions {
Search {
1 = form
}
}
settings =< plugin.tx_epevents.settings
persistence =< plugin.tx_epevents.persistence
view =< plugin.tx_epevents.view
}
@@ -0,0 +1,31 @@
ajax_page_json = PAGE
ajax_page_json {
typeNum = 1703
config {
disableAllHeaderCode = 1
additionalHeaders.10.header = Content-type:application/json
xhtml_cleaning = 0
admPanel = 0
debug = 0
no_cache = 1
}
10 = USER_INT
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = EpEvents
pluginName = Ajax
vendorName = EP
controller = AjaxForm
action = processInquiryForm
switchableControllerActions {
AjaxForm {
1 = processInquiryForm
2 = processConfiguratorForm
}
}
settings =< plugin.tx_epevents.settings
persistence =< plugin.tx_epevents.persistence
view =< plugin.tx_epevents.view
}
}
@@ -0,0 +1,106 @@
page = PAGE
page {
config {
index_enable = 1
}
meta {
viewport = width=device-width, initial-scale=1, maximum-scale=1
X-UA-Compatible = ie=edge
}
shortcutIcon = EXT:ep_events/Resources/Public/images/favicon.ico
includeJS {
remarketing = https://www.googleadservices.com/pagead/conversion_async.js
remarketing.external = 1
remarketing.disableCompression = 1
}
includeJSFooter {
main = EXT:ep_events/Resources/Public/js/main.js
}
includeCSS {
main = EXT:ep_events/Resources/Public/css/main.css
}
10 = FLUIDTEMPLATE
10 {
file {
cObject = TEXT
cObject {
data = levelfield: -1, backend_layout_next_level, slide
override {
data = TSFE:page|backend_layout
}
ifEmpty = Default
split {
token = pagets__
1.current = 1
1.wrap = |
}
wrap = typo3conf/ext/ep_events/Resources/Private/Templates/Page/|.html
case = ucfirst
}
}
layoutRootPaths.0 = EXT:ep_events/Resources/Private/Layouts/
partialRootPaths.0 = EXT:ep_events/Resources/Private/Partials/
templateRootPaths.0 = EXT:ep_events/Resources/Private/Templates/
settings < plugin.tx_epevents.settings
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10.references.fieldName = media
20 = EP\EpEvents\DataProcessing\TraveltypeProcessor
30 = EP\EpEvents\DataProcessing\OfferProcessor
}
}
headerData.999 = TEXT
headerData.999.value (
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','{$plugin.tx_epevents.settings.googleTagManagerId}');</script>
<!-- End Google Tag Manager -->
<script type="text/javascript">
/* <![CDATA[ */
goog_snippet_vars = function() {
var w = window;
w.google_conversion_id = 1072535457;
w.google_conversion_label = "KiaaCObA9XEQoa-2_wM";
w.google_remarketing_only = false;
}
// DO NOT CHANGE THE CODE BELOW.
goog_report_conversion = function(url) {
goog_snippet_vars();
window.google_conversion_format = "3";
var opt = new Object();
opt.onload_callback = function() {
if (typeof(url) != 'undefined') {
window.location = url;
}
}
var conv_handler = window['google_trackConversion'];
if (typeof(conv_handler) == 'function') {
conv_handler(opt);
}
}
/* ]]> */
</script>
)
headerData.999.stdWrap.if.isTrue = {$plugin.tx_epevents.settings.googleTagManagerId}
}
[globalVar = TSFE:page|doktype = 101]
page.stdWrap.addPageCacheTags = category_page,epevents_page
[end]
[globalVar = TSFE:page|doktype = 102]
page.stdWrap.addPageCacheTags = offer_page,epevents_page
[end]
@@ -0,0 +1,83 @@
xmlSitemap = PAGE
xmlSitemap {
typeNum = 1848
config {
xhtml_cleaning = none
no_cache = 1
disableAllHeaderCode = 1
additionalHeaders = Content-Type: text/xml; charset=utf-8
simulateStaticDocuments = 0
tx_realurl_enable = 1
}
wrap (
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation="http://www.google.com/schemas/sitemap/0.84 www.google.com/schemas/sitemap/0.84/sitemap.xsd
">|</urlset>
)
10 = COA
10 {
10 = HMENU
10 {
special = list
# Ausgangspunkt / Root Seite
special.value = {$plugin.tx_epevents.settings.xmlSitemapRootPageUid}
excludeDoktypes = 2,3,5,6,7,199,254,255
excludeUidList = {$plugin.tx_epevents.settings.xmlSitemapExcludeUids}
includeNotInMenu = 1
1 = TMENU
1 {
expAll = 1
NO {
doNotLinkIt = 1
stdWrap {
cObject = COA
cObject {
wrap = <url>|</url>
10 = TEXT
10 {
typolink {
parameter.field = uid
returnLast = url
forceAbsoluteUrl = 1
}
wrap = <loc>|</loc>
}
20 = TEXT
20 {
field = SYS_LASTCHANGED
strftime = %Y-%m-%dT%H:%M:%SZ
wrap = <lastmod>|</lastmod>
}
30 = TEXT
30.value = <priority>1.0</priority>
if.isFalse.field = shortcut
}
}
}
}
2 < .1
2.NO.stdWrap.cObject.30.value = <priority>0.9</priority>
3 < .1
3.NO.stdWrap.cObject.30.value = <priority>0.8</priority>
4 < .1
4.NO.stdWrap.cObject.30.value = <priority>0.7</priority>
5 < .1
5.NO.stdWrap.cObject.30.value = <priority>0.6</priority>
6 < .1
6.NO.stdWrap.cObject.30.value = <priority>0.5</priority>
7 < .6
8 < .6
9 < .6
10 < .6
}
}
}
@@ -0,0 +1,53 @@
plugin.tx_epevents {
settings {
# cat=plugin.tx_epevents//a; type=string; label=Helper navigation PID
helperNavPid =
# cat=plugin.tx_epevents//a; type=string; label=Footer navigation PID
footerNavPid =
# cat=plugin.tx_epevents//a; type=string; label=Contact page UID
contactPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Data protection page UID
dataProtectionPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Legal notice page UID
legalNoticePageUid =
# cat=plugin.tx_epevents//a; type=string; label=Terms page UID
termsPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Offer detail page UID
offerDetailPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Activity detail page UID
activityDetailPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Activity list page UID
activityListPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Inquiry page UID
inquiryPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Feedback page UID
feedbackPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Ajax page UID
ajaxPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Search page UID
searchPageUid =
# cat=plugin.tx_epevents//a; type=string; label=Inquiry recipient email
inquiryToEmail =
# cat=plugin.tx_epevents//a; type=string; label=Inquiry recipient name
inquiryToName =
# cat=plugin.tx_epevents//a; type=string; label=Sitemap root page UID
xmlSitemapRootPageUid =
# cat=plugin.tx_epevents//a; type=string; label=XML sitemap page UIDs to exclude
xmlSitemapExcludeUids =
# cat=plugin.tx_epevents//a; type=string; label=Google Tag Manager ID
googleTagManagerId =
# cat=plugin.tx_epevents//a; type=string; label=Ignore following IPs in searchlog
searchLogIgnoreIps =
# cat=plugin.tx_epevents//a; type=string; label=Activity default header image
activityDefaultHeaderImage =
# cat=plugin.tx_epevents//a; type=string; label=Activity default keywords image
activityDefaultKeywordsImage =
}
persistence {
# cat=plugin.tx_epevents//a; type=string; label=Default storage PID
storagePid =
}
}
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/Static/constants.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:form/Configuration/TypoScript/constants.txt">
@@ -0,0 +1,174 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Extensions/FluidStyledContent.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Extensions/Form.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Library/DynamicContent.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Library/ParseFunc.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Library/SearchForm.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Library/Configurator.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/ContentElements/banner.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/ContentElements/herounit.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/ContentElements/statement.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/ContentElements/tile.ts">
plugin.tx_epevents {
features.skipDefaultArguments = 1
view {
layoutRootPaths.10 = EXT:ep_events/Resources/Private/Layouts/
templateRootPaths.10 = EXT:ep_events/Resources/Private/Templates/
partialRootPaths.10 = EXT:ep_events/Resources/Private/Partials/
widget.TYPO3\CMS\Fluid\ViewHelpers\Widget\PaginateViewHelper.templateRootPath = EXT:ep_events/Resources/Private/Templates/
}
persistence {
storagePid = {$plugin.tx_epevents.persistence.storagePid}
}
settings < lib.fluidContent.settings
settings {
helperNavPid = {$plugin.tx_epevents.settings.helperNavPid}
footerNavPid = {$plugin.tx_epevents.settings.footerNavPid}
contactPageUid = {$plugin.tx_epevents.settings.contactPageUid}
inquiryPageUid = {$plugin.tx_epevents.settings.inquiryPageUid}
ajaxPageUid = {$plugin.tx_epevents.settings.ajaxPageUid}
searchPageUid = {$plugin.tx_epevents.settings.searchPageUid}
inquiryToEmail = {$plugin.tx_epevents.settings.inquiryToEmail}
inquiryToName = {$plugin.tx_epevents.settings.inquiryToName}
xmlSitemapRootPageUid = {$plugin.tx_epevents.settings.xmlSitemapRootPageUid}
xmlSitemapExcludeUids = {$plugin.tx_epevents.settings.xmlSitemapExcludeUids}
googleTagManagerId = {$plugin.tx_epevents.settings.googleTagManagerId}
offerDetailPageUid = {$plugin.tx_epevents.settings.offerDetailPageUid}
activityDetailPageUid = {$plugin.tx_epevents.settings.activityDetailPageUid}
activityListPageUid = {$plugin.tx_epevents.settings.activityListPageUid}
dataProtectionPageUid = {$plugin.tx_epevents.settings.dataProtectionPageUid}
legalNoticePageUid = {$plugin.tx_epevents.settings.legalNoticePageUid}
termsPageUid = {$plugin.tx_epevents.settings.termsPageUid}
feedbackPageUid = {$plugin.tx_epevents.settings.feedbackPageUid}
searchLogIgnoreIps = {$plugin.tx_epevents.settings.searchLogIgnoreIps}
activityDefaultHeaderImage = {$plugin.tx_epevents.settings.activityDefaultHeaderImage}
activityDefaultKeywordsImage = {$plugin.tx_epevents.settings.activityDefaultKeywordsImage}
configurator {
options {
travelType {
1 = Incentive
2 = Teambuilding
3 = Meeting
4 = Corporate Event
}
locationType {
1 = Meer
2 = Berge
3 = Städte
4 = Spezial
}
accommodationType {
1 = 3-Sterne
2 = 4-Sterne
3 = 5-Sterne
4 = Spezial
}
programmeType {
1 = Outdoor & Action
2 = Event-Gastronomie
3 = Sightseeing
4 = Spezial
}
distance {
1 = Deutschland
2 = Europa
3 = Welt
}
pax {
1 = 15 - 20
2 = 20 - 30
3 = 30 - 40
4 = 40 - 50
5 = 50 - 60
6 = 60 - 80
7 = 80 - 100
8 = 100 - 120
9 = 120 - 150
10 = 150 - 200
11 = 200 - 250
12 = 250 - 300
13 = 350 - 400
14 = 400 - 450
15 = 450 - 500
}
budget {
1 = nicht festgelegt
2 = 300 - 400 €
3 = 400 - 500 €
4 = 500 - 600 €
5 = 600 - 700 €
6 = 700 - 800 €
7 = 800 - 900 €
8 = 900 - 1000 €
9 = 1000 - 1100 €
10 = 1100 - 1200 €
11 = 1200 - 1300 €
12 = 1300 - 1400 €
13 = 1400 - 1500 €
14 = 1500 - 1600 €
15 = 1600 - 1700 €
16 = 1700 - 1800 €
17 = 1800 - 1900 €
18 = 1900 - 2000 €
19 = 2000 - 2100 €
20 = 2100 - 2200 €
21 = 2200 - 2300 €
22 = 2300 - 2400 €
23 = 2400 - 2500 €
24 = 2500 - 2600 €
25 = 2600 - 2700 €
26 = 2700 - 2800 €
27 = 2800 - 2900 €
28 = 2900 - 3000 €
}
period {
1 = 1 Nacht
2 = 2 Nächte
3 = 3 Nächte
4 = 4 Nächte
5 = 5 Nächte
6 = 6 Nächte
7 = 7 Nächte
}
}
defaults {
budget = 6
}
}
}
}
lib.parseFunc_RTE {
nonTypoTagStdWrap.encapsLines.addAttributes.P.class >
nonTypoTagStdWrap.encapsLines.addAttributes.H2.class = headline headline--primary
nonTypoTagStdWrap.encapsLines.addAttributes.H3.class = headline
}
tt_content.stdWrap.innerWrap >
lib.stdheader.3.headerClass >
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Page/Main.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Page/Ajax.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ep_events/Configuration/TypoScript/Page/XMLSitemap.ts">
config {
doctype = html5
removeDefaultCSS = 1
removePageCss = 1
removeDefaultJS = 0
disablePrefixComment = 1
inlineStyle2TempFile = 1
tx_realurl_enable = 1
absRefPrefix = /
language = de
locale_all = de_DE.UTF-8
sys_language_uid = 0
htmlTag_langKey = de
compressJs = 1
compressCss = 1
typolinkEnableLinksAcrossDomains = 1
}
+1
View File
@@ -0,0 +1 @@
deny from all
@@ -0,0 +1,9 @@
ul.coloured-list {
list-style: circle;
}
ul.footnote-list {
list-style: disc;
}
a.button {
font-weight: 700;
}
@@ -0,0 +1 @@
<!DOCTYPE html><html lang=en><meta charset=utf-8><meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width"><title>Error 500 (Server Error)!!1</title><style>*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{color:#222;text-align:unset;margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px;}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}pre{white-space:pre-wrap;}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}</style><div id="af-error-container"><a href=//www.google.com><span id=logo aria-label=Google></span></a><p><b>500.</b> <ins>Thats an error.</ins><p>There was an error. Please try again later. <ins>Thats all we know.</ins></div>
@@ -0,0 +1 @@
<!DOCTYPE html><html lang=en><meta charset=utf-8><meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width"><title>Error 500 (Server Error)!!1</title><style>*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{color:#222;text-align:unset;margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px;}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}pre{white-space:pre-wrap;}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}</style><div id="af-error-container"><a href=//www.google.com><span id=logo aria-label=Google></span></a><p><b>500.</b> <ins>Thats an error.</ins><p>There was an error. Please try again later. <ins>Thats all we know.</ins></div>
@@ -0,0 +1,62 @@
{
"name": "",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
"units_per_em": 1000,
"ascent": 850,
"glyphs": [
{
"uid": "44e04715aecbca7f266a17d5a7863c68",
"css": "plus",
"code": 59392,
"src": "fontawesome"
},
{
"uid": "861ab06e455e2de3232ebef67d60d708",
"css": "minus",
"code": 59393,
"src": "fontawesome"
},
{
"uid": "12f4ece88e46abd864e40b35e05b11cd",
"css": "ok",
"code": 59394,
"src": "fontawesome"
},
{
"uid": "ee6d80c7df78180368f1fbb5c0673a96",
"css": "icon_mail_circle",
"code": 59396,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M500 940C743 940 942 741 941 499 940 256 743 59 500 59 257 59 60 257 60 500 60 743 258 941 500 940M476 1000C462 998 448 997 434 995 356 985 284 958 219 913 117 843 48 748 17 628-25 460 10 307 121 174 194 88 287 33 398 11 557-20 701 16 825 121 911 194 966 287 989 397 1017 536 992 665 912 782 842 884 746 952 626 983 596 991 565 993 534 998 531 999 527 999 524 1000L476 1000ZM510 699C586 699 663 699 739 699 764 699 780 683 780 658 780 555 780 451 780 347 780 322 765 306 739 306 587 306 434 306 281 306 277 306 272 307 268 308 251 313 241 327 241 347 241 394 241 441 241 488 241 545 241 601 241 658 241 671 244 682 254 690 262 697 272 699 282 699L510 699ZM216 670L216 335C217 334 217 334 217 334 221 306 246 282 281 282 432 282 583 282 734 282 737 282 740 282 744 282 770 283 788 296 799 319 802 324 803 330 804 335L804 670C804 671 804 671 803 672 796 704 773 723 740 723L307 723C297 723 287 723 278 723 252 722 233 710 222 686 219 681 218 676 216 670M419 519C399 497 379 476 360 454 338 430 316 406 294 382 289 377 288 371 292 366 295 362 301 359 306 362 309 363 311 365 313 367 362 421 412 474 460 529 485 556 522 558 547 540 554 535 561 528 567 521 614 470 661 419 707 367 715 358 725 361 729 367 732 372 731 377 726 383 706 405 685 428 665 450 644 473 623 496 602 519 609 526 617 533 624 540 657 570 691 600 724 631 724 631 725 632 726 632 732 639 733 645 728 651 723 656 715 656 709 650 686 629 662 607 639 586 621 570 603 554 585 537 566 561 542 577 510 577 479 577 455 562 436 537 424 548 413 558 402 568 372 596 342 623 312 650 305 656 298 656 293 651 288 645 289 638 295 632 335 596 375 560 414 523 416 522 417 521 419 519",
"width": 1000
},
"search": [
"icon_mail_circle"
]
},
{
"uid": "1b0a86f5250095cc6878f1215dedf51c",
"css": "icon_phone_circle",
"code": 59397,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M500 940C743 940 942 741 941 499 940 256 743 59 500 59 257 59 60 257 60 500 60 743 258 941 500 940M476 1000C462 998 448 997 434 995 356 985 284 958 219 913 117 843 48 748 17 628-25 460 10 307 121 174 194 88 287 33 398 11 557-20 701 16 825 121 911 194 966 287 989 397 1017 536 992 665 912 782 842 884 746 952 626 983 596 991 565 993 534 998 531 999 527 999 524 1000L476 1000ZM320 222C352 277 383 331 415 386 384 407 381 438 386 469 396 534 426 588 475 631 492 646 512 657 535 656 545 656 556 653 568 650 598 703 629 757 660 811 613 843 574 850 529 822 499 805 474 783 450 759 367 672 308 571 268 457 254 416 245 374 244 330 244 292 259 262 291 240 300 234 310 228 320 222M445 384C435 383 429 380 425 373 396 322 366 271 337 219 330 208 334 196 345 190 360 181 375 172 390 164 402 157 413 160 420 172 450 223 479 273 508 324 515 336 512 348 500 355 485 364 470 372 455 381 451 383 447 383 445 384M690 807C680 806 674 803 670 796 640 745 610 693 581 642 574 631 578 619 589 613 603 604 618 596 632 588 646 580 657 583 665 597 692 643 719 690 746 737 749 741 751 745 753 749 758 759 755 771 745 777 730 786 714 795 698 804 695 806 691 806 690 807",
"width": 1000
},
"search": [
"icon_phone_circle"
]
},
{
"uid": "531bc468eecbb8867d822f1c11f1e039",
"css": "calendar",
"code": 59395,
"src": "fontawesome"
}
]
}
@@ -0,0 +1,22 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
<defs>
<font id="fontello" horiz-adv-x="1000" >
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="plus" unicode="&#xe800;" d="M786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q23 0 38-16t16-38z" horiz-adv-x="785.7" />
<glyph glyph-name="minus" unicode="&#xe801;" d="M786 439v-107q0-22-16-38t-38-15h-678q-23 0-38 15t-16 38v107q0 23 16 38t38 16h678q23 0 38-16t16-38z" horiz-adv-x="785.7" />
<glyph glyph-name="ok" unicode="&#xe802;" d="M933 534q0-22-16-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q16-15 16-38z" horiz-adv-x="1000" />
<glyph glyph-name="calendar" unicode="&#xe803;" d="M71-79h161v161h-161v-161z m197 0h178v161h-178v-161z m-197 197h161v178h-161v-178z m197 0h178v178h-178v-178z m-197 214h161v161h-161v-161z m411-411h179v161h-179v-161z m-214 411h178v161h-178v-161z m428-411h161v161h-161v-161z m-214 197h179v178h-179v-178z m-196 482v161q0 7-6 12t-12 6h-36q-7 0-12-6t-6-12v-161q0-7 6-13t12-5h36q7 0 12 5t6 13z m410-482h161v178h-161v-178z m-214 214h179v161h-179v-161z m214 0h161v161h-161v-161z m18 268v161q0 7-5 12t-13 6h-35q-7 0-13-6t-5-12v-161q0-7 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 37 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 37 27 63t63 26h35q37 0 64-26t26-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" />
<glyph glyph-name="icon_mail_circle" unicode="&#xe804;" d="M500-90c243 0 442 199 441 441-1 243-198 440-441 440-243 0-440-198-440-441 0-243 198-441 440-440m-24-60c-14 2-28 3-42 5-78 10-150 37-215 82-102 70-171 165-202 285-42 168-7 321 104 454 73 86 166 141 277 163 159 31 303-5 427-110 86-73 141-166 164-276 28-139 3-268-77-385-70-102-166-170-286-201-30-8-61-10-92-15-3-1-7-1-10-2l-48 0z m34 301c76 0 153 0 229 0 25 0 41 16 41 41 0 103 0 207 0 311 0 25-15 41-41 41-152 0-305 0-458 0-4 0-9-1-13-2-17-5-27-19-27-39 0-47 0-94 0-141 0-57 0-113 0-170 0-13 3-24 13-32 8-7 18-9 28-9l228 0z m-294 29l0 335c1 1 1 1 1 1 4 28 29 52 64 52 151 0 302 0 453 0 3 0 6 0 10 0 26-1 44-14 55-37 3-5 4-11 5-16l0-335c0-1 0-1-1-2-7-32-30-51-63-51l-433 0c-10 0-20 0-29 0-26 1-45 13-56 37-3 5-4 10-6 16m203 151c-20 22-40 43-59 65-22 24-44 48-66 72-5 5-6 11-2 16 3 4 9 7 14 4 3-1 5-3 7-5 49-54 99-107 147-162 25-27 62-29 87-11 7 5 14 12 20 19 47 51 94 102 140 154 8 9 18 6 22 0 3-5 2-10-3-16-20-22-41-45-61-67-21-23-42-46-63-69 7-7 15-14 22-21 33-30 67-60 100-91 0 0 1-1 2-1 6-7 7-13 2-19-5-5-13-5-19 1-23 21-47 43-70 64-18 16-36 32-54 49-19-24-43-40-75-40-31 0-55 15-74 40-12-11-23-21-34-31-30-28-60-55-90-82-7-6-14-6-19-1-5 6-4 13 2 19 40 36 80 72 119 109 2 1 3 2 5 4" horiz-adv-x="1000" />
<glyph glyph-name="icon_phone_circle" unicode="&#xe805;" d="M500-90c243 0 442 199 441 441-1 243-198 440-441 440-243 0-440-198-440-441 0-243 198-441 440-440m-24-60c-14 2-28 3-42 5-78 10-150 37-215 82-102 70-171 165-202 285-42 168-7 321 104 454 73 86 166 141 277 163 159 31 303-5 427-110 86-73 141-166 164-276 28-139 3-268-77-385-70-102-166-170-286-201-30-8-61-10-92-15-3-1-7-1-10-2l-48 0z m-156 778c32-55 63-109 95-164-31-21-34-52-29-83 10-65 40-119 89-162 17-15 37-26 60-25 10 0 21 3 33 6 30-53 61-107 92-161-47-32-86-39-131-11-30 17-55 39-79 63-83 87-142 188-182 302-14 41-23 83-24 127 0 38 15 68 47 90 9 6 19 12 29 18m125-162c-10 1-16 4-20 11-29 51-59 102-88 154-7 11-3 23 8 29 15 9 30 18 45 26 12 7 23 4 30-8 30-51 59-101 88-152 7-12 4-24-8-31-15-9-30-17-45-26-4-2-8-2-10-3m245-423c-10 1-16 4-20 11-30 51-60 103-89 154-7 11-3 23 8 29 14 9 29 17 43 25 14 8 25 5 33-9 27-46 54-93 81-140 3-4 5-8 7-12 5-10 2-22-8-28-15-9-31-18-47-27-3-2-7-2-8-3" horiz-adv-x="1000" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path d="M2,0l0,16l12,0l0,-12l-4,-4l-8,0Z" style="fill:#19a0d2;fill-rule:nonzero;"/><path d="M10,4l0,-4l4,4l-4,0Z" style="fill:#fff;fill-opacity:0.65;fill-rule:nonzero;"/><path d="M13,5l0,5l-4,-5l4,0Z" style="fill-opacity:0.2;fill-rule:nonzero;"/><path d="M2,0l0,16l12,0l0,-12l-4,-4l-8,0Zm1,1l6,0l0,4l4,0l0,10l-10,0l0,-14Zm7,0.4l2.6,2.6l-2.6,0l0,-2.6Z" style="fill:#999;fill-rule:nonzero;"/></svg>

After

Width:  |  Height:  |  Size: 807 B

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path d="M2,0l0,16l12,0l0,-12l-4,-4l-8,0Z" style="fill:#1e314b;fill-rule:nonzero;"/><path d="M10,4l0,-4l4,4l-4,0Z" style="fill:#fff;fill-opacity:0.65;fill-rule:nonzero;"/><path d="M13,5l0,5l-4,-5l4,0Z" style="fill-opacity:0.2;fill-rule:nonzero;"/><path d="M2,0l0,16l12,0l0,-12l-4,-4l-8,0Zm1,1l6,0l0,4l4,0l0,10l-10,0l0,-14Zm7,0.4l2.6,2.6l-2.6,0l0,-2.6Z" style="fill:#999;fill-rule:nonzero;"/></svg>

After

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 160 160" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g><circle cx="80" cy="80" r="80" fill="white"/><circle cx="80" cy="80" r="60" fill="grey"/></g></svg>

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Some files were not shown because too many files have changed in this diff Show More