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

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Пытаюсь динамически сформировать текст в модуле. Для тестов взял простой код (с w3schools.com) и поместил его в tmpl/default.php:
Код
<html>
<body>

<p id="demo">Click the button to make a BUTTON element with text.</p>

<button onclick="myFunction()">Try it</button>

<script>

function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.body.appendChild(btn);
};

</script>

</body>
</html>



Если выполнить этот код вне модуля, то все работает. А этот же код внутри модуля не выполняется - кнопка "CLICK ME" не добавляется.
Буду признателен за помощь.



*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Раз никто не ответил, то несколько изменю (упрощу ?) вопрос. Проблема возникла при написании модуля на AJAX. Все работает, кроме куска кода, где на javascript требуется изменять элементы DOM. В частности, не работает функция getElementById. Поэтому ищу первопричину. Может быть, такая постановка проблемы известна специалистам по Joomla  и есть для нее решение ?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
зачем в модуле <html> и <body>?
это прописывается в шаблоне
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Такая постановка проблемы не достаточна, чтобы выявить первопричину.  Исходя из того, что вы меняете DOM через AJAX, причин может быть неограниченное множество. Приведите код полностью.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
выкиньте <html><body> и остальное в модуль flexi custom mode пихайте! или в любой другой модуль, где можно скрипты ставить! джед вам в помощь!
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
1. Насчет AJAX - думаю, нет смысла усложнять постановку задачи. У меня не работает и простой модуль, где из javascript выполняется работа с DOM. Дайте, пожалуйста, если можете пример модуля, где работает динамический вывод текста из javascript в модуле (аналогичный моему тестовому примеру).
2. Я пробовал вставить этот код
Код
<p id="demo">Click the button to make a BUTTON element with text.</p>

<button onclick="myFunction()">Try it</button>

<script>

function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.body.appendChild(btn);
};

</script>

в модули "Any copde" и "Custom javascript" и везде не добился нужного результата: "CLICK ME" не появляется.


*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Правильно, что ничего не появляется.
appendChild(t); - t у вас разве обьект?
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Просьба взять этот код вне Joomla и выполнить его. Все отлично работает: CLICK ME появляется.
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Просьба взять этот код вне Joomla и выполнить его. Все отлично работает: CLICK ME появляется.

Выполняться он может по разным причинам, но вовсе не обязан этого делать. Вот так обязан:
Код: javascript
function myFunction(){
var btn=document.createElement("BUTTON");
btn.innerHTML="CLICK ME";
document.body.appendChild(btn);
};
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
1. Я привык доверять сайту w3schools.com и сам проверил свой тестовый код. Вот мой тестовый пример с этого сайта:
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_document_createelement2

Ваш код работает у меня вне joomla: CLICK ME появляется. А вы можете проверить ваш код внутри модуля Joomla ? Если он у вас работает (CLICK ME появляется), то значит проблема у меня.  

2. Я проверил работу вашего кода внутри модулей flexi custom mode, any code и custom javascript: везде CLICK ME у меня не появляется. У меня возникло подозрение, что, возможно, какой-то plugin "портит картину" и надо будет поэтапно отсекать подозрительные плагины.
« Последнее редактирование: 29.09.2013, 22:49:50 от FIORD_CMS »
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
2. Я проверил работу вашего кода внутри модулей flexi custom mode, any code и custom javascript: везде CLICK ME у меня не появляется. У меня возникло подозрение, что, возможно, какой-то plugin "портит картину" и надо будет поэтапно отсекать подозрительные плагины.
угу, включить консоль FireBug или что там используется для отладки и смотреть на предмет ошибок JS
*

fsv

  • Живу я здесь
  • 2785
  • 413 / 2
У меня не работает и простой модуль, где из javascript выполняется работа с DOM.
...Я пробовал вставить этот код
Код
<p id="demo">Click the button to make a BUTTON element with text.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.body.appendChild(btn);
};
</script>
в модули "Any copde" и "Custom javascript" и везде не добился нужного результата: "CLICK ME" не появляется.

А где вы новую кнопку пытались увидеть? В модуле? Посмотрите в подвале сайта, там их пачка будет после нескольких кликов.
У меня в модуле ваш код работает, но добавляет, естественно, в конец body.
А так - в модуле:
Код: javascript
<button onclick="myFunction()">Try it</button>
<div id="mydiv"></div>
<script>
function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
//document.body.appendChild(btn);
document.getElementById("mydiv").appendChild(btn);
};
</script>
Веб-разработка: заказ. Только новая разработка.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Спасибо. Все заработало. Теперь можно двигаться дальше. Не могли бы вы подсказать(надеюсь, что мой вопрос не украдет у вас слишком много времени), как правильно вставить аналогичную Javascript-функцию в php-код в модуле (в файл tmpl/default.php)? Я пытался вставить следующим образом (вызов функции myFunction1 в функции getData), но она не отрабатывает (в приведенном коде много отладочно-тестового вывода - просьба строго не судить, я не являюсь опытным web программистом):
Код
<?php 

echo

"<script language='javascript'>

      var XMLHttpRequestObject = false;
      var responseText;

      if (window.XMLHttpRequest) {
        XMLHttpRequestObject = new XMLHttpRequest();
      }
      else  if (window.ActiveXObject)
      {
        XMLHttpRequestObject = new
        ActiveXObject('Microsoft.XMLHTTP');
      }

      function getData(dataSource)
      {
    myFunction1();

if(XMLHttpRequestObject) {

          XMLHttpRequestObject.open('GET', dataSource);

          XMLHttpRequestObject.onreadystatechange = function()
          {

            if (XMLHttpRequestObject.readyState == 4 &&
              XMLHttpRequestObject.status == 200) {
responseText = XMLHttpRequestObject.responseText;
alert(responseText);
            }
          }

          XMLHttpRequestObject.send(null);
        }
      }

</script>";

$add_val_text="2";
$mod_link='/modules/mod_show_currency/tmpl/get_currency.php?add_value_text='.$add_val_text;

$output='<div id="show_currency"> <p >'.date("d/m/Y H:i:s").'</p> </div>';

// Call AJAX function getData
echo  "<script language='javascript'> getData('$mod_link'); </script>";


echo $add_val_text;
echo $output;


?>

<button onclick="myFunction()">Try it</button>
<div id="mydiv"></div>

<button onclick="myFunction1()">Show currency</button>
<div id="show_currency_id"></div>

<script>

function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.getElementById("mydiv").appendChild(btn);
};


function myFunction1()
{
var btn1=document.createElement("BUTTON");
var t1=document.createTextNode("New currency");
btn1.appendChild(t1);
document.getElementById("show_currency_id").appendChild(btn1);
};
</script>

*

fsv

  • Живу я здесь
  • 2785
  • 413 / 2
Я пытался вставить следующим образом (вызов функции myFunction1 в функции getData), но она не отрабатывает

Переместите следующий код вверх, над всем остальным кодом, указанным в последнем вашем посте.
Код: javascript
<button onclick="myFunction()">Try it</button> 
<div id="mydiv"></div>
<button onclick="myFunction1()">Show currency</button>
<div id="show_currency_id"></div>
<script>
function myFunction() {
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.getElementById("mydiv").appendChild(btn);
};
function myFunction1() {
var btn1=document.createElement("BUTTON");
var t1=document.createTextNode("New currency");
btn1.appendChild(t1);
document.getElementById("show_currency_id").appendChild(btn1);
};
</script>
Должно заработать.

[spoiler title=Пожелания...]Убирайте отладочную информацию из кода.
Невозможно читать код, форматируйте.
Приводите тексты ошибок из консоли. Тут этого было бы достаточно.[/spoiler]
Веб-разработка: заказ. Только новая разработка.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Спасибо, но вы не совсем поняли мою проблему. По нажатию кнопки "New currency" функция myFunction1 и уменя вызывается нормально. Меня же интересует неработоспособность этой функции из функции getData:
Цитировать
(вызов функции myFunction1 в функции getData), но она не отрабатывает
*

fsv

  • Живу я здесь
  • 2785
  • 413 / 2
Понял. Я не про кнопку "New currency". А именно про
интересует неработоспособность этой функции из функции getData:
Работает. Вы попробовали перенести код? Вы не используете обработчик загрузки страницы. И хотите в одной функции использовать другую, еще не прочитанную.
Веб-разработка: заказ. Только новая разработка.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Замечательно - заработало. Я благодарен за очень конструктивную помощь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с логином на сайт через Iphone

Автор AdmiralSFF

Ответов: 4
Просмотров: 2665
Последний ответ 13.08.2022, 13:19:41
от AdmiralSFF
Проблема с переносом Joomla сайта с хостинга на денвер

Автор 62411

Ответов: 4
Просмотров: 2204
Последний ответ 21.02.2022, 20:22:11
от arma
Проблема Adobe Flash Player

Автор MamontFirst

Ответов: 5
Просмотров: 1588
Последний ответ 23.01.2021, 21:25:23
от MamontFirst
Проблема с редактированием материалов

Автор olesya

Ответов: 15
Просмотров: 3417
Последний ответ 12.07.2020, 12:46:06
от NataliS
Проблема со страницей "Общие настройки" - Joomla 2.5

Автор sultan7

Ответов: 20
Просмотров: 2904
Последний ответ 20.10.2019, 18:24:21
от sultan7