Новости 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 Гость просматривают эту тему.
  • 10 Ответов
  • 3282 Просмотров
*

GoodWeb

  • Захожу иногда
  • 60
  • 1 / 0
Правило для Community Polls позволяет лишь начислять баллы за создание опроса, а как реализовать счисление? Кто сталкивался подскажите, пожалуйста.
*

migus

  • Moderator
  • 992
  • 144 / 0
  • OPEN THE BOX
В настройках правила укажите отрицательное значение (напр. -5 баллов).
- удачи ;)
"The Lord Of A SandBox"
*

GoodWeb

  • Захожу иногда
  • 60
  • 1 / 0
В настройках правила укажите отрицательное значение (напр. -5 баллов).
- удачи ;)
Спасибо, разобрался. Дело было в том, что то в правиле для Community Polls кол-во баллов не настраивается, в то время как количество баллов устанавливается в настройках Community Polls.
*

GoodWeb

  • Захожу иногда
  • 60
  • 1 / 0
Рано обрадовался. Баллы списывает, только вот если баллов недостаточно для выполнения действия (создание опроса), то AUP пишет недостаточно баллов, а действие выполняется (опрос создается). Почему так?
*

migus

  • Moderator
  • 992
  • 144 / 0
  • OPEN THE BOX
Вопрос к авторам CP.
"The Lord Of A SandBox"
*

GoodWeb

  • Захожу иногда
  • 60
  • 1 / 0
Проверил в стандартном голосовании Joomla 1.5.23. Поставил в правиле "Участие в опросе" баллов -10. У пользователя 5 баллов на счету.
Проголосовал. Сообщение о том что недостаточно баллов также появилось, но голос принят.


То же самое с правилом "Предоставление ссылок"



Подскажите куда копать? Как сделать чтобы действие (за которое по правилам списание) невозможно было севершить, если у пользователя недостаточно баллов?
« Последнее редактирование: 28.09.2011, 12:31:55 от GoodWeb »
*

migus

  • Moderator
  • 992
  • 144 / 0
  • OPEN THE BOX
Вообще, надо добавить условие внутри исполняемого кода с проверкой наличия баллов.
Примерно так:
Код: php-brief
//Определяем пользователя $user->id и берем его профиль в AUP
if (file_exists($api_AUP)){
require_once ($api_AUP);
$profil = AlphaUserPointsHelper:: getUserInfo('', $user->id);
}
//Сравниваем баллы на счете пользователя и сумму оплаты: $sum_points
if ($profil->points >= $sum_points){
//выполняем действие и списание баллов
}else{
//отказываем в действии
}
- удачи ;)
"The Lord Of A SandBox"
*

GoodWeb

  • Захожу иногда
  • 60
  • 1 / 0
Спасибо! Т.е. этот код необходимо добавлять во все php файлы отвечающие за выполнение того или иного действия? По логике добавлять непосредственно перед кодом отвечающим за действие. Но ведь проверка происходит, значит код есть, только отказа в выполнении действия нет.
Как у человека не знающего php, большая просьба: не могли бы Вы показать на примере стандартного голосования? Думаю, если этот вопрос ранее не поднимался, то это окажется полезным многим "Joomlaводам".
*

migus

  • Moderator
  • 992
  • 144 / 0
  • OPEN THE BOX
Проверка происходит в плагине, а действие в скрипте компонента. Поэтому отказ в начислении есть, а действие все-равно выполняется. Надо делать хак компонента.
Для этого надо разбираться в php или обратиться к знакомому программисту.
Мне, к сожалению некогда.
"The Lord Of A SandBox"
*

GoodWeb

  • Захожу иногда
  • 60
  • 1 / 0
Спасибо хоть на этом.
Другими словами, если разработчик какого-либо компонента предусмотрел интеграцию с AUP, то тогда действие не будет выполнено. Так?
Проверил пожертвование балов от читателя к автору за просмотр материала. Не дает просмотерть, если баллов недостаточно. Это хорошая новость, осталось найти код который за это отвечает в компоненте Content.
« Последнее редактирование: 29.09.2011, 07:01:06 от GoodWeb »
*

migus

  • Moderator
  • 992
  • 144 / 0
  • OPEN THE BOX
Там используется встроенная в осн.компоненте функция.
А сам код плагина, который это делает выглядит так в файле ...home.../plugins/content/sysplgaup_reader2author.php
Код: php-brief
if ( AlphaUserPointsHelper::userpoints( 'sysplgaup_readarticle', '', 0, $articleid, $datareference, '', true )===false )
{
$app->redirect('index.php');
}
"The Lord Of A SandBox"
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не зафурычила altauserpoints - не начисляются баллы

Автор Lake

Ответов: 22
Просмотров: 5549
Последний ответ 11.07.2016, 14:12:54
от Lake
За статью баллы

Автор klehs

Ответов: 14
Просмотров: 4232
Последний ответ 23.06.2015, 00:33:08
от migus
Баллы за репост

Автор Katya

Ответов: 6
Просмотров: 2017
Последний ответ 23.04.2015, 20:30:39
от motokraft
Не начисляются баллы в чем проблема? пробовал с разных машин

Автор Sintez83

Ответов: 0
Просмотров: 1692
Последний ответ 08.07.2014, 19:50:08
от Sintez83
Не начисляются баллы

Автор PepeL

Ответов: 3
Просмотров: 2981
Последний ответ 15.01.2014, 18:51:25
от vbzaxa