diff --git a/system/typemill/Extensions/TwigCaptchaExtension.php b/system/typemill/Extensions/TwigCaptchaExtension.php
index 6c451ca..696d269 100644
--- a/system/typemill/Extensions/TwigCaptchaExtension.php
+++ b/system/typemill/Extensions/TwigCaptchaExtension.php
@@ -11,9 +11,15 @@ class TwigCaptchaExtension extends AbstractExtension
public function getFunctions()
{
return [
- new TwigFunction('captcha', array($this, 'captchaImage' ))
+ new TwigFunction('captcha', array($this, 'captchaImage' )),
+ new TwigFunction('clearcaptcha', array($this, 'captchaClear' ))
];
}
+
+ public function captchaClear()
+ {
+ unset($_SESSION['captcha']);
+ }
public function captchaImage($initialize = false)
{
@@ -24,10 +30,10 @@ class TwigCaptchaExtension extends AbstractExtension
if(isset($_SESSION['captcha']) && $_SESSION['captcha'] === 'error')
{
- $template = '
' .
+ $template = '
' .
'
' .
'
' .
- '
The captcha was wrong.' .
+ '
The captcha was wrong.
' .
'
 . ')
' .
'
';
}
diff --git a/system/typemill/Models/Navigation.php b/system/typemill/Models/Navigation.php
index 139d36e..dcf5af5 100644
--- a/system/typemill/Models/Navigation.php
+++ b/system/typemill/Models/Navigation.php
@@ -342,7 +342,6 @@ class Navigation extends Folder
public function getItemWithKeyPath($navigation, array $searchArray, $baseUrl = null)
{
-
$item = false;
# if it is the homepage
diff --git a/system/typemill/Plugin.php b/system/typemill/Plugin.php
index a3920ee..f52dd7a 100644
--- a/system/typemill/Plugin.php
+++ b/system/typemill/Plugin.php
@@ -10,6 +10,7 @@ use Typemill\Models\Validation;
use Typemill\Models\Fields;
use Typemill\Extensions\ParsedownExtension;
+
abstract class Plugin implements EventSubscriberInterface
{
protected $container;
@@ -141,7 +142,7 @@ abstract class Plugin implements EventSubscriberInterface
return $storage->getError();
}
- private function getPluginName($pluginname)
+ private function getPluginName($pluginname = NULL)
{
if(!$pluginname)
{
@@ -340,75 +341,40 @@ abstract class Plugin implements EventSubscriberInterface
protected function validateParams($params)
{
- $pluginName = key($params);
+ $pluginname = $this->getPluginName();
+ $userinput = $params[$pluginname] ?? false;
- if(isset($params[$pluginName]))
+ if(!$userinput)
{
- $userInput = $params[$pluginName];
- $settings = $this->getSettings();
-
- # get settings and start validation
- $originalSettings = \Typemill\Settings::getObjectSettings('plugins', $pluginName);
- if(isset($settings['plugins'][$pluginName]['publicformdefinitions']) && $settings['plugins'][$pluginName]['publicformdefinitions'] != '')
- {
- $arrayFromYaml = \Symfony\Component\Yaml\Yaml::parse($settings['plugins'][$pluginName]['publicformdefinitions']);
- $originalSettings['public']['fields'] = $arrayFromYaml;
- }
- elseif(isset($originalSettings['settings']['publicformdefinitions']))
- {
- $arrayFromYaml = \Symfony\Component\Yaml\Yaml::parse($originalSettings['settings']['publicformdefinitions']);
- $originalSettings['public']['fields'] = $arrayFromYaml;
- }
-
- $validate = new Validation();
-
- if(isset($originalSettings['public']['fields']))
- {
- # flaten the multi-dimensional array with fieldsets to a one-dimensional array
- $originalFields = array();
- foreach($originalSettings['public']['fields'] as $fieldName => $fieldValue)
- {
- if(isset($fieldValue['fields']))
- {
- foreach($fieldValue['fields'] as $subFieldName => $subFieldValue)
- {
- $originalFields[$subFieldName] = $subFieldValue;
- }
- }
- else
- {
- $originalFields[$fieldName] = $fieldValue;
- }
- }
-
- # take the user input data and iterate over all fields and values
- foreach($userInput as $fieldName => $fieldValue)
- {
- # get the corresponding field definition from original plugin settings
- $fieldDefinition = isset($originalFields[$fieldName]) ? $originalFields[$fieldName] : false;
-
- if($fieldDefinition)
- {
- # validate user input for this field
- $validate->objectField($fieldName, $fieldValue, $pluginName, $fieldDefinition);
- }
- if(!$fieldDefinition && $fieldName != 'active')
- {
- $_SESSION['errors'][$pluginName][$fieldName] = array('This field is not defined!');
- }
- }
-
- if(isset($_SESSION['errors']))
- {
- $this->container->flash->addMessage('error', 'Please correct the errors');
- return false;
- }
-
- return $params[$pluginName];
- }
+ return false;
}
- $this->container->flash->addMessage('error', 'The data from the form was invalid (missing or not defined)');
- return false;
+ $pluginsettings = $this->getPluginSettings($pluginname);
+ $extension = new Extension();
+ $formdefinitions = $extension->getPluginDefinition($pluginname);
+
+ # if there are public form definitions, add them to the formdefinitions
+ if(isset($pluginsettings['publicformdefinitions']) && $pluginsettings['publicformdefinitions'] != '')
+ {
+ $arrayFromYaml = \Symfony\Component\Yaml\Yaml::parse($pluginsettings['publicformdefinitions']);
+ $formdefinitions['public']['fields'] = $arrayFromYaml;
+ }
+ elseif(isset($formdefinitions['settings']['publicformdefinitions']))
+ {
+ $arrayFromYaml = \Symfony\Component\Yaml\Yaml::parse($formdefinitions['settings']['publicformdefinitions']);
+ $formdefinitions['public']['fields'] = $arrayFromYaml;
+ }
+
+ $validate = new Validation();
+ $validatedOutput = $validate->recursiveValidation($formdefinitions['public']['fields'], $userinput);
+
+ if(!empty($validate->errors))
+ {
+ $_SESSION['errors'] = $validate->errors;
+
+ return false;
+ }
+
+ return $validatedOutput;
}
}
\ No newline at end of file
diff --git a/system/typemill/author/auth/login.twig b/system/typemill/author/auth/login.twig
index 5f96aa4..b566980 100644
--- a/system/typemill/author/auth/login.twig
+++ b/system/typemill/author/auth/login.twig
@@ -54,8 +54,12 @@
{{ captcha(old) }}
- {% endif %}
+ {% else %}
+
+ {{ clearcaptcha() }}
+ {% endif %}
+
+
- {% if errors[itemName][field.name] %}
- {{ errors[itemName][field.name] | first }}
+ {% if errors[field.name] %}
+ {{ errors[field.name] }}
{% endif %}
{% if field.description %}{{ translate(field.description) }}
{% endif %}
@@ -94,8 +94,8 @@
{% if field.description %}{{ translate(field.description) }}
{% endif %}
- {% if errors[itemName][field.name] %}
- {{ errors[itemName][field.name] | first }}
+ {% if errors[field.name] %}
+ {{ errors[field.name] }}
{% endif %}
{% endif %}
diff --git a/system/typemill/author/partials/form.twig b/system/typemill/author/partials/form.twig
index 61556a9..b8b5307 100644
--- a/system/typemill/author/partials/form.twig
+++ b/system/typemill/author/partials/form.twig
@@ -5,7 +5,7 @@
{% endif %}
\ No newline at end of file