Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Classes/Domain/Model/User.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace BalatD\FriendlyCaptcha\Domain\Model;

class User extends \In2code\Femanager\Domain\Model\User
{

/**
* @var int
*/
protected $friendlyCaptcha = 0;

/**
* @return int
*/
public function getFriendlyCaptcha(): int
{
return $this->friendlyCaptcha;
}

/**
* @param int $friendlyCaptcha
*/
public function setFriendlyCaptcha(int $friendlyCaptcha): void
{
$this->friendlyCaptcha = $friendlyCaptcha;
}


}
8 changes: 8 additions & 0 deletions Classes/Domain/Repository/UserRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

namespace BalatD\FriendlyCaptcha\Domain\Repository;

class UserRepository extends \In2code\Femanager\Domain\Repository\UserRepository
{

}
21 changes: 21 additions & 0 deletions Classes/Domain/Validator/ClientsideValidator.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace BalatD\FriendlyCaptcha\Domain\Validator;

use BalatD\FriendlyCaptcha\Validation\FriendlyCaptchaValidator;
use TYPO3\CMS\Core\Utility\GeneralUtility;

class ClientsideValidator extends \In2code\Femanager\Domain\Validator\ClientsideValidator
{

/**
* @param $value
* @param $validationSetting
* @return bool
*/
protected function validateFriendlyCaptcha($value, $validationSetting): bool
{
$validator = GeneralUtility::makeInstance(FriendlyCaptchaValidator::class);
return !$validator->validate($value)->hasErrors();
}
}
21 changes: 21 additions & 0 deletions Classes/Domain/Validator/ServersideValidator.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace BalatD\FriendlyCaptcha\Domain\Validator;

use BalatD\FriendlyCaptcha\Validation\FriendlyCaptchaValidator;
use TYPO3\CMS\Core\Utility\GeneralUtility;

class ServersideValidator extends \In2code\Femanager\Domain\Validator\ServersideValidator
{

/**
* @param $value
* @param $validationSetting
* @return bool
*/
protected function validateFriendlyCaptcha($value, $validationSetting): bool
{
$validator = GeneralUtility::makeInstance(FriendlyCaptchaValidator::class);
return !$validator->validate($value)->hasErrors();
}
}
13 changes: 13 additions & 0 deletions Configuration/Extbase/Persistence/Classes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

return [
\In2code\Femanager\Domain\Model\User::class => [
'subclasses' => [
'\BalatD\FriendlyCaptcha\Domain\Model\User' => \BalatD\FriendlyCaptcha\Domain\Model\User::class,
],
],
\BalatD\FriendlyCaptcha\Domain\Model\User::class => [
'tableName' => 'fe_users',
'recordType' => 0,
],
];
14 changes: 14 additions & 0 deletions Configuration/TSconfig/Ext/FeManager/customfields.tsconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
tx_femanager {
flexForm {
new {
addFieldOptions {
friendlyCaptcha = FriendlyCaptcha
}
}
edit{
addFieldOptions {
friendlyCaptcha = FriendlyCaptcha
}
}
}
}
14 changes: 14 additions & 0 deletions Configuration/TypoScript/Ext/FeManager/fieldvalidations.typoscript
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
plugin.tx_femanager.settings {
new {
validation {
_enable.client = 1
_enable.server = 1

friendlyCaptcha {
required = 1
# custom validation method:
friendlyCaptcha = 1
}
}
}
}
10 changes: 10 additions & 0 deletions Configuration/TypoScript/Ext/FeManager/setup.typoscript
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
plugin.tx_femanager {
view {
partialRootPaths {
50 = EXT:db_friendlycaptcha/Resources/Private/Partials/FeManager/
}
}
}

<INCLUDE_TYPOSCRIPT: source="FILE:EXT:db_friendlycaptcha/Configuration/TypoScript/Ext/FeManager/fieldvalidations.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:db_friendlycaptcha/Configuration/TypoScript/Ext/FeManager/translation.typoscript">
12 changes: 12 additions & 0 deletions Configuration/TypoScript/Ext/FeManager/translation.typoscript
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
plugin.tx_femanager {
_LOCAL_LANG {
en {
tx_femanager_domain_model_user.friendlyCaptcha = FriendlyCaptcha
validationErrorFriendlyCaptcha = FriendlyCaptcha required
}
de {
tx_femanager_domain_model_user.friendlyCaptcha = FriendlyCaptcha
validationErrorFriendlyCaptcha = FriendlyCaptcha erforderlich
}
}
}
3 changes: 3 additions & 0 deletions Configuration/TypoScript/setup.typoscript
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ page.includeJSFooterlibs{
friendlycaptcha = https://unpkg.com/friendly-challenge@0.8.3/widget.min.js
friendlycaptcha.external = 1
}

// Includes FeManager
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:db_friendlycaptcha/Configuration/TypoScript/Ext/FeManager/setup.typoscript">
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

### **STILL WIP**

A TYPO3 Extension that brings the Friendly Captcha functionality to EXT:form, based on the work of EXT:recaptcha.
A TYPO3 Extension that brings the Friendly Captcha functionality to EXT:form and EXT:femanager, based on the work of EXT:recaptcha.

## Installation
### Composer
Expand Down
15 changes: 15 additions & 0 deletions Resources/Private/Partials/FeManager/Fields/FriendlyCaptcha.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{namespace frc=BalatD\FriendlyCaptcha\ViewHelpers}
{namespace femanager=In2code\Femanager\ViewHelpers}
<frc:form.friendlycaptcha>
<div id="frc-captcha" class="frc-captcha femanager_fieldset femanager_friendlyCaptcha form_group"
data-sitekey="{configuration.public_key}"
{f:if(condition: '{configuration.lang}', then: 'data-lang="{configuration.lang}"')}
>
<f:form.hidden
property="friendly_captcha"
id="femanager_field_friendly_captcha"
value="1"
additionalAttributes="{femanager:Validation.FormValidationData(settings:settings,fieldName:'friendlyCaptcha')}"
/>
</div>
</frc:form.friendlycaptcha>
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
],

"suggest": {
"typo3/cms-form": "^10.0"
"typo3/cms-form": "^10.0",
"in2code/femanager": "^6"
},

"require": {
Expand Down
22 changes: 22 additions & 0 deletions ext_localconf.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,26 @@
1999 = EXT:db_friendlycaptcha/Configuration/Yaml/FormEditorSetup.yaml
}
');

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:db_friendlycaptcha/Configuration/TSconfig/Ext/FeManager/customfields.tsconfig">
');

$extbaseObjectContainer = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class);
$extbaseObjectContainer
->registerImplementation(
\In2code\Femanager\Domain\Validator\ServersideValidator::class,
\BalatD\FriendlyCaptcha\Domain\Validator\ServersideValidator::class
);
$extbaseObjectContainer
->registerImplementation(
\In2code\Femanager\Domain\Validator\ClientsideValidator::class,
\BalatD\FriendlyCaptcha\Domain\Validator\ClientsideValidator::class
);

if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('femanager')) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\In2code\Femanager\Domain\Repository\UserRepository::class] = [
'className' => \BalatD\FriendlyCaptcha\Domain\Repository\UserRepository::class
];
}
});
3 changes: 3 additions & 0 deletions ext_tables.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CREATE TABLE fe_users (
friendly_captcha tinyint(1) NOT NULL DEFAULT '0'
);