Новости 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

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В пункте в меню, привязанном к конкретному материалу, клик на кнопку "изменить" откроет модалку с материалом, как в своем компоненте открыть такую по простой ссылке? все параметры материала заранее известны




могу просто вызвать модалку, в которой вставлю iframe, но ссылок на странице 50шт (вид списка в админке), хотелось бы по уму, как?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
до чего дошел прогресс...

в начале подключаем
Код
JHtml::_('jquery.framework');
JHtml::_('behavior.core');
JHtml::_('behavior.multiselect');
JHtml::_('behavior.formvalidator');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
JHtml::_('script', 'system/modal-fields.js', array('version' => 'auto', 'relative' => true));


генерим модалку и скрипт для работы с нею
Код
<div id="ModalEditArticle_jform_request_id" tabindex="-1" class="modal hide fade jviewport-width80" data-backdrop="static" data-keyboard="false">
<div class="modal-header">
<h3>Изменить материал</h3>
</div>
<div class="modal-body jviewport-height70"></div>
<div class="modal-footer">
<a role="button" class="btn" aria-hidden="true" onclick="window.processModalEdit(this, 'jform_request_id', 'edit', 'article', 'cancel', 'item-form'); return false;">Закрыть</a>
<a role="button" class="btn btn-primary" aria-hidden="true" onclick="window.processModalEdit(this, 'jform_request_id', 'edit', 'article', 'save', 'item-form'); return false;">Сохранить и закрыть</a>
<a role="button" class="btn btn-success" aria-hidden="true" onclick="window.processModalEdit(this, 'jform_request_id', 'edit', 'article', 'apply', 'item-form'); return false;">Сохранить</a></div>
</div>
<input type="hidden" id="jform_request_id_name" value="" />
<input type="hidden" id="jform_request_id_id"  class="required modal-value" data-required="1" name="jform[request][id]" value="" /></div>
</div>

<script>
function jSelectArticle_jform_request_id(id, title, catid, object, url, language) {
window.processModalSelect('Article', 'jform_request_id', id, title, catid, object, url, language);
}
jQuery(document).ready(function($) {
$('#ModalEditArticle_jform_request_id').on('show.bs.modal', function() {
        $('body').addClass('modal-open');
        var modalBody = $(this).find('.modal-body');
        modalBody.find('iframe').remove();
        modalBody.prepend('<iframe class="iframe jviewport-height70" src="index.php?option=com_content&amp;view=article&amp;layout=modal&amp;tmpl=component&amp;<?php echo JSession::getFormToken(); ?>=1&amp;task=article.edit&amp;id=' + document.getElementById("jform_request_id_id").value + '" name="Изменить материал" height="400px" width="800px"></iframe>');
    }).on('shown.bs.modal', function() {
        var modalHeight = $('div.modal:visible').outerHeight(true),
            modalHeaderHeight = $('div.modal-header:visible').outerHeight(true),
            modalBodyHeightOuter = $('div.modal-body:visible').outerHeight(true),
            modalBodyHeight = $('div.modal-body:visible').height(),
            modalFooterHeight = $('div.modal-footer:visible').outerHeight(true),
            padding = document.getElementById('ModalEditArticle_jform_request_id').offsetTop,
            maxModalHeight = ($(window).height()-(padding*2)),
            modalBodyPadding = (modalBodyHeightOuter-modalBodyHeight),
            maxModalBodyHeight = maxModalHeight-(modalHeaderHeight+modalFooterHeight+modalBodyPadding);
        var iframeHeight = $('.iframe').height();
        if (iframeHeight > maxModalBodyHeight){
            $('.modal-body').css({'max-height': maxModalBodyHeight, 'overflow-y': 'auto'});
            $('.iframe').css('max-height', maxModalBodyHeight-modalBodyPadding);
        }
    }).on('hide.bs.modal', function () {
        $('body').removeClass('modal-open');
        $('.modal-body').css({'max-height': 'initial', 'overflow-y': 'initial'});
        $('.modalTooltip').tooltip('destroy');
    });
});
</script>

ссылка, которая будет вызывать модалку
Код
<a href="#ModalEditArticle_jform_request_id" data-toggle="modal" role="button" onclick="document.getElementById('jform_request_id_id').value=<?php echo $item->article_id; ?>;document.getElementById('jform_request_id_name').value=jQuery(this).text;"><?php echo $this->escape($item->article_title); ?></a>

что ж как все просто-то...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Есть реализация вызова модального окна через SqueezeBox от Aleks.Denezh в его каркасе компонента.
генерим модалку и скрипт для работы с нею
Не нужно генерить скрипта - он уже есть в коробке. Достаточно набросать шаблон модалки и отрендерить его посредством JHtmlBootstrap
Код
echo JHtml::_('bootstrap.renderModal', ID_контейнера, параметры, HTML_вывод_шаблона_модалки);
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
можно и так наверное, мне просто надо было максимально быстро (создать компонент за 2 часа - как угнать тачку за 60 сек ))) ) и я тупо скопипизжил все из поля выбора материала для меню, уже с фронта админки дернул, тот самый паршийвый случай, когда и так сойдет ) работает же )
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
« Последнее редактирование: 04.05.2018, 22:31:23 от Aleks.Denezh »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Саш, ты невнимателен: мне это надо в модели списка, где просто ссылка, а не поле
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ваш первый пост немного о другом: там есть кнопка, которая вызывает список материалов. Поле, о котором писал Aleks.Denezh, выводит такую кнопку.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
могу просто вызвать модалку, в которой вставлю iframe, но ссылок на странице 50шт (вид списка в админке), хотелось бы по уму, как?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
« Последнее редактирование: 04.05.2018, 22:31:19 от Aleks.Denezh »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
это вот сюда вот ты мне поле предлагаешь запихнуть?

*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
« Последнее редактирование: 04.05.2018, 22:31:11 от Aleks.Denezh »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
первый скрин - пример, где это можно найти, чтобы отвечающий на вопрос мог конкретно посмотреть, как работает и что требуется
последний скрин - самописный компонент, где требуется реализовать

та ну ладно, не парься, уже сделал, работает, все довольны
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
« Последнее редактирование: 04.05.2018, 22:31:07 от Aleks.Denezh »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
в списке
а вида редактирования вообще нет, весь компонент - только 1 список в админке и 1 аякс-модель на фронте
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
это вот сюда вот ты мне поле предлагаешь запихнуть?
А ну тогда да, ваш способ - единственный верный, IMHO. Можно его реализовать через JHtmlBootstrap, как я писал, но суть та же.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

Ответов: 1
Просмотров: 727
Последний ответ 01.03.2021, 04:08:48
от gartes
Как подменить контент-плагином шаблон материала?

Автор Efanych

Ответов: 29
Просмотров: 1133
Последний ответ 30.03.2018, 16:11:57
от Efanych
Плагин добавления пользовательских полей в форму редактирования материала

Автор zeus07

Ответов: 0
Просмотров: 1119
Последний ответ 03.03.2017, 03:43:12
от zeus07
Вызов внешней функции из админки

Автор denism300

Ответов: 8
Просмотров: 1355
Последний ответ 15.12.2016, 15:37:33
от denism300
вызов setRedirect() из модели

Автор denism300

Ответов: 2
Просмотров: 1334
Последний ответ 11.12.2016, 21:16:12
от denism300