initial commit

This commit is contained in:
origin
2023-12-04 16:40:27 +01:00
commit 813b2d3da4
133 changed files with 50635 additions and 0 deletions

2
Configuration/.htaccess Normal file
View File

@ -0,0 +1,2 @@
Order deny,allow
Deny from all

View File

@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
return [
A2G\A2gTravelBlog\Domain\Model\TravelPost::class => [
'tableName' => 'pages',
],
A2G\A2gTravelBlog\Domain\Model\TravelAuthor::class => [
'tableName' => 'tx_blog_domain_model_author',
],
A2G\A2gTravelBlog\Domain\Model\MapEntry::class => [
'tableName' => 'tx_a2gmaps_domain_model_mapentry',
],
A2G\A2gTravelBlog\Domain\Model\TravelMarker::class => [
'tableName' => 'tx_a2gmaps_domain_model_marker',
],
A2G\A2gTravelBlog\Domain\Model\TravelCategory::class => [
'tableName' => 'sys_category',
]
];

View File

@ -0,0 +1,338 @@
<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Function</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.mapType>
<label>mapType</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">travel map overview</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">travel post detail map</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">travel post categorie map</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">travel post author map</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
</items>
</config>
<onChange>reload</onChange>
</settings.mapType>
<settings.showAuthors>
<label>show authors</label>
<config>
<type>group</type>
<allowed>tx_blog_domain_model_author</allowed>
<fieldControl>
<editPopup>
<disabled>false</disabled>
</editPopup>
<addRecord>
<disabled>false</disabled>
</addRecord>
<listModule>
<disabled>false</disabled>
</listModule>
</fieldControl>
</config>
<displayCond>FIELD:settings.mapType:=:3</displayCond>
</settings.showAuthors>
<settings.showCategories>
<label>show categories</label>
<config>
<type>group</type>
<allowed>sys_category</allowed>
<fieldControl>
<editPopup>
<disabled>false</disabled>
</editPopup>
<addRecord>
<disabled>false</disabled>
</addRecord>
<listModule>
<disabled>false</disabled>
</listModule>
</fieldControl>
</config>
<displayCond>FIELD:settings.mapType:=:2</displayCond>
</settings.showCategories>
<settings.controllsPositions>
<label>position from map controll stuff</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">hide</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">top</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">bottom</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">both</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
</items>
</config>
</settings.controllsPositions>
<settings.useLayerSwitcher>
<label>use layer switcher ( slider )</label>
<config>
<type>check</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
</config>
<onChange>reload</onChange>
</settings.useLayerSwitcher>
<settings.layerSwitcherValue>
<label>layer switcher init value ( slider )</label>
<config>
<type>input</type>
<eval>trim,int</eval>
<size>3</size> </config>
<displayCond>FIELD:settings.useLayerSwitcher:=:1</displayCond>
</settings.layerSwitcherValue>
<settings.zoom>
<label>map zoom ( 0 = auto zoom )</label>
<config>
<type>input</type>
<eval>trim,int</eval>
<size>2</size>
<range type="array">
<lower>0</lower>
<upper>18</upper>
</range>
<default>2</default>
<slider>
<step>1</step>
<width>200</width>
</slider>
</config>
</settings.zoom>
<settings.maxZoom>
<label>map max zoom</label>
<config>
<type>input</type>
<eval>trim,int</eval>
<size>2</size>
<range type="array">
<lower>1</lower>
<upper>18</upper>
</range>
<default>18</default>
<slider>
<step>1</step>
<width>200</width>
</slider>
</config>
</settings.maxZoom>
<settings.showLayerSelect>
<label>show layer select</label>
<config>
<type>check</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
</config>
</settings.showLayerSelect>
<settings.showMyPositionButton>
<label>show my position button ( checkbox )</label>
<config>
<type>check</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
</config>
</settings.showMyPositionButton>
<settings.showRemoveMarkerButton>
<label>show remove marker button</label>
<config>
<type>check</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
</config>
</settings.showRemoveMarkerButton>
<settings.useFullscreenButton>
<label>show fullscreen button</label>
<config>
<type>check</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
</config>
</settings.useFullscreenButton>
<settings.useZoomSlider>
<label>show zoom slider</label>
<config>
<type>check</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
</config>
</settings.useZoomSlider>
<settings.layers>
<label>Selectable Layers</label>
<config>
<type>select</type>
<renderType>selectMultipleSideBySide</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">osm</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">stamen terrain</numIndex>
<numIndex index="1">10</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">stamen watercolor</numIndex>
<numIndex index="1">11</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">stamen toner</numIndex>
<numIndex index="1">12</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">thunderfores openCycleMap</numIndex>
<numIndex index="1">100</numIndex>
</numIndex>
<numIndex index="5" type="array">
<numIndex index="0">thunderfores transport</numIndex>
<numIndex index="1">101</numIndex>
</numIndex>
<numIndex index="6" type="array">
<numIndex index="0">thunderfores landscape</numIndex>
<numIndex index="1">102</numIndex>
</numIndex>
<numIndex index="7" type="array">
<numIndex index="0">thunderfores outdoors</numIndex>
<numIndex index="1">103</numIndex>
</numIndex>
<numIndex index="8" type="array">
<numIndex index="0">thunderfores atlas</numIndex>
<numIndex index="1">104</numIndex>
</numIndex>
<numIndex index="9" type="array">
<numIndex index="0">thunderfores transport-dark</numIndex>
<numIndex index="1">105</numIndex>
</numIndex>
<numIndex index="10" type="array">
<numIndex index="0">thunderfores spinal-map</numIndex>
<numIndex index="1">106</numIndex>
</numIndex>
<numIndex index="11" type="array">
<numIndex index="0">thunderfores pioneer</numIndex>
<numIndex index="1">107</numIndex>
</numIndex>
<numIndex index="12" type="array">
<numIndex index="0">thunderfores neighbourhout</numIndex>
<numIndex index="1">108</numIndex>
</numIndex>
<numIndex index="13" type="array">
<numIndex index="0">thunderfores mobile-atlas</numIndex>
<numIndex index="1">109</numIndex>
</numIndex>
<numIndex index="14" type="array">
<numIndex index="0">maptiler basic</numIndex>
<numIndex index="1">200</numIndex>
</numIndex>
<numIndex index="15" type="array">
<numIndex index="0">maptiler basic (EPSG:4326)</numIndex>
<numIndex index="1">201</numIndex>
</numIndex>
<numIndex index="16" type="array">
<numIndex index="0">maptiler bright</numIndex>
<numIndex index="1">202</numIndex>
</numIndex>
<numIndex index="17" type="array">
<numIndex index="0">maptiler openstreetmap</numIndex>
<numIndex index="1">203</numIndex>
</numIndex>
<numIndex index="18" type="array">
<numIndex index="0">maptiler outdoor</numIndex>
<numIndex index="1">204</numIndex>
</numIndex>
<numIndex index="19" type="array">
<numIndex index="0">maptiler pastel</numIndex>
<numIndex index="1">205</numIndex>
</numIndex>
<numIndex index="20" type="array">
<numIndex index="0">maptiler satelit hybrid</numIndex>
<numIndex index="1">206</numIndex>
</numIndex>
<numIndex index="21" type="array">
<numIndex index="0">maptiler streets</numIndex>
<numIndex index="1">207</numIndex>
</numIndex>
<numIndex index="22" type="array">
<numIndex index="0">maptiler toner</numIndex>
<numIndex index="1">208</numIndex>
</numIndex>
<numIndex index="23" type="array">
<numIndex index="0">maptiler topo</numIndex>
<numIndex index="1">209</numIndex>
</numIndex>
<numIndex index="24" type="array">
<numIndex index="0">maptiler topographique</numIndex>
<numIndex index="1">210</numIndex>
</numIndex>
<numIndex index="25" type="array">
<numIndex index="0">maptiler voyager</numIndex>
<numIndex index="1">211</numIndex>
</numIndex>
<numIndex index="26" type="array">
<numIndex index="0">maptiler winter</numIndex>
<numIndex index="1">212</numIndex>
</numIndex>
</items>
<minitems>1</minitems>
</config>
</settings.layers>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>

View File

@ -0,0 +1,76 @@
<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Function</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.timelineType>
<label>timeline type</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">all posts in timeline</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">travel post categorie timeline</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">travel post author timeline</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
</items>
</config>
<onChange>reload</onChange>
</settings.timelineType>
<settings.showAuthors>
<label>show authors</label>
<config>
<type>group</type>
<allowed>tx_blog_domain_model_author</allowed>
<fieldControl>
<editPopup>
<disabled>false</disabled>
</editPopup>
<addRecord>
<disabled>false</disabled>
</addRecord>
<listModule>
<disabled>false</disabled>
</listModule>
</fieldControl>
</config>
<displayCond>FIELD:settings.timelineType:=:3</displayCond>
</settings.showAuthors>
<settings.showCategories>
<label>show categories</label>
<config>
<type>group</type>
<allowed>sys_category</allowed>
<fieldControl>
<editPopup>
<disabled>false</disabled>
</editPopup>
<addRecord>
<disabled>false</disabled>
</addRecord>
<listModule>
<disabled>false</disabled>
</listModule>
</fieldControl>
</config>
<displayCond>FIELD:settings.timelineType:=:2</displayCond>
</settings.showCategories>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>

View File

@ -0,0 +1,5 @@
services:
_defaults:
autowire: true
autoconfigure: true
public: false

View File

@ -0,0 +1,155 @@
<?php //
/*
* This file is part of the package t3g/blog.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
if (!defined('TYPO3')) {
die('Access denied.');
}
$ll = 'LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:';
//
//// Add folder configuration
//$GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = [
// 0 => $ll . 'blog-folder',
// 1 => 'blog',
// 2 => 'record-folder-contains-blog',
//];
//$GLOBALS['TCA']['pages']['ctrl']['typeicon_classes']['contains-blog'] = 'record-folder-contains-blog';
//
//// Add new page types as possible select item:
//\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
// 'pages',
// 'doktype',
// [
// 'LLL:EXT:blog/Resources/Private/Language/locallang_tca.xlf:pages.doktype.blog-post',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST,
// 'record-blog-post',
// ],
// '1',
// 'after'
//);
//\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
// 'pages',
// 'doktype',
// [
// 'LLL:EXT:blog/Resources/Private/Language/locallang_tca.xlf:pages.doktype.blog-page',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE,
// 'record-blog-page',
// ],
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST,
// 'after'
//);
//
//// Add icon for new page types:
//\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
// $GLOBALS['TCA']['pages'],
// [
// 'ctrl' => [
// 'typeicon_classes' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => 'record-blog-page',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE . '-root' => 'record-blog-page-root',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST => 'record-blog-post',
// ],
// ],
// 'types' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Core\Domain\Repository\PageRepository::DOKTYPE_DEFAULT],
// ],
// ]
//);
//\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
// $GLOBALS['TCA']['pages'],
// [
// 'ctrl' => [
// 'typeicon_classes' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => 'record-blog-page',
// ],
// ],
// 'types' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Core\Domain\Repository\PageRepository::DOKTYPE_DEFAULT],
// ],
// ]
//);
//
// Register fields
$GLOBALS['TCA']['pages']['columns'] = array_replace_recursive(
$GLOBALS['TCA']['pages']['columns'],
[
'rel_map_entries' => [
'exclude' => true,
'label' => '' . $ll . 'pages.rel_coordinate',
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_a2gmaps_domain_model_mapentry',
'foreign_table_where' => ' AND tx_a2gmaps_domain_model_mapentry.sys_language_uid IN (###REC_FIELD_sys_language_uid###,-1) ',
'foreign_field' => 'rel_travel_post',
'size' => 10,
'autoSizeMax' => 30,
// 'foreign_sortby' => 'sorting',
'minitems' => 0,
'maxitems' => 10,
'appearance' => [
'collapseAll' => 1,
'expandSingle' => 1,
],
],
],
'authors' => [
'label' => $ll . 'pages.authors',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'multiple' => 0,
'foreign_table' => 'tx_blog_domain_model_author',
'foreign_table_where' => 'AND tx_blog_domain_model_author.sys_language_uid IN (0,-1) ORDER BY tx_blog_domain_model_author.name ASC',
'MM' => 'tx_blog_post_author_mm',
'minitems' => 0,
'maxitems' => 99999,
'behaviour' => [
'allowLanguageSynchronization' => true
]
],
],
'tags' => [
'label' => $ll . 'pages.tags',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'size' => 10,
'minitems' => 0,
'maxitems' => 9999,
'autoSizeMax' => 10,
'multiple' => 0,
'foreign_table' => 'tx_blog_domain_model_tag',
'foreign_table_where' => 'AND tx_blog_domain_model_tag.sys_language_uid IN (0,-1) ORDER BY tx_blog_domain_model_tag.title ASC',
'MM' => 'tx_blog_tag_pages_mm',
'behaviour' => [
'allowLanguageSynchronization' => true
]
],
]
]
);
//
///** @noinspection UnsupportedStringOffsetOperationsInspection */
//$GLOBALS['TCA']['pages']['types'][\T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST]['columnsOverrides'] = [
// 'categories' => [
// 'config' => [
// 'foreign_table_where' => 'AND sys_category.sys_language_uid IN (0,-1) AND sys_category.pid = ###PAGE_TSCONFIG_ID###',
// ]
// ]
//];
//
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('pages', 'rel_coordinate', 'rel_map_entries');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'pages',
'--div--;' . $ll . 'pages.tabs.travel_blog,
--palette--;' . $ll . 'pages.palettes.travel_blog; rel_coordinate'
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST
);

View File

@ -0,0 +1,21 @@
<?php
defined('TYPO3_MODE') || die();
/***************
* TypoScript: Full Package
* This includes the full setup including all configurations
*/
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'a2g_travel_blog',
'Configuration/TypoScript',
'Altogether Travel Blog: Full Package'
);
/***************
* TypoScript: Base Package
*/
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'a2g_travel_blog',
'Configuration/TypoScript/Base',
'Altogether Travel Blog: Base Package'
);

View File

@ -0,0 +1,41 @@
<?php
defined('TYPO3_MODE') || die();
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'A2gTravelBlog',
'timeline',
'Travel Blog Timeline'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'A2gTravelBlog',
'map',
'Travel Blog Map'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'A2gTravelBlog',
'mapConfig',
'Travel Blog Map Config'
);
$pluginSignatures = [
'a2gtravelblog_timeline' => 'flexform_timeline',
'a2gtravelblog_map' => 'flexform_map'
];
foreach ($pluginSignatures as $pluginSignature => $flexform) {
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:a2g_travel_blog/Configuration/FlexForms/' . $flexform . '.xml');
// \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
// // 'list_type' does not apply here
// '*',
// // Flexform configuration schema file
// 'FILE:EXT:example/Configuration/FlexForms/Registration.xml',
// // ctype
// $pluginSignature
//);
}

View File

@ -0,0 +1,813 @@
<?php
//
/*
* This file is part of the package t3g/blog.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
if (!defined('TYPO3')) {
die('Access denied.');
}
$ll = 'LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:';
//
//// Add folder configuration
//$GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = [
// 0 => $ll . 'blog-folder',
// 1 => 'blog',
// 2 => 'record-folder-contains-blog',
//];
//$GLOBALS['TCA']['pages']['ctrl']['typeicon_classes']['contains-blog'] = 'record-folder-contains-blog';
//
//// Add new page types as possible select item:
//\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
// 'pages',
// 'doktype',
// [
// 'LLL:EXT:blog/Resources/Private/Language/locallang_tca.xlf:pages.doktype.blog-post',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST,
// 'record-blog-post',
// ],
// '1',
// 'after'
//);
//\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
// 'pages',
// 'doktype',
// [
// 'LLL:EXT:blog/Resources/Private/Language/locallang_tca.xlf:pages.doktype.blog-page',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE,
// 'record-blog-page',
// ],
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST,
// 'after'
//);
//
//// Add icon for new page types:
//\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
// $GLOBALS['TCA']['pages'],
// [
// 'ctrl' => [
// 'typeicon_classes' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => 'record-blog-page',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE . '-root' => 'record-blog-page-root',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST => 'record-blog-post',
// ],
// ],
// 'types' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Core\Domain\Repository\PageRepository::DOKTYPE_DEFAULT],
// ],
// ]
//);
//\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
// $GLOBALS['TCA']['pages'],
// [
// 'ctrl' => [
// 'typeicon_classes' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => 'record-blog-page',
// ],
// ],
// 'types' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Core\Domain\Repository\PageRepository::DOKTYPE_DEFAULT],
// ],
// ]
//);
//
// Register fields
$GLOBALS['TCA']['sys_category']['columns'] = array_replace_recursive(
$GLOBALS['TCA']['sys_category']['columns'],
[
'iso_a2_country_code' => [
'exclude' => true,
'label' => '' . $ll . 'category.iso_a2_country_code',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[
"no map relation",
""
],
[
"Afghanistan",
"AF"
],
[
"Angola",
"AO"
],
[
"Albania",
"AL"
],
[
"United Arab Emirates",
"AE"
],
[
"Argentina",
"AR"
],
[
"Armenia",
"AM"
],
[
"Antarctica",
"AQ"
],
[
"Fr. S. Antarctic Lands",
"TF"
],
[
"Australia",
"AU"
],
[
"Austria",
"AT"
],
[
"Azerbaijan",
"AZ"
],
[
"Burundi",
"BI"
],
[
"Belgium",
"BE"
],
[
"Benin",
"BJ"
],
[
"Burkina Faso",
"BF"
],
[
"Bangladesh",
"BD"
],
[
"Bulgaria",
"BG"
],
[
"Bahamas",
"BS"
],
[
"Bosnia and Herz.",
"BA"
],
[
"Belarus",
"BY"
],
[
"Belize",
"BZ"
],
[
"Bolivia",
"BO"
],
[
"Brazil",
"BR"
],
[
"Brunei",
"BN"
],
[
"Bhutan",
"BT"
],
[
"Botswana",
"BW"
],
[
"Central African Rep.",
"CF"
],
[
"Canada",
"CA"
],
[
"Switzerland",
"CH"
],
[
"Chile",
"CL"
],
[
"China",
"CN"
],
[
"Cte d'Ivoire",
"CI"
],
[
"Cameroon",
"CM"
],
[
"Dem. Rep. Congo",
"CD"
],
[
"Congo",
"CG"
],
[
"Colombia",
"CO"
],
[
"Costa Rica",
"CR"
],
[
"Cuba",
"CU"
],
[
"Cyprus",
"CY"
],
[
"Czech Rep.",
"CZ"
],
[
"Germany",
"DE"
],
[
"Djibouti",
"DJ"
],
[
"Denmark",
"DK"
],
[
"Dominican Rep.",
"DO"
],
[
"Algeria",
"DZ"
],
[
"Ecuador",
"EC"
],
[
"Egypt",
"EG"
],
[
"Eritrea",
"ER"
],
[
"Spain",
"ES"
],
[
"Estonia",
"EE"
],
[
"Ethiopia",
"ET"
],
[
"Finland",
"FI"
],
[
"Fiji",
"FJ"
],
[
"Falkland Is.",
"FK"
],
[
"France",
"FR"
],
[
"Gabon",
"GA"
],
[
"United Kingdom",
"GB"
],
[
"Georgia",
"GE"
],
[
"Ghana",
"GH"
],
[
"Guinea",
"GN"
],
[
"Gambia",
"GM"
],
[
"Guinea-Bissau",
"GW"
],
[
"Eq. Guinea",
"GQ"
],
[
"Greece",
"GR"
],
[
"Greenland",
"GL"
],
[
"Guatemala",
"GT"
],
[
"Guyana",
"GY"
],
[
"Honduras",
"HN"
],
[
"Croatia",
"HR"
],
[
"Haiti",
"HT"
],
[
"Hungary",
"HU"
],
[
"Indonesia",
"ID"
],
[
"India",
"IN"
],
[
"Ireland",
"IE"
],
[
"Iran",
"IR"
],
[
"Iraq",
"IQ"
],
[
"Iceland",
"IS"
],
[
"Israel",
"IL"
],
[
"Italy",
"IT"
],
[
"Jamaica",
"JM"
],
[
"Jordan",
"JO"
],
[
"Japan",
"JP"
],
[
"Kazakhstan",
"KZ"
],
[
"Kenya",
"KE"
],
[
"Kyrgyzstan",
"KG"
],
[
"Cambodia",
"KH"
],
[
"Korea",
"KR"
],
[
"Kuwait",
"KW"
],
[
"Lao PDR",
"LA"
],
[
"Lebanon",
"LB"
],
[
"Liberia",
"LR"
],
[
"Libya",
"LY"
],
[
"Sri Lanka",
"LK"
],
[
"Lesotho",
"LS"
],
[
"Lithuania",
"LT"
],
[
"Luxembourg",
"LU"
],
[
"Latvia",
"LV"
],
[
"Morocco",
"MA"
],
[
"Moldova",
"MD"
],
[
"Madagascar",
"MG"
],
[
"Mexico",
"MX"
],
[
"Macedonia",
"MK"
],
[
"Mali",
"ML"
],
[
"Myanmar",
"MM"
],
[
"Montenegro",
"ME"
],
[
"Mongolia",
"MN"
],
[
"Mozambique",
"MZ"
],
[
"Mauritania",
"MR"
],
[
"Malawi",
"MW"
],
[
"Malaysia",
"MY"
],
[
"Namibia",
"NA"
],
[
"New Caledonia",
"NC"
],
[
"Niger",
"NE"
],
[
"Nigeria",
"NG"
],
[
"Nicaragua",
"NI"
],
[
"Netherlands",
"NL"
],
[
"Norway",
"NO"
],
[
"Nepal",
"NP"
],
[
"New Zealand",
"NZ"
],
[
"Oman",
"OM"
],
[
"Pakistan",
"PK"
],
[
"Panama",
"PA"
],
[
"Peru",
"PE"
],
[
"Philippines",
"PH"
],
[
"Papua New Guinea",
"PG"
],
[
"Poland",
"PL"
],
[
"Puerto Rico",
"PR"
],
[
"Dem. Rep. Korea",
"KP"
],
[
"Portugal",
"PT"
],
[
"Paraguay",
"PY"
],
[
"Palestine",
"PS"
],
[
"Qatar",
"QA"
],
[
"Romania",
"RO"
],
[
"Russia",
"RU"
],
[
"Rwanda",
"RW"
],
[
"W. Sahara",
"EH"
],
[
"Saudi Arabia",
"SA"
],
[
"Sudan",
"SD"
],
[
"S. Sudan",
"SS"
],
[
"Senegal",
"SN"
],
[
"Solomon Is.",
"SB"
],
[
"Sierra Leone",
"SL"
],
[
"El Salvador",
"SV"
],
[
"Somalia",
"SO"
],
[
"Serbia",
"RS"
],
[
"Suriname",
"SR"
],
[
"Slovakia",
"SK"
],
[
"Slovenia",
"SI"
],
[
"Sweden",
"SE"
],
[
"Swaziland",
"SZ"
],
[
"Syria",
"SY"
],
[
"Chad",
"TD"
],
[
"Togo",
"TG"
],
[
"Thailand",
"TH"
],
[
"Tajikistan",
"TJ"
],
[
"Turkmenistan",
"TM"
],
[
"Timor-Leste",
"TL"
],
[
"Trinidad and Tobago",
"TT"
],
[
"Tunisia",
"TN"
],
[
"Turkey",
"TR"
],
[
"Taiwan",
"TW"
],
[
"Tanzania",
"TZ"
],
[
"Uganda",
"UG"
],
[
"Ukraine",
"UA"
],
[
"Uruguay",
"UY"
],
[
"United States",
"US"
],
[
"Uzbekistan",
"UZ"
],
[
"Venezuela",
"VE"
],
[
"Vietnam",
"VN"
],
[
"Vanuatu",
"VU"
],
[
"Yemen",
"YE"
],
[
"South Africa",
"ZA"
],
[
"Zambia",
"ZM"
],
[
"Zimbabwe",
"ZW"
]
],
],
]
]
);
//
///** @noinspection UnsupportedStringOffsetOperationsInspection */
//$GLOBALS['TCA']['pages']['types'][\T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST]['columnsOverrides'] = [
// 'categories' => [
// 'config' => [
// 'foreign_table_where' => 'AND sys_category.sys_language_uid IN (0,-1) AND sys_category.pid = ###PAGE_TSCONFIG_ID###',
// ]
// ]
//];
//
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_category', 'travel_blog_fields', 'iso_a2_country_code');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'sys_category',
'--div--;' . $ll . 'pages.tabs.travel_blog,
--palette--;' . $ll . 'pages.palettes.travel_blog; travel_blog_fields'
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST
);

View File

@ -0,0 +1,99 @@
<?php //
/*
* This file is part of the package t3g/blog.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
if (!defined('TYPO3')) {
die('Access denied.');
}
$ll = 'LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:';
//
//// Add folder configuration
//$GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = [
// 0 => $ll . 'blog-folder',
// 1 => 'blog',
// 2 => 'record-folder-contains-blog',
//];
//$GLOBALS['TCA']['pages']['ctrl']['typeicon_classes']['contains-blog'] = 'record-folder-contains-blog';
//
//// Add new page types as possible select item:
//\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
// 'pages',
// 'doktype',
// [
// 'LLL:EXT:blog/Resources/Private/Language/locallang_tca.xlf:pages.doktype.blog-post',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST,
// 'record-blog-post',
// ],
// '1',
// 'after'
//);
//\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
// 'pages',
// 'doktype',
// [
// 'LLL:EXT:blog/Resources/Private/Language/locallang_tca.xlf:pages.doktype.blog-page',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE,
// 'record-blog-page',
// ],
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST,
// 'after'
//);
//
//// Add icon for new page types:
//\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
// $GLOBALS['TCA']['pages'],
// [
// 'ctrl' => [
// 'typeicon_classes' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => 'record-blog-page',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE . '-root' => 'record-blog-page-root',
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST => 'record-blog-post',
// ],
// ],
// 'types' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_POST => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Core\Domain\Repository\PageRepository::DOKTYPE_DEFAULT],
// ],
// ]
//);
//\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
// $GLOBALS['TCA']['pages'],
// [
// 'ctrl' => [
// 'typeicon_classes' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => 'record-blog-page',
// ],
// ],
// 'types' => [
// (string) \T3G\AgencyPack\Blog\Constants::DOKTYPE_BLOG_PAGE => $GLOBALS['TCA']['pages']['types'][\TYPO3\CMS\Core\Domain\Repository\PageRepository::DOKTYPE_DEFAULT],
// ],
// ]
//);
//
// Register fields
$GLOBALS['TCA']['tx_blog_domain_model_author']['columns'] = array_replace_recursive(
$GLOBALS['TCA']['tx_blog_domain_model_author']['columns'],
[
'rel_map_marker' => [
'exclude' => true,
'label' => 'LLL:EXT:a2g_maps/Resources/Private/Language/locallang_db.xlf:relMarker',
'config' => [
'type' => 'select',
'renderType' => 'selectSingleBox',
'foreign_table' => 'tx_a2gmaps_domain_model_marker',
'foreign_table_where' => ' AND tx_a2gmaps_domain_model_marker.sys_language_uid IN (###REC_FIELD_sys_language_uid###,-1) '
]
]
]
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('tx_blog_domain_model_author', 'travelblog_map_icon', 'rel_map_marker');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'tx_blog_domain_model_author',
'--div--;' . $ll . 'pages.tabs.travel_blog,
--palette--;' . $ll . 'pages.palettes.travel_blog; travelblog_map_icon'
);

View File

@ -0,0 +1,36 @@
<?php
/*
* This file is part of the package t3g/blog.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
if (!defined('TYPO3')) {
die('Access denied.');
}
$ll = 'LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:';
$GLOBALS['TCA']['tx_a2gmaps_domain_model_mapentry']['columns'] = array_replace_recursive(
$GLOBALS['TCA']['tx_a2gmaps_domain_model_mapentry']['columns'],
[
'rel_travel_post' => [
'label' => 'rel_travel_post',
'config' => [
'type' => 'select',
'renderType'=> 'selectSingle',
'foreign_table' => 'pages',
'foreign_table_where' => ' AND pages.sys_language_uid IN (###REC_FIELD_sys_language_uid###,-1) ',
],
]
]
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('tx_a2gmaps_domain_model_mapentry', 'travelblog_rel_post', 'travelblog_rel_post');
//\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
// 'tx_blog_domain_model_author',
// '--div--;' . $ll . 'pages.tabs.travel_blog,
// --palette--;' . $ll . 'pages.palettes.travel_blog; travelblog_map_icon'
//);

View File

@ -0,0 +1,27 @@
<?php
/*
* This file is part of the package t3g/blog.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
if (!defined('TYPO3')) {
die('Access denied.');
}
$ll = 'LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:';
$GLOBALS['TCA']['tx_a2gmaps_domain_model_marker']['columns'] = array_replace_recursive(
$GLOBALS['TCA']['tx_a2gmaps_domain_model_marker']['columns'],
[
'rel_travel_author' => [
'label' => 'rel_travel_author',
'config' => [
'type' => 'passthrough'
]
]
]
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('tx_a2gmaps_domain_model_marker', 'travel_author', 'rel_travel_author');

View File

@ -0,0 +1,4 @@
##################
#### TsConfig ####
##################
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:a2g_travel_blog/Configuration/TsConfig/Page/Wizards.tsconfig">

View File

@ -0,0 +1,28 @@
################################
#### CONTENT ELEMENT WIZARD ####
################################
mod.wizards.newContentElement.wizardItems.a2gTravelBlog {
after = common, menu, special, forms, plugins, blog
header = LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:wizard.group.travel_blog
elements {
a2gtravelblog_map {
iconIdentifier = a2g_travelblog-plugin-map
title = LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:plugin.map.title
description = LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:plugin.map.description
tt_content_defValues {
CType = list
list_type = a2gtravelblog_map
}
}
a2gtravelblog_timeline {
iconIdentifier = a2g_travelblog-plugin-timeline
title = LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:plugin.timeline.title
description = LLL:EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf:plugin.timeline.description
tt_content_defValues {
CType = list
list_type = a2gtravelblog_timeline
}
}
}
show = *
}

View File

@ -0,0 +1,17 @@
plugin.tx_a2gtravelblog {
view {
# cat=altogether travel blog/file; type=string; label=Path to template root (FE)
templateRootPath = EXT:a2g_travel_blog/Resources/Private/Templates/
# cat=altogether travel blog/file; type=string; label=Path to template partials (FE)
partialRootPath = EXT:a2g_travel_blog/Resources/Private/Partials/
# cat=altogether travel blog/file; type=string; label=Path to template layouts (FE)
layoutRootPath = EXT:a2g_travel_blog/Resources/Private/Layouts/
}
persistence {
# cat=altogether travel blog//a; type=string; label=Default storage PID
storagePid =
}
settings {
}
}

View File

@ -0,0 +1,63 @@
plugin.tx_a2gtravelmap_timeline {
view {
templateRootPaths.0 = EXT:blog/Resources/Private/Templates/
templateRootPaths.1 = EXT:a2g_travel_blog/Resources/Private/Templates/
templateRootPaths.2 = {$plugin.tx_a2gtravelblog.view.templateRootPath}
partialRootPaths.0 = EXT:blog/Resources/Private/Partials/
partialRootPaths.1 = EXT:a2g_travel_blog/Resources/Private/Partials/
partialRootPaths.2 = {$plugin.tx_a2gtravelblog.view.partialRootPath}
layoutRootPaths.0 = EXT:blog/Resources/Private/Layouts/
layoutRootPaths.1 = EXT:a2g_travel_blog/Resources/Private/Layouts/
layoutRootPaths.2 = {$plugin.tx_a2gtravelblog.view.layoutRootPath}
}
persistence {
storagePid = {$plugin.tx_a2gtravelblog.persistence.storagePid}
#recursive = 1
}
}
plugin.tx_a2gtravelmap_map {
view {
templateRootPaths.0 = EXT:blog/Resources/Private/Templates/
templateRootPaths.1 = EXT:a2g_travel_blog/Resources/Private/Templates/
templateRootPaths.2 = {$plugin.tx_a2gtravelblog.view.templateRootPath}
partialRootPaths.0 = EXT:blog/Resources/Private/Partials/
partialRootPaths.1 = EXT:a2g_travel_blog/Resources/Private/Partials/
partialRootPaths.2 = {$plugin.tx_a2gtravelblog.view.partialRootPath}
layoutRootPaths.0 = EXT:blog/Resources/Private/Layouts/
layoutRootPaths.1 = EXT:a2g_travel_blog/Resources/Private/Layouts/
layoutRootPaths.2 = {$plugin.tx_a2gtravelblog.view.layoutRootPath}
}
settings {
defaultMapMarker = {$plugin.tx_a2gmaps.settings.defaultMapMarker}
authorPageUid = {$plugin.tx_blog.settings.authorUid}
}
persistence {
storagePid = {$plugin.tx_a2gtravelblog.persistence.storagePid}
#recursive = 1
}
}
a2gTravelBlogMapMarkers = PAGE
a2gTravelBlogMapMarkers {
typeNum = 1652369512
config {
disableAllHeaderCode = 1
admPanel = 0
additionalHeaders.10.header = Content-type:application/json
xhtml_cleaning = 0
debug = 0
no_cache = 0
}
10 = USER
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = A2gTravelBlog
pluginName = mapConfig
vendorName = Altogether
controller = Map
settings < plugin.tx_a2gtravelmap_map.settings
persistence < plugin.tx_a2gtravelmap_map.persistence
view < plugin.tx_a2gtravelmap_map.view
}
}

View File

@ -0,0 +1,2 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:a2g_travel_blog/Configuration/TypoScript/Base/constants.typoscript">

View File

@ -0,0 +1,3 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:a2g_travel_blog/Configuration/TypoScript/Base/setup.typoscript">
#<INCLUDE_TYPOSCRIPT: source="FILE:EXT:a2g_travel_blog/Configuration/TypoScript/GoogleAnalytics/setup.typoscript">