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

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
нет ) у вас же объект формы, а там есть метод setValue($name, $group = null, $value = null)
а событие onContentPrepareForm($form, $data)   в первом параметре передает форму!
вам нужно сделать что то типа:
Код: php
$form->setValue('название поля', 'Группа в котором поле (если нет группы то просто пустоту оставить)', 'Значение поля');
Во, спасибо! Сделал)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
вам нужно сделать что то типа:
или
Код: php-brief
$data->pole ='значение';
$form->bind($data);
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
или
Код: php-brief
$data->pole ='значение';
$form->bind($data);
Ок, спасибо! Попробуем)

ЗЫ Нашел отличную статью по теме http://slyweb.ru/joomla/joomla-create-custom-form-field/ ;)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
в той статье как и в плагине по которому она писалась (user profile) есть логические ошибки
Код: php-brief
foreach ($article->rating as $k => $v)
           {
            $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
           }
нет здесь смысла писать пустое значение, тем самым вставляя ненужную строку при пустом значении
логичнее было
Код: php-brief
foreach ($article->rating as $k => $v)
           {
            if ($v) $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
           }
так же поле order, в таблице необходимость его под сомнением и упаковка json полей и приставка rating, profile
Честно не отточено
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
в той статье как и в плагине по которому она писалась (user profile) есть логические ошибки
Код: php-brief
foreach ($article->rating as $k => $v)
            {
             $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
            }
нет здесь смысла писать пустое значение, тем самым вставляя ненужную строку при пустом значении
логичнее было
Код: php-brief
foreach ($article->rating as $k => $v)
            {
             if ($v) $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
            }
так же поле order, в таблице необходимость его под сомнением и упаковка json полей и приставка rating, profile
Честно не отточено
Да я и не говорю, что в статье идеально описан метод добавления доп. строк к стандартному материалу. Каждый выполняющий эту задачу должен ее заточить под себя. Это просто как наглядный пример по созданию плагина. А дорабатывает его каждый сам под себя.
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
А из файла плагина есть возможность добавлять строки в переменную $this->item ?
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
to Istaan
Код: php
public function onContentAfterSave($context, $article, $isNew){	}
в этом методе в $context будет что то типа 'com_content.article'
в $article -  будет вся ваша запись
в $isNew - будет true если это новая запись
Проблема, ни в одной из этих переменных нет данных введенных в формах
Код
public function onContentBeforeSave($context, $article, $isNew) {
    echo '<pre style="font-size: 12pt;">'; print_r($article); echo '</pre>';
    exit;
  }
В переменной $article только стандартные поля. Ни одного из добавленных мною полей нет.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
А как вы поля в форму вставляете?
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
А как вы поля в форму вставляете?
А какой именно момент нужен?
Вообще через
Код
public function onContentPrepareForm($form, $data)
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
День добрый!
Подскажите пожалуйста, используя триггер onContentAfterSave не знаю как загрузить изображение на сервер. Надо хотя бы перенести файл с компа на сервер во временную папку (подойдет и tmp), дальше думаю сам уже разберусь. Подскажите, как это сделать?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну изображение нужно отправить через форму минимум! если файл у вас на компе, а сайт на сервере то он никак не сможет получить доступ к этому файлу, только если вы не впихнете его в <input type="file" /> вручную!
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
ну изображение нужно отправить через форму минимум! если файл у вас на компе, а сайт на сервере то он никак не сможет получить доступ к этому файлу, только если вы не впихнете его в <input type="file" /> вручную!
Ну форма то то есть:
Код
<input type="file" name="jform[temp][upload_photo_1]" id="jform_temp_upload_photo_1" value="" />
Вроде нашел как загружать файлы - http://joomlaforum.ru/index.php/topic,263530.msg1331151.html#msg1331151. Но чет у меня не выходит добавить файл. Вообще в onContentAfterSave можно добавить загрузку файлов?

Код
        $app = JFactory::getApplication();
        $jinput = $app->input;
 
        // получаем параметры формы
        $file = $jinput->files->get('jform[temp][upload_photo_1]', null, 'files', 'array');
        $filename = JFile::makeSafe($file['name']);
Делал так и получилось что переменные $file и $filename вообще пустые...
« Последнее редактирование: 05.11.2013, 16:15:48 от Sphinx »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
$file = $jinput->files->get('jform', null, 'files', 'array');
print_r($file);
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
$file = $jinput->files->get('jform', null, 'files', 'array');
print_r($file);
В функцию public function onContentAfterSave($context, $article, $isNew) добавил строки:
Код
    $app = JFactory::getApplication();
    $jinput = $app->input;

    $file = $jinput->files->get('jform', null, 'files', 'array');
К сожалению переменная $file пуста(((

ЗЫ если сделать вывод на экран:
Код
echo '<pre style="font-size: 12pt;">'; print_r($_POST[jform][temp]['upload_photo_1']); echo '</pre>';
то имя файла выводится без проблем...
« Последнее редактирование: 05.11.2013, 16:57:45 от Sphinx »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
форма материала стандартного?
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
форма материала стандартного?
Компонент материала стандартный, я к нему прикручиваю свои доп. поля. Вот хочу прикрутить, чтобы фотки можно было к материалу прикреплять. Вот и надо хотябы файл с компа перетащить на сервак, а дальше уже боле-менее знаю что делать...
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Материал стандартный, я к нему прикручиваю свои доп. поля.
ну естественно ничего не будет работать! ибо в стандартной форме материала нет enctype="multipart/form-data" без которого файлы слаться не будут!
вам нужно с помощью JS добавить такой аттрибут в форму!
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
ну естественно ничего не будет работать! ибо в стандартной форме материала нет enctype="multipart/form-data" без которого файлы слаться не будут!
вам нужно с помощью JS добавить такой аттрибут в форму!
Блин, вообще JS  не знаю, даже с какой стороны подходить к нему(((
А вы не подскажете как эт сделать, ну или хоть пример где найти, куда копать?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну могу сказать как на jQuery )
вот например для Joomla 3
Код: php
JHtml::_('jquery.framework');
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); '); 
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
ну могу сказать как на jQuery )
вот например для Joomla 3
Код: php
JHtml::_('jquery.framework');
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); '); 
Ок, спасибо. Куда копать наверное понял))) Буду думать для версии 2.5) Если что, буду писать сюда)
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ок, спасибо. Куда копать наверное понял))) Буду думать для версии 2.5) Если что, буду писать сюда)
для версии 2.5 почти тоже
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
для версии 2.5 почти тоже
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
Ды я бы до этих строк бы неделю потерял... разбираясь
Спасибо.
А я так понимаю их ведь не в onContentAfterSave ставить?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ды я бы до этих строк бы неделю потерял... разбираясь
Спасибо.
А я так понимаю их ведь не в onContentAfterSave ставить?
нет конечно ) я пихаю в
Код: php
public function onContentPrepareData()
{
$input = JFactory::getApplication()->input;
if ( $input->getCmd( 'option', '' ) === 'com_content' && $input->getCmd( 'view', '' ) === 'article' && $nput->getCmd( 'layout', '' ) === 'edit' ) {
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
}
}
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
нет конечно ) я пихаю в
Код: php
public function onContentPrepareData()
{
$input = JFactory::getApplication()->input;
if ( $input->getCmd( 'option', '' ) === 'com_content' && $input->getCmd( 'view', '' ) === 'article' && $nput->getCmd( 'layout', '' ) === 'edit' ) {
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
}
}
Ок, спасиб. У меня onContentPrepareData не работает, я запихну в onContentPrepareForm.

Т.к. JS не знаю, результат какой должен получиться? В HTML коде должна добавиться  enctype="multipart/form-data"? Или физически не добавиться, но будет работать как с enctype="multipart/form-data" ? У меня вот не добавилось ничего, ну и изменений не произошло...

Добавил:
Код
JFactory::getDocument()->addScript( 'http://code.jquery.com/jquery-latest.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
Строка по добавлению jquery появилась, вторая строка тоже появилась в разделе скриптов. Но вот сам атрибут нифига не появляется в теге form

И вот оно) о чудо) атрибут физически не появился, но... переменная $files теперь содержит инфу) Поменял первую строку и вроде заработало) Буду разбираться, спасибо)
« Последнее редактирование: 06.11.2013, 11:54:31 от Sphinx »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
И вот оно) о чудо) атрибут физически не появился, но... переменная $files теперь содержит инфу) Поменял первую строку и вроде заработало) Буду разбираться, спасибо)
Атрибут через просмотр HTML кода вы естественно не увидите! потому что там не отображается выполнения скриптов! если вы просмотрите через "Просмотр кода элемента" в Chrome то увидите что у формы появится этот атрибут )
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
Атрибут через просмотр HTML кода вы естественно не увидите! потому что там не отображается выполнения скриптов! если вы просмотрите через "Просмотр кода элемента" в Chrome то увидите что у формы появится этот атрибут )
Ок, спасибо. Все работает.
Полезные статейки у вас для работы с файлами, папками и изображениями:
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-izobrazheniyami-v-joomla-jimage
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-papkami-v-joomla-klass-jfolder
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-fajlami-v-joomla-klass-jfile
Без них бы я долго разбирался и искал нужную инфу)
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ок, спасибо. Все работает.
Не за что )
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
А подскажите еще, как в XML файл добавить параметр к инпуту:
onkeypress="return filter_input(event,/[А-Я0-9]/i)"

Код
<field
  name="test"
  type="text"
  label="test"
  description="test"
  size="20"
  default=""
=/>

Необходимо что бы в итоге получилось:
<input type="text" name="jform[test]" id="test" value="123456789" size="20" onkeypress="return filter_input(event,/[А-Я0-9]/i)"/>
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Только написать свой field который унаследовать от JFieldText
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
Только написать свой field который унаследовать от JFieldText
Нда, как оказывается, геморно модифицировать под свои нужды стандартный компонент материалов( Куда проще и быстрее, по ходу дела, написать свой, заточенный только под свои задачи, компонент....
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Компонент для создания тестов Ari Quiz

Автор alex_noize

Ответов: 0
Просмотров: 1578
Последний ответ 25.02.2016, 20:31:51
от alex_noize
Переименовать com_content

Автор Sergeyy

Ответов: 3
Просмотров: 1440
Последний ответ 18.01.2016, 01:22:21
от dmitry_stas
Сортировка материала в RSS (view.feed.php) по дате создания

Автор bombapiter

Ответов: 7
Просмотров: 3017
Последний ответ 24.10.2014, 10:49:31
от bombapiter
Как проверить существует ли ID материала?

Автор sorrrrry

Ответов: 7
Просмотров: 2658
Последний ответ 15.10.2014, 16:52:58
от SmokerMan
Компонент для подмены файлов ядра jHacksPro

Автор rigin

Ответов: 0
Просмотров: 1440
Последний ответ 04.10.2014, 18:13:40
от rigin