Устанавливается компонент, модуль и плагин Chronoforms6 как обычно, через менеджер расширений Joomla.

Тут есть небольшой момент: все элементы менеджера компонента правильно отображаются при использовании дефолтных шаблонов админки joomla — это шаблоны Hathor и isis. А если использовать, например Vallis (на изображении выше именно этот шаблон), то нижней части скользящей менюшки элементов мы уже не доберемся (то же самое наблюдается и у некоторых старых версий).

Убираем ограничения по количеству отображаемых полей формы на сайте

Тут в глаза бросается то, что компонент стал еще более условно-бесплатным. Теперь, помимо безобидного сообщения в админке и копирайта внизу самой формы на сайте для установленного компонента, не прошедшего валидацию, появилось и другое ограничение: доступно к отображению на сайте только 15 полей формы.

Как с этим справиться?

Открываем файл www/administrator/components/com_chronoforms6/chronoforms/controllers/manager.php, находим и комментируем следующие строки:

  if(\GApp::instance()->site == 'front'){
      $good = (\GApp::extension('chronoforms')->valid() OR !isset($connection['Connection']['params']['limited_edition']));
      if(!$good){
          $this->set('__viewslimit', 15);
      }
  }

Теперь на страницах сайта будут выводиться все поля формы, созданные в менеджере компонента. Соответственно, не будут отображаться и сообщения о том, что компонент не прошел валидацию.

Теперь убираем сообщение о незарегистрированном компоненте в админке joomla. Открываем файл www/administrator/components/com_chronoforms6/chronoforms/themes/default/layouts/ default.php и комментируем там или удаляем такую строчку:

  $this->view('views.common.validationalert', ['ext' => 'chronoforms', 'name' => 'ChronoForms', 'msg' => '15 displayed fields per form limit, and a credits link at the bottom of the form']);

Заодно уберем копирайт. В этом же файле (или снова в manager.php - здесь зависит от версии), в самом конце, комментируем функцию целиком:

  function _finalize(){
          if(empty($this->tvout) AND \GApp::extension('chronoforms')->valid() == false){
              if(\G2\Globals::get('app') != 'wordpress'){
                  echo '<a href="http://www.chronoengine.com/" target="_blank" class="chronoforms6_credits">Form by ChronoForms - ChronoEngine.com</a>';
              }else{
                  echo '<h3>Form by ChronoForms - ChronoEngine.com</h3>';
              }
          }
      }

Теперь копирайт не будет отображаться в футере формы.

Эти манипуляции не препятствуют успешному обновлению компонента, но по обновлении приходится повторно производить те же исправления.

Поддержка кириллицы в полях с типом alpha и alphanum

К сожалению, проблема с кириллицей никуда не исчезает от версии к версии. Здесь нам нужно исправлять все самим. Вот здесь описан способ добавления поддержки кириллицы для 5-й версии. С шестой версией все то же самое, только файл другой.

Ищем в файле www/libraries/cegcore2/libs/validate.php функцию:

  public static function alpha($value){
      return preg_match('/^[a-z ._-]+$/i', $value);
  }

и исправляем ее следующим образом:

  public static function alpha($value){
      return preg_match('/^[a-zA-Zа-яА-Я._-]+$/i', $value);
  }

Затем ищем:

  public static function alphanumeric($value){
      return preg_match('/^[a-z0-9 ._-]+$/i', $value);
  }

и правим так:

  public static function alphanumeric($value){
      return preg_match('/^[a-zA-Zа-яА-Я0-9 ._-]+$/i', $value);
  }

Теперь текстовые поля на наших формах должны поддерживать кириллицу. В случае обновления компонента этот файл так же будет затронут.

Русификация

С русификацией вопрос пока остается открытым, т. к. полного перевода компонента не получается. Все дело в том, что немало кнопок и меток, которые мы видим в менеджере компонента, указывается прямо в теле его скриптов.

В новой версии разработчики предлагают нам локализовать админку компонента самостоятельно после установки с помощью функционала, доступного по клику на пункт меню «languages». Там мы генерируем копию английской локализации с нужным нам тегом и переводим содержимое здесь же (т. е. доступ из админки к файлу есть).

На данный момент мы располагаем русификатором компонента с частичным переводом его интерфейса. Его можно найти на этой странице.

А так же появилась возможность переводить каждую форму на несколько языков (функционал действует аналогично функционалу общей локализации).

Комментарии
  • #
  • Rafa
Подскажите, пожалуйста, получались ли у вас создать форму с калькулятором?
На их официально сайте, в FAQ есть инфа как делать, пробовал, но ничего не работает.
Ссылку ставить не буду, процитирую:

Цитата:
Assuimng your form has 3 fields, field 1, field 2 and field total, the fields "ids" are: field1, field2 and total respectively. In your form designer, open "Custom" and drag a JavaScript element, open the settings and enable the "Load on dom ready", then add this code:

Код:
$("#field1,#field2").on("change", function(){
$("#total").val(parseInt($("#field1").val()) + parseInt($("#field2").val()));
});


You may want to set an integer mask for your fields and set the default values to 0 based on your requirements.
  • #
  • s.elena133
Цитата:
ничего не работает
- понятие растяжимое)
Нет, калькуляторов не делали, но код, приведенный вами полностью рабочий, если делать так, как в приведенном куске пояснения с сайта.
Сейчас попробовала и все получилось.
Выдает, правда после заполнения первого поля NaN в результирующем поле. Но, думаю, что это вполне решится, если поставить по умолчанию нули во всех трех полях.
  • #
  • Rafa
Цитирую s.elena133:
Сейчас попробовала и все получилось.

Можете где нибудь на сайте пример привести.
Или скриншоты, как вы делаете, что у вас работает.
Уже все перепробовал не выходит.
  • #
  • s.elena133
Что именно пробовали?
Просто решительно не понимаю в чем проблема. Вы привели в цитате подробный мануал выполнения, яснее не бывает.
Берете три поля типа text. Берете элемент JS из группы Custom. Помещаете его на форму. Ставите галку "Загружать по со событию dom ready". Копипастите туда код, исправляя идентификаторы полей. Сохраняете, проверяете на сайте.
Все.
Элемент рабочий, багов нет. Код тоже рабочий.
  • #
  • Rafa
Понял, в Debugger высчитывается.
Я думал, он без перезагрузки страницы в поле Tolal сразу 0, который там по умолчанию стоит, превратит в сумму чисел, первых 2ух полей.
Интересно, а можно такое сделать там...
  • #
  • s.elena133
А форма без перезагрузки все и считает.
...onkeypress можно попробовать
  • #
  • Rafa
Цитирую s.elena133:
А форма без перезагрузки все и считает.
...onkeypress можно попробовать

Вы вводите цифры и он сразу в Поле Total считает?
Или после нажатия кнопки отправить значение поля Total идет на почту?
Т.е. я хотел бы, чтобы расчет суммы был сразу, до отправки формы.
https://ibb.co/cySmZJ
  • #
  • Rafa
Получилось показывать Итого, до отправки формы 8)
Жажду поделится, вдруг кому пригодится.
Код:$("#field1,#field2").on("change", function(){ $("#total").val(parseInt($("#field1").val()) + parseInt($("#field2").val())); $price = $('#total').val(); $("span#widget_calculator3new_value").text($price); });
  • #
  • Rafa
Ларчик просто открывался.
Нужно было взять у id="total" взять данные его value который нормально сразу считается, и поместить в переменную $price.
А потом передать его значение в виджет ниже span id="widget_calculator" какой-то, через:
$('widget_calculator').text ($price)
Добавить комментарий