/**
  * Add form validation to the palette of supported widgets.
  *
  * @return void
  */
 public function addFormValidationToPalette()
 {
     foreach ($this->getDefinition()->get(['palettes'], []) as $name => $palette) {
         if (is_array($palette) || !in_array($name, $this->supportedWidgets)) {
             continue;
         }
         MetaPalettes::appendBefore('tl_form_field', $name, 'expert', array('formvalidation' => array('fv_enabled')));
     }
     if ($this->getDefinition()->has(['palettes', 'checkbox'])) {
         MetaPalettes::appendFields('tl_form_field', 'checkbox', 'expert', array('minlength', 'maxlength'));
     }
 }
<?php

/**
 * Avisota newsletter and mailing system
 * Copyright © 2016 Sven Baumann
 *
 * PHP version 5
 *
 * @copyright  way.vision
 * @author     Sven Baumann <*****@*****.**>
 * @package    avisota/contao-core
 * @license    LGPL-3.0+
 * @filesource
 */
\Bit3\Contao\MetaPalettes\MetaPalettes::appendBefore('tl_member', 'default', 'login', array('avisota' => array(':hide', 'avisota_lists', 'avisota_subscriptionAction')));
/*
$GLOBALS['TL_DCA']['tl_member']['config']['onload_callback'][]   = array('AvisotaDCA', 'filterByMailingLists');
$GLOBALS['TL_DCA']['tl_member']['config']['onload_callback'][]   = array('tl_member_avisota', 'onload_callback');
$GLOBALS['TL_DCA']['tl_member']['config']['onsubmit_callback'][] = array('tl_member_avisota', 'onsubmit_callback');
*/
$GLOBALS['TL_DCA']['tl_member']['config']['onsubmit_callback'][] = array('Avisota\\Contao\\Core\\DataContainer\\Member', 'onsubmit_callback');
$GLOBALS['TL_DCA']['tl_member']['fields']['avisota_lists'] = array('label' => &$GLOBALS['TL_LANG']['tl_member']['avisota_lists'], 'inputType' => 'checkbox', 'options_callback' => \ContaoCommunityAlliance\Contao\Events\CreateOptions\CreateOptionsEventCallbackFactory::createCallback(\Avisota\Contao\Core\CoreEvents::CREATE_MAILING_LIST_OPTIONS, 'Avisota\\Contao\\Core\\Event\\CreateOptionsEvent'), 'load_callback' => array(array('Avisota\\Contao\\Core\\DataContainer\\Member', 'loadMailingLists')), 'save_callback' => array(array('Avisota\\Contao\\Core\\DataContainer\\Member', 'validateBlacklist'), array('Avisota\\Contao\\Core\\DataContainer\\Member', 'saveMailingLists')), 'eval' => array('multiple' => true, 'feEditable' => true, 'feGroup' => 'newsletter'));
$GLOBALS['TL_DCA']['tl_member']['fields']['avisota_subscriptionAction'] = array('label' => &$GLOBALS['TL_LANG']['tl_member']['avisota_subscriptionAction'], 'inputType' => 'select', 'options' => array('sendConfirmation', 'activateSubscription', 'doNothink', 'sendOptIn'), 'reference' => &$GLOBALS['TL_LANG']['orm_avisota_recipient'], 'eval' => array('doNotSaveEmpty' => false, 'doNotCopy' => true, 'doNotShow' => true), 'save_callback' => array(array('Avisota\\Contao\\Core\\DataContainer\\Member', 'saveSubscriptionAction')), 'field' => false);
/*
$GLOBALS['TL_DCA']['tl_member']['fields']['avisota_subscribe'] = array
(
	'label'     => &$GLOBALS['TL_LANG']['tl_member']['avisota_subscribe'],
	'inputType' => 'checkbox',
	'eval'      => array
	(
		'feEditable' => true,
<?php

/**
 * @package    contao-form-validation
 * @author     David Molineus <*****@*****.**>
 * @copyright  2015-2016 netzmacht David Molineus
 * @license    LGPL 3.0
 * @filesource
 *
 */
/*
 * Config
 */
$GLOBALS['TL_DCA']['tl_form']['config']['onsubmit_callback'][] = \Netzmacht\Contao\FormValidation\Dca\FormCallbacks::callback('clearCache');
$GLOBALS['TL_DCA']['tl_form']['config']['ondelete_callback'][] = \Netzmacht\Contao\FormValidation\Dca\FormCallbacks::callback('clearCache');
/*
 * Global operations.
 */
array_insert($GLOBALS['TL_DCA']['tl_form']['list']['global_operations'], 0, array('formvalidation' => array('label' => &$GLOBALS['TL_LANG']['tl_form']['formvalidation'], 'href' => 'table=tl_form_validation', 'icon' => 'form.gif', 'attributes' => 'onclick="Backend.getScrollOffset();"')));
/*
 * Palettes
 */
\Bit3\Contao\MetaPalettes\MetaPalettes::appendBefore('tl_form', 'expert', array('formvalidation' => array(':hide', 'fv_active')));
$GLOBALS['TL_DCA']['tl_form']['metasubpalettes']['fv_active'] = array('fv_setting');
/*
 * Fields
 */
$GLOBALS['TL_DCA']['tl_form']['fields']['fv_active'] = array('label' => &$GLOBALS['TL_LANG']['tl_form']['fv_active'], 'inputType' => 'checkbox', 'exclude' => true, 'eval' => array('tl_class' => 'w50 m12', 'submitOnChange' => true), 'sql' => "char(1) NOT NULL default ''");
$GLOBALS['TL_DCA']['tl_form']['fields']['fv_setting'] = array('label' => &$GLOBALS['TL_LANG']['tl_form']['fv_setting'], 'inputType' => 'select', 'exclude' => true, 'options_callback' => \Netzmacht\Contao\FormValidation\Dca\FormCallbacks::callback('getSettings'), 'save_callback' => array(\Netzmacht\Contao\FormValidation\Dca\FormCallbacks::callback('addIncompleteWarning')), 'wizard' => array(\Netzmacht\Contao\Toolkit\Dca\Callback\CallbackFactory::popupWizard('do=form&amp;table=tl_form_validation', $GLOBALS['TL_LANG']['tl_form']['fv_edit_setting'][0], $GLOBALS['TL_LANG']['tl_form']['fv_edit_setting'][1], 'edit.gif')), 'eval' => array('includeBlankOption' => true, 'chosen' => true, 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'");