Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 2754 Просмотров
*

Dmitry

  • Новичок
  • 2
  • 0 / 0
Здравствуйте.

Я использую компонент ohanah для создания и учета событий (он очень похож на eventlist)

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

Создал правило, xml-файл, внедрил API, все включил все работает. Однако, не как положено.

Пользователь получает очки за переход к форме создания события, а не за успешную отправку формы.

Компонент написан на nooku-framevork что усложняет понимание, но все-же приведу некоторый код:

После <form>....</form> кнопка имеет следующий вид: <?= @helper('button.button', array('type' => 'input', 'text' => @text('OHANAH_ADD_EVENT'))); ?>

действие после нажатия кнопки управляется некоторым скриптом:

      <script>
         $jq(function() {
            $jq('.button[name="Submit"], input[name="Submit"]').click(function() {
               if ($('edit-form').validate()) {
                  $jq('.button[name="Submit"], input[name="Submit"]').attr("disabled", true);
                  if (!($jq.browser.msie && ($jq.browser.version=='8.0'))) {
                      $jq('.button[name="Submit"], input[name="Submit"]').text('<?=@text('OHANAH_ADDING_EVENT')?>');   
                   }

                  <? if (JComponentHelper::getParams('com_ohanah')->get('useStandardJoomlaEditor')) : ?>
                     var desc = <?=$editor->getContent('description')?>
                  <? endif ?>
                  $jq.ajax({
                      type: 'post',
                     url: 'http://<?=$_SERVER['HTTP_HOST'].KRequest::root()?>/index.php?option=com_ohanah&view=event',
                     data: $jq('#edit-form').serialize()<? if (JComponentHelper::getParams('com_ohanah')->get('useStandardJoomlaEditor')) : ?>+'&description='+desc<? endif ?>,
                      success: function (data, text) {
                        alert('<?=@text('OHANAH_EVENT_ADDED')?>');


                      }
                  });

               }
            });
         });
      </script>

Если его убрать то кнопка работать не будет.

Я так понимаю - для должной работы API, необхдимо его завязывать с данным скриптом. Вопрос в том - как именно?


Я не прошу привести конкретный код (да и в моем случае это просто невыполнимо), но мне достаточно просто указать ниточку решения, за что буду безгранично благодарен. *DRINK*
« Последнее редактирование: 25.06.2012, 15:27:10 от Dmitry »
*

Dmitry

  • Новичок
  • 2
  • 0 / 0
Разобрался.

Ключ заблуждения был в следующем:

В модели MVC за поведение пользователя отвечает Controller, тогда как все манипуляции я проводил преимущественно с Viev файлом.


ps Для товарищей по несчастью привожу код правила

xml файл:"plgaup_addevent.xml"

<?xml version="1.0" encoding="utf-8"?>
<alphauserpoints type="plugin">
    <rule>add nev event</rule>
    <description>Adds points when create nev event</description>
    <component>ohanah</component>
    <plugin_function>plgaup_addevent</plugin_function>
    <fixed_points>true</fixed_points>
</alphauserpoints>

само-собой все включаем и настраиваем в админ-панели joomla

открываем
\www\сайт\components\com_ohanah\controllers\event.php
ищем строку
$this->_message = JText::_('OHANAH_EVENT_ADDED');
после нее добавляем
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'plgaup_addevent' );
}



с Уважением, Дмитрий.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Опыт написания своего правила

Автор Lake

Ответов: 0
Просмотров: 4337
Последний ответ 23.07.2016, 14:55:28
от Lake
Процедура добавления медалей пользователям

Автор NlCK

Ответов: 5
Просмотров: 1825
Последний ответ 25.09.2014, 12:09:01
от migus
Kunena 2.0.1 + AlphaUserPoints 1.7.3 не работают правила

Автор Triniti

Ответов: 5
Просмотров: 2707
Последний ответ 10.09.2012, 01:03:11
от Gerostrat
[Решено] Alpha UserPoints + CB 1.2.3 начисление очков юзеру за просмотр его профиля.

Автор orsy

Ответов: 27
Просмотров: 8539
Последний ответ 01.12.2011, 09:24:15
от migus
Снимать баллы за создание опроса, а не начислять

Автор GoodWeb

Ответов: 10
Просмотров: 3281
Последний ответ 30.09.2011, 00:49:28
от migus