Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Решена проблема вывода определенных полей только зарегистрированным пользователям, т.е. в поле чекбокс, и если он установлен, то данное поле будет отображаться только зарегистрированным пользователям.
К примеру, оптовая цена может выводиться только для диллеров, или же прикрепленный файл виден только зарегистрированным пользователям (диллерам).

Тестировалось на AdsManager 2.5 RC2

После внесения изменений (см. ниже) в редактировании и создании новых полей появляется возможность

1. Создается в базе столбец reguser с типом INT в таблице adsmanager_fields
2. В коде admin.adsmanager.html.php в функции editfield после строк
Код
<tr>
<td width="20%"><?php echo ADSMANAGER_FIELD_TYPE;?></td>
<td width="20%"><?php echo $lists['type']; ?></td>
<td>&nbsp;</td>
</tr>
вставляем
Код
<tr>
<td width="20%">Reg users?:</td>
<td align=left  width="20%"><input type="checkbox" name="reguser" <?php if($row->reguser==1) {?>checked <?php } ?>value="1" /></td>
<td>&nbsp;</td>
</tr>

3. В файле adsmanager.class.php добавляется в класс adsManagerField
Код
var $reguser=null;

4. В файле adsmanager.html.php замените функцию showFieldValue на приведенную ниже:
Код
function showFieldValue($row,$field,$field_values,$email_display,$option,$itemid,$mode,$plugins)
{
global $mosConfig_live_site,$mosConfig_absolute_path, $my;

if($my->id==0 && $field->reguser!=1) {

if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{

if (($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
echo adsmanager_html::getLangDefinition($field->title).": ";
}

if ($field->title)
$name = $field->name;

$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);
switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ":&nbsp;".ADSMANAGER_YES."<br />";
else
echo ":&nbsp;".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;

case 'multicheckbox':
case 'multicheckboximage':

for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;

if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}

break;

case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;

case 'date':
$return = $value;
echo $return;
break;

case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&amp;page=show_message_form&amp;mode=0&amp;adid=".$row->id."&amp;Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;

}
}
break;

case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;

case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);

echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;

default:

if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}

break;
}
}
}
else if($my->id) {
if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{

if (($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
echo adsmanager_html::getLangDefinition($field->title).": ";
}

if ($field->title)
$name = $field->name;

$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);
switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ":&nbsp;".ADSMANAGER_YES."<br />";
else
echo ":&nbsp;".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;

case 'multicheckbox':
case 'multicheckboximage':

for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;

if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}

break;

case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;

case 'date':
$return = $value;
echo $return;
break;

case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;

case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&amp;page=show_message_form&amp;mode=0&amp;adid=".$row->id."&amp;Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;

}
}
break;

case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;

case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);

echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;

default:

if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}

break;
}
}
}
}
« Последнее редактирование: 18.12.2009, 22:13:30 от GlooM »
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Для наглядности приложил две картинки:
1-ая отображает состояние объявления в момент, когда пользователь не авторизовался, 2-ая — когда авторизовался.
Красным подчеркнул то место, где происходят изменения.

[вложение удалено Администратором]
*

DK-Scorp

  • Захожу иногда
  • 235
  • 6 / 0
  • Всегда готов! К чему только....? ХЗ.....
Уважаемый GlooM, а можно поподробней пункт №1?

В какой таблице создать? (Я так понял что надо создать поле reguser, может не догнал чего?)
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Уважаемый GlooM, а можно поподробней пункт №1?

В какой таблице создать? (Я так понял что надо создать поле reguser, может не догнал чего?)
Забыл написать :)
в таблице adsmanager_fields
*

DK-Scorp

  • Захожу иногда
  • 235
  • 6 / 0
  • Всегда готов! К чему только....? ХЗ.....
2. В коде admin.adsmanager.html.php в функции editfield
Код
<tr>
<td width="20%">Reg users?:</td>
<td align=left  width="20%"><input type="checkbox" name="reguser" <?php if($row->reguser==1) {?>checked <?php } ?>value="1" /></td>
<td>&nbsp;</td>
</tr>


пОПОДРОБНЕЙ МОЖНО ЧЕТ НЕ ВЫШЛО НИХРЕНА, КУДА ВСТАЛЯТЬ СТРОКУ С ТАБЛИЦЕЙ В ФУНКЦИИ, УЕХАЛ  ШАБ И ЭФФЕКТА НОЛЬ :-(
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Так,
пОПОДРОБНЕЙ МОЖНО ЧЕТ НЕ ВЫШЛО НИХРЕНА, КУДА ВСТАЛЯТЬ СТРОКУ С ТАБЛИЦЕЙ В ФУНКЦИИ, УЕХАЛ  ШАБ И ЭФФЕКТА НОЛЬ :-(
Итак, подробнее.
Идете в administrator/components/com_adsmanager/ там файл admin.adsmanager.html.php
в нем находите
Код
<tr>
<td width="20%"><?php echo ADSMANAGER_FIELD_TYPE;?></td>
<td width="20%"><?php echo $lists['type']; ?></td>
<td>&nbsp;</td>
</tr>
и ниже этого кода вставляете
Код
<tr>
<td width="20%">Reg users?:</td>
<td align=left  width="20%"><input type="checkbox" name="reguser" <?php if($row->reguser==1) {?>checked <?php } ?>value="1" /></td>
<td>&nbsp;</td>
</tr>
*

DK-Scorp

  • Захожу иногда
  • 235
  • 6 / 0
  • Всегда готов! К чему только....? ХЗ.....
О, БИГ СЕНКЬЮ, а я прям в функцию пихал :laugh:
*

DK-Scorp

  • Захожу иногда
  • 235
  • 6 / 0
  • Всегда готов! К чему только....? ХЗ.....
Попробую сборку сделать, еще бы капчу в 1.0.хх прикрутить, смотрю тоже на жустинке сидите ?
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Попробую сборку сделать, еще бы капчу в 1.0.хх прикрутить, смотрю тоже на жустинке сидите ?
Да, работаем с joostina :)
Сейчас собрали уже 4 сборки различных.
С капчей на след. неделе разберусь.
*

DK-Scorp

  • Захожу иногда
  • 235
  • 6 / 0
  • Всегда готов! К чему только....? ХЗ.....
Уважаемый GlooM, капчу побороли ?
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Ох, признаюсь, забыл :)
Постараюсь на неделе, сейчас работы много
*

DK-Scorp

  • Захожу иногда
  • 235
  • 6 / 0
  • Всегда готов! К чему только....? ХЗ.....
Блин, все работает, но столкнулся со следующим вопросом:
Нерегенный/неавторизованный юзер с фронта добавляет объяву
и тут видны все поля, а по моей логике их бы тоже спрятать,
естественно эти поля не должны быть обязательными дабы объява без проблем сохранилась
рыл show_write_form пока не найду куда бы вставить :-(
*

DT3

  • Осваиваюсь на форуме
  • 44
  • 5 / 0
а как сделать показ только для хозяина объявления
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
я так понял чтобы спрятать пункты на вводе все тоже самое только в adsmanager.html.php в другую функцию сие конструктив вставить ( displayFields)?
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
+
забираю переделал для вывода полей при заполнении.
С фантазией плохо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено]Дублирования ссылки "объвления" в breadcrumb, в компоненте AdsManager

Автор nicklas

Ответов: 4
Просмотров: 3982
Последний ответ 25.04.2024, 23:13:18
от Rinat abzyi
AdsManager вывод нужных полей по отдельности

Автор klekovkinandrey

Ответов: 2
Просмотров: 14509
Последний ответ 06.04.2024, 09:54:15
от Rinat abzyi
AdsManager загрузка файлов

Автор FlexNL

Ответов: 1
Просмотров: 3239
Последний ответ 21.10.2021, 17:20:09
от khan-alex
AdsManager 2.9.13 Есть ли возможность добавить функцию снять с публикации по мимо редактировать и уд

Автор murovoz

Ответов: 11
Просмотров: 13622
Последний ответ 27.03.2020, 22:39:23
от Pavel
Два компонента AdsManager в одном движке

Автор kaman62

Ответов: 12
Просмотров: 28856
Последний ответ 27.03.2020, 22:32:04
от Pavel