Skip to content
Snippets Groups Projects
Commit 56a2023c authored by Georgi Mateev's avatar Georgi Mateev
Browse files

[TASK] #158 Add a cookie list element

parent 9c9bfdfd
No related branches found
No related tags found
1 merge request!14Release 4.7.0
......@@ -40,10 +40,12 @@ use TYPO3\CMS\Backend\Routing\UriBuilder;
use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Core\Environment;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\DataHandling\DataHandler;
use TYPO3\CMS\Core\Exception\SiteNotFoundException;
use TYPO3\CMS\Core\Messaging\AbstractMessage;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\RootlineUtility;
use TYPO3\CMS\Core\Utility\StringUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException;
......@@ -123,6 +125,59 @@ class OptinController extends ActionController {
public function showAction() {
}
/**
* Renders the cookie list.
*
* @return void
*/
public function cookieListAction() {
$rootPageId = $GLOBALS['TSFE']->rootLine[0]['uid'] ?? 0;
$languageUid = $GLOBALS['TSFE']->getLanguage()->getLanguageId();
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(
'tx_sgcookieoptin_domain_model_optin'
);
$optin = $queryBuilder->select('*')
->from('tx_sgcookieoptin_domain_model_optin')
->where($queryBuilder->expr()->eq('pid', $rootPageId))
->andWhere($queryBuilder->expr()->eq('sys_language_uid', $languageUid))
->execute()
->fetchAssociative();
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(
'tx_sgcookieoptin_domain_model_group'
);
$groups = $queryBuilder->select('*')
->from('tx_sgcookieoptin_domain_model_group')
->where($queryBuilder->expr()->eq('parent_optin', $optin['uid']))
->andWhere($queryBuilder->expr()->eq('sys_language_uid', $languageUid))
->execute()
->fetchAll();
array_unshift($groups, [
'uid' => 0,
'title' => $optin['essential_title'],
'description' => $optin['essential_description'],
'cookies' => 0
]);
foreach ($groups as &$group) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(
'tx_sgcookieoptin_domain_model_cookie'
);
$cookies = $queryBuilder->select('*')
->from('tx_sgcookieoptin_domain_model_cookie')
->where($queryBuilder->expr()->eq('parent_group', $group['uid']))
->andWhere($queryBuilder->expr()->eq('sys_language_uid', $languageUid))
->execute()
->fetchAll();
$group['cookies'] = $cookies;
}
$this->view->assign('groups', $groups);
$this->view->assign('optin', $optin);
}
/**
* Imports JSON configuration
*
......
......@@ -5,3 +5,9 @@
'OptIn',
'LLL:EXT:sg_cookie_optin/Resources/Private/Language/locallang_backend.xlf:optInPluginLabel'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'SGalinski.sg_cookie_optin',
'CookieList',
'LLL:EXT:sg_cookie_optin/Resources/Private/Language/locallang_backend.xlf:cookieListPluginLabel'
);
......@@ -12,6 +12,16 @@ mod {
}
optin {
iconIdentifier = extension-sg_cookie_optin
title = LLL:EXT:sg_cookie_optin/Resources/Private/Language/locallang_backend.xlf:cookieListPluginTitle
description = LLL:EXT:sg_cookie_optin/Resources/Private/Language/locallang_backend.xlf:cookieListPluginDescription
tt_content_defValues {
CType = list
list_type = sgcookieoptin_cookielist
}
}
}
show = *
......
<f:layout name="Frontend" />
<f:section name="main">
asd test
<div class="sg-cookie-optin-plugin sg-cookie-optin-plugin-cookie-list">
<ul class="sg-cookie-optin-box-cookie-detail-list sg-cookie-optin-visible">
<f:for each="{groups}" as="group">
<li class="sg-cookie-optin-box-cookie-detail-list-item">
<strong class="sg-cookie-optin-box-cookie-detail-header">{group.title}</strong>
<p class="sg-cookie-optin-box-cookie-detail-description">{group.description}</p>
<div class="sg-cookie-optin-box-cookie-detail-sublist">
<table>
<tbody>
<f:for each="{group.cookies}" as="cookie">
<tr class="divider"><td colspan="2">&nbsp;</td></tr>
<tr>
<th>{optin.cookie_name_text}</th>
<td>{cookie.name}</td>
</tr>
<tr>
<th>{optin.cookie_provider_text}</th>
<td>{cookie.provider}</td>
</tr>
<tr>
<th>{optin.cookie_lifetime_text}</th>
<td>{cookie.lifetime}</td>
</tr>
<tr>
<th>{optin.cookie_purpose_text}</th>
<td class="sg-cookie-optin-box-table-reason">{cookie.purpose}</td>
</tr>
</f:for>
</tbody>
</table>
</div>
</li>
</f:for>
</ul>
</div>
</f:section>
......@@ -41,6 +41,17 @@ call_user_func(
\SGalinski\SgCookieOptin\Controller\OptinController::class => '',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'sg_cookie_optin',
'CookieList',
[
\SGalinski\SgCookieOptin\Controller\OptinController::class => 'cookieList',
],
// non-cacheable actions
[
\SGalinski\SgCookieOptin\Controller\OptinController::class => '',
]
);
} else {
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'SGalinski.sg_cookie_optin',
......@@ -53,6 +64,17 @@ call_user_func(
'Optin' => '',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'SGalinski.sg_cookie_optin',
'CookieList',
[
'Optin' => 'cookieList',
],
// non-cacheable actions
[
'Optin' => '',
]
);
}
// Add warning render type
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment