## History
### 1.7.3
* [Refactor] Подключать __autoload.php, если не задан другой загрузчик.
* [Fix] Ошибка в обработке параметра редиректа (Core).

### 1.7.2
* [Enhancement] Параметр &context в контроллере Login для поддержки модели modManagers (Login).
* [Fix] Ошибка в обработке параметра редиректа (Core).

### 1.7.1
* [Enhancement] Сниппет записывает в лог, если не задан параметр formid или не удалось загрузить класс контроллера.
* [Refactor] Плагин userHelper по умолчанию отключен.
* [Refactor] По умолчанию загружается лексикон english.
* [Fix] Ошибка в формате даты для лексикона english/form.

### 1.7.0
* [Refactor] Изменен метод loadModel, добавлена возможность указывать параметры, передаваемые в конструктор модели (Core).
* [Fix] Ошибка в лексиконе контроллера DeleteContent.
* [Fix] Создание записей анонимными пользователями если &onlyUsers=`0` (Content).
* [Refactor] Убраны include/require, для загрузки классов подключается файл  assets/snippets/FormLister/__autoload.php. Модели MODxAPI загружаются этим же загрузчиком.
* [Refactor] Создание записи в логе, если не удалось сохранить данные (Content).
* [Refactor] Изменена обработка поля для запоминания авторизации: теперь время для автологина задается в параметре cookieLifetime (по умолчанию 5 лет, в секундах), а не значением поля (Login). 
* [Refactor] Имя куки для автологина можно задать с помощью параметра cookieName, по умолчанию WebLoginPE (Login).
* [Refactor] В контроллере Login сначала проверяется, активирована ли учетная запись, а потом уже возможность авторизации (Login).
* [Enhancement] Блокировка пользователей после определенного числа неудачных попыток авторизации в плагине userHelper. 
 
### 1.6.2
* [Fix] Неверное объявление метода в классах капчи.

### 1.6.1
* [Refactor] Переделан автологин в плагине userHelper.

### 1.6.0
* [Enhancement] Параметр rewriteUrls для обработки ссылок в шаблонах. Игнорируется, если задан параметр parseDocumentSource (Core).
* [Enhancement] Если страница с вызовом контроллера Login указана в конфигурации, как страница "Доступ запрещен", то после успешной авторизации будет произведен редирект на запрашиваемую страницу (Login).
* [Enhancement] Новый параметр ignoreMailerResult (Form). 
* [Fix] Неправильная проверка уникальности username в контроллере Profile.
* [Refactor] Для добавления пользователей в группы используется метод из modUsers (Register).
* [Refactor] Введенный пользователем пароль сохраняется в поле user.password (Register).
* [Refactor] Контроллеры Register, Profile и Content загружают данные из моделей после успешного выполнения; после этого можно выполнить сниппеты из параметра preparePostProcess. Сделано это потому что плагины на сохранение или сами модели могут менять данные.
* [Enhancement] Восстановление данных, испорченных в protect.inc.php. Если параметр removeGpc равен 1, то очищены будут все входящие поля. Можно указать в параметре имена полей через запятую. При выводе обработанных полей будут экранироваться тэги MODX (Core).
* [Refactor] В prepare-сниппеты передается переменная name с названием параметра в котором задан сниппет. Можно использовать один сниппет для всех случаев (Core).
* [Enhancement] Контроллер DeleteUser для удаления пользователей c запросом пароля.
* [Enhancement] Контроллер DeleteContent для удаления записей MODxAPI.
* [Enhancement] Контроллер Activate для активации учетных записей.
* [Enhancement] Контроллеры Register и Login могут работать с активацией учетных записей.
* [Enhancement] Вывод параметров data-badge и data-callback для рекапчи (ReCaptchaWrapper).
* [Enhancement] Параметр deleteAttachments для удаления файлов после отправки письма (Form).
* [Enhancement] Сохранение имен файлов в поля формы (Form).
* [Enhancement] Отправка файлов не из формы. Список файлов задается массивом в параметре attachFiles: {"field":{"filepath":"assets/images/logo.png","filename":"logo.png"}} (Form).
* [Refactor] Можно не задавать параметр contentFields, в этом случае в модель будут переданы поля формы (Content).
* [Refactor] Корректная обработка полей lastlogin и thislogin в плагине userHelper.
* [Fix] Неверно выбирался шаблон при восстановлении паролей (Reminder).
* [Enhancement] Дополнительная обработка чанков парсером MODX c помощью параметра parseDocumentSource (Core). 
* [Enhancement] Возможность вырезать необработанные плейсхолдеры из чанков с помощью параметра removeEmptyPlaceholders (Core).
* [Enhancement] Параметр removeEmptyPlaceholders для удаления необработанных плейсхолдеров из чанков (возможные значения 0,1; по умолчанию - 0) (Core).
* [Fix] Из-за неправильной обработки параметра defaultsSources не загружались поля в контроллере Profile (Core).
* [Fix] Метод filterFields не учитывал значение параметра allowEmptyFields (Core). 

### 1.5.1
Исправления ошибок.

###1.5.0
* [Refactor] Переделана загрузка внешних параметров с учетом того, что не все источники могут содержать массив: добавлен источник aplh для загрузки массива значений из плейсхолдера MODX, в источнике cookie можно указать несколько имен кук через запятую. Добавлен источник user для загрузки данных авторизованного веб-пользователя (user:web) или менеджера (user:mgr) (Core). Добавлен источник document для загрузки данных текущего или указанного документа.
* [Refactor] Валидация капчи вынесена в класс капчи (Core). 
* [Refactor] Параметры капчи задаются массивом, там же указываются сообщения об ошибках (Core). 
* [Refactor] Валидация капчи происходит в классе капчи. (Core).
* [Enhancement] reCaptcha2.
* [Enhancement] smsCaptcha.
* [Enhancement] Поддержка Twig: в шаблон передаются переменные FormLister, data, errors, messages. Добавлен метод getErrorMessage для получения в шаблоне сообщений об ошибках для указанного поля (Core).
* [Enhancement] Параметры редиректа можно задавать в виде массива с ключами page (id страницы), query (массив параметров запроса) и header (заголовок) (Core).
* [Enhancement] Если задан параметр redirectTo и параметр editAfterCreate равен 1, то в параметры редиректа будет добавлен идентификатор созданного документа (Core, Content).
* [Fix] Плагин userHelper теперь перенаправляет пользователя на текущую страницу без ?logout в ссылке.
* [Fix] Сопоставление имен полей формы и модели в параметре contentFields неправильно работало в режиме редактирования, если имена различались (Content).
* [Refactor] Пользовательские функции валидации могут вместо false возвращать сообщение об ошибке (Core).

### 1.4.1
* [Refactor] Больше рандома в modxCaptcha.

### 1.4.0
* [Refactor] Класс modxCaptchaWrapper больше не привязан к FormLister (Core, modxCaptchaWrapper).
* [Enhancement] Убрано принудительное отключение параметров submitLimit и protectSubmit (Content).
* [Refactor] Изменен алгоритм загрузки пользовательских лексиконов. Теперь в параметре lexicon можно указывать как имя файла, так и сразу массив c языковыми записями (Core, Lexicon).
* [Refactor] Загрузка полей отправленной формы происходит не из $_REQUEST, а согласно параметру formMethod (значение по умолчанию - 'post') (Core).
* [Enhancement] Метод loadArray можно использовать для обработки строк с разделителем (по умолчанию - ',')  (Config).
* [Enhancement] Если значение параметра submitLimit меньше 60, то оно не пересчитывается в минуты (Form). 

### 1.3.0
* [Enhancement] Поддержка события OnBeforeWebLogin. В плагине можно реализовать процедуру авторизации независимую от модели; установку полей и шаблона сообщения об успешной авторизации нужно также производить в плагине. Плагин должен вернуть true в случае успешной авторизации, иначе будет выполнена авторизация методами модели (Login).
  
### 1.2.1
* [Refactor] Метод isArray теперь protected (FileValidator).

### 1.2.0
* [Refactor] Переделан пропуск полей при преобразовании в плейсхолдеры. Теперь плейсхолдеры отделены от полей формы, для работы с ними следует использовать методы setPlaceholder и getPlaceholder. Выводятся через [+placeholder+].
* [Bug] Сниппеты, указанные в prepareProcess, выполнялись независимо от результатов валидации. 
* [Refactor] Изменена логика обработки правил валидации. Теперь все правила, которых нет в валидаторе, обрабатываются как custom. Это позволяет применять сразу несколько таких правил.
* [Enhancement] Возможность применять правила валидации только для заполненных полей.
* [Refactor] Информация о файлах размещается в массиве formData c помощью метода setFiles (Core, Form).
* [Refactor] Объект FS теперь публичный.
* [Refactor] Контроллер Profile наследуется от Form, а не от Core.

### 1.1.0
* [Refactor] Метод filesToArray перемещен в Core.
* [Enhancement] Возможность загрузки произвольных моделей в контроллерах, которые используют MODxAPI. Новые параметры - model и modelPath.
* [Refactor] Метод для загрузки моделей MODxAPI. 
* [Enhancement] Возможность загружать произвольные модели MODxAPI в контроллерах. 
* [Enhancement] Новое правило валидации - date, проверяет является ли значение поля датой в указанном формате (Validator).
* [Enhancement] Возможность пропускать поля при преобразовании в плейсхолдеры (Core).

### 1.0.2
* [Enhancement] Убрано значение по умолчанию свойства allowedFields в контроллерах Register и Profile.

### 1.0.1
* [Enhancement] Новое правило валидации файлов - optional, аналог правила required но выполняется также, если файл не загружен пользователем (FileValidator).
* [Enhancement] Правила валидации файлов allowed, minSize, sizeBetween считаются выполненными, если файл не загружен пользователем (код ошибки 4). Решает проблему с файловыми полями, для которых не задано правило required (FileValidator).
* [Bug] К письму прикреплялись не загруженные пользователем файлы, теперь прикрепляются только успешно загруженные (код ошибки 0) (Form).
* [Fix] Параметры из файлов перезаписывали параметры сниппета (Core).
* [Bug] Конфиг из файла не добавлялся в общий массив настроек (Helpers/Config).

### 1.0.0
Public release.
