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

Klavnik

  • Новичок
  • 5
  • 0 / 0
Работаю со сторонним шаблоном. При редактировании материала с общедоступных страниц (не с панели управления), кнопка "сохранить" не реагирует, а "отменить" работает. Выяснил, что дело именно в шаблоне, т.к. применял шаблон Atomic, то все работает. Причем при примененном моем шаблоне, при замене файла моего шаблона index.php на файл шаблона Atomic, кнопки также работают.
PS: Вроде не дурак, но не нашел, что в коде исправить.

Прилагаю файл index.php моего шаблона.
Код
<?php

// no direct access
defined('_JEXEC') or die('Restricted access');
include_once(JPATH_ROOT . "/templates/" . $this->template . '/js/classe/layout.php');

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >

<head>
<jdoc:include type="head" />

<?php JHTML::_('behavior.framework', true);
$app                = JFactory::getApplication();
$templateparams     = $app->getTemplate(true)->params;
$csite_name        = $app->getCfg('sitename');
$path = $this->baseurl.'/templates/'.$this->template;    
?>

  <?php  # main width#
    $mod_left = $this->countModules( 'position-5' );
    $mod_right = $this->countModules( 'position-7' );
    if ( $mod_left || $mod_right ) {
    $width = '';
    } else {
    $width = '-full';
    }
    ?>  
 
 <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/blaskern/css/tdefaut.css" type="text/css" media="all" />
 <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/blaskern/css/box.css" type="text/css" media="all" />
 <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/mootools.js"></script>  
 <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/script.js"></script>
 <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/jquery.js"></script>    
 <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/superfish.js"></script>  
 <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/hover.js"></script>
 <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/nivo.slider.js"></script>
 <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/scroll.js"></script>
  <script type="text/javascript" src="templates/<?php echo $this->template ?>/js/hide.js"></script>
 <link rel="icon" type="image/gif" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/favicon.gif" />    
 
 <script type="text/javascript">    
 window.addEvent('domready', function() {    
 SqueezeBox.initialize({});    
 $$('a.modal').each(function(el) {    
 el.addEvent('click', function(e) {    
 new Event(e).stop();    SqueezeBox.fromElement(el);    
 }); }); });    
 </script>    
 
 <script type="text/javascript">      
 var $j = jQuery.noConflict(); $j(document).ready(function() {    
 $j('.navigation ul').superfish({  
 delay:       800,                            
 animation:   {opacity:'show',height:'show'},    
 speed:       'normal',                          
 autoArrows:  false,                            
 dropShadows: true                            
 });   });
 </script>
 
 <script type="text/javascript">    
 var $j = jQuery.noConflict();    
 jQuery(document).ready(function ($){    
 $j("#slider").nivoSlider(    
 {effect: "sliceUpDown",    
 slices: 15,    
 boxCols: 8,    
 boxRows: 4,    
 animSpeed: 1000,    
 pauseTime: 3000,    
 captionOpacity: 1    
 }); });    
 </script>
 
 </head>
 <body>    
    <div id="header">
  
        <div class="pagewidth">

            <div id="sitename">                                          
                <a href="index.php">
<img src="templates/<?php echo $this->template ?>/images/logo_base.png" alt="Логотип" />
<img src="templates/<?php echo $this->template ?>/images/logo.png" width="306" height="71" alt="Квантек" />

</a>                              
</div>

                <div id="search">
                    <jdoc:include type="modules" name="position-0" />  
                </div>
<div id="contnow" align="left">
(342)240-07-68
<br>
quantek@quantek.ru
</div>
</div>
    </div>

        <div id="topmenu">    
            <div class="pagewidth">    
                <div class="navigation">                                                                    
                    <jdoc:include type="modules" name="position-1" />                                                        
                </div>    
                    <div id="toolitem">        
                        <div id="loginbt">  
<!--
                            <div class="text-login">        
                                <a href="#helpdiv" class="modal"  style="cursor:pointer" title="Login"  rel="{size: {x: 206, y: 285}, ajaxOptions: {method: &quot;get&quot;}}">                                    
                                    <img src="templates/<?php echo $this->template ?>/images/login.png" width="110" height="36" alt="login" />        
                                </a>        
                            </div>
-->
                        </div>                            
                            <div style="display:none;">                                
                                <div id="helpdiv" >                                    
                                    <jdoc:include type="modules" name="login" style="xhtml" />                                
                                </div>                          
                            </div>        
                    </div>
            </div>        
        </div>            
            <?php $menu = JSite::getMenu(); ?>            
            <?php $lang = JFactory::getLanguage(); ?>            
            <?php if ($menu->getActive() == $menu->getDefault($lang->getTag())) { ?>            
            <?php if ($this->params->get( 'slidedisable' )) : ?>  
            <?php include "slideshow.php"; ?><?php endif; ?>            
             <?php } ?>

            <div id="line"></div>
                <div class="pagewidth">
               <div id="wrapper-main<?php echo $width; ?>">
                        <div id="main<?php echo $width ?>">                                                              
            <jdoc:include type="component" />
                            <?php echo $modules_component ;?>
       </div>    
                    </div>
                        <?php if ($this->countModules( 'position-7 or position-5' )) : ?>                                          
      <div id="colonne">
                                <?php if ($this->countModules('position-7')) { ?>
       <div id="right">                                                                                            
       <jdoc:include type="modules" name="position-7" style="xhtml" />                                                                                    
   </div>
                                <?php } ?>
       <?php if ($this->countModules('position-5')) { ?>
                           <div class="modulebox1">
                                        <jdoc:include type="modules" name="position-5" style="beezTabs" headerLevel="2"  id="3" />
                                    </div>
<?php } ?>
</div>
               <?php endif; ?>    
                </div>
   <div id="ft">
           <div class="pagewidth">
       <div class="ftb">
           <?php echo date( 'Y' ); ?>&nbsp; <?php echo $csite_name; ?>&nbsp;&nbsp;<?php require("template.php"); ?>
                            </div>
       <div id="top">
                                    <div class="top_button">
                                        <a href="#" onclick="scrollToTop();return false;">
               <img src="templates/<?php echo $this->template ?>/images/top.png" width="30" height="30" alt="top" /></a>
                                    </div>
           </div>
           </div>
                     </div>        
 </body>
 </html>

« Последнее редактирование: 27.01.2014, 12:56:48 от b2z »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
*

Klavnik

  • Новичок
  • 5
  • 0 / 0
Единственное предположение - конфликт сриптов. Ошибки JS нет?
Код
TypeError: Object function (b,g){var h=Element.Constructors[b];if(h){return h(g);}if(typeof b!="string"){return document.id(b).set(g);}if(!g){g={};}if(!(/^[\w-]+$/).test(b)){var e=Slick.parse(b).expressions[0][0]; b=(e.tag=="*")?"div":e.tag;if(e.id&&g.id==null){g.id=e.id;}var d=e.attributes;if(d){for(var a,f=0,c=d.length;f<c;f++){a=d[f];if(g[a.key]!=null){continue; }if(a.value!=null&&a.operator=="="){g[a.key]=a.value;}else{if(!a.value&&!a.operator){g[a.key]=true;}}}}if(e.classList&&g["class"]==null){g["class"]=e.classList.join(" "); }}return document.newElement(b,g);} has no method 'setMany'
***/templates/blaskern/js/mootools.js:31

TypeError: undefined is not a function
***/media/editors/tinymce/jscripts/tiny_mce/tiny_mce.js:1

TypeError: Cannot read property 'disabled' of undefined
***/templates/blaskern/js/mootools.js:38
Да, действительно! С ходу исправить возможно такое?
*

Klavnik

  • Новичок
  • 5
  • 0 / 0
To b2z, при исключении скрипта mootools.js из папки шаблон/js, заработало и на работоспособность сайта вроде не повлияло.
Также скачал новую версию mootools.js и также все заработало :)
Спасибо, что навели на мысль!
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Ну так у Вас mootools 2 раза подключается. И по моему jquery тоже два раза, нет? Проверьте.
*

Klavnik

  • Новичок
  • 5
  • 0 / 0
mootools  вроде один раз подключается, во всяком случае в index.php один раз прописан, а вот Jquery - да, тоже прописан, они не могут вместе работать?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
*

Klavnik

  • Новичок
  • 5
  • 0 / 0
Спасибо, буду знать и иметь ввиду!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает GTranslate модуль

Автор rapsila

Ответов: 19
Просмотров: 3580
Последний ответ 06.09.2022, 22:52:02
от rapsila
Не работает отправка почты

Автор Mick_20

Ответов: 12
Просмотров: 1790
Последний ответ 11.01.2022, 17:12:19
от befesol
[РЕШЕНО] Как в Joomla 2.5 автоматом удалять пользователей, не активировавшихся?

Автор pH43

Ответов: 2
Просмотров: 4182
Последний ответ 01.06.2020, 17:16:26
от pH43
В Google Chrome некорректно работает админка

Автор Dorotar

Ответов: 1
Просмотров: 1340
Последний ответ 09.02.2020, 10:49:15
от Dorotar
Не работает в авторизация

Автор Mobist

Ответов: 8
Просмотров: 1893
Последний ответ 05.08.2019, 13:04:34
от voland