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

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
Notice: Undefined variable: links in /***/modules/mod_vnz_latestnews_slice/helper.php on line 136
Установлен модуль последних новостей vinazoom latestnews slice. Данная ошибка появляется сверху над новостью, если открыты например 2 страницы сайта одновременно в разных вкладках, но на первой вкладке ошибки нет, на второй уже есть. Причем локально таких ошибок не было, на хостинге появились.
Строка 136 содержит запись:
Код
$lists[$i]->img = $links;
//$img=find_image($description);
//echo $description;
//echo $list[0]->intro;
//echo $img;
$links=0;
$i++;
Как исправить?
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
Ребята, подскажите как исправить. Сейчас зашла на сайт, оказывается ошибка сохраняется и просто при открытии сайта, т.е. она на всех страницах сразу вылазит. Придется временно отключить модуль, странно у меня на том же хостинге стоит еще 1 сайт и там модуль ошибок не выдает.
Пожалуйста не останьтесь равнодушными :)
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
этот кусок не о чем не говорит.
нужно смотреть где иницилизируется переменная $links, для этого как минимум нужно глянуть на весь код.
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Это не ошибка а уведомление, т.е. ничего страшного, можно сделать так:

if (!isset($links)) {
   $links = '';
}

но легче перед переменной поставить символ @:

$lists[$i]->img = @$links;
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
но легче перед переменной поставить символ @:
это не логичней, это называется быдлокодерство :)
*

icom

  • Давно я тут
  • 830
  • 202 / 4
я не говорю что логичней, я говорю легче
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
я не говорю что логичней, я говорю легче
сори, глазками балуюсь.
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
этот кусок не о чем не говорит.
нужно смотреть где иницилизируется переменная $links, для этого как минимум нужно глянуть на весь код.
раньше никак не могла тут ответить. вот сам файл helper.php
Код
<?php
/**
* @version $Id: helper.php 10857 2008-08-30 06:41:16Z willebil $
* @package Joomla
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// Litchfield Morris modified this module to display the Intro text as well as the Article Title

// no direct access
defined('_JEXEC') or die('Restricted access');

require_once (JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');

class modVNZLatestNewsHelper
{


function getList(&$params)
{
global $mainframe;

$db =& JFactory::getDBO();
$user =& JFactory::getUser();
$userId = (int) $user->get('id');

$count = (int) $params->get('count', 5);
$catid = trim( $params->get('catid') );
$secid = trim( $params->get('secid') );
$show_front = $params->get('show_front', 1);
$aid = $user->get('aid', 0);

$contentConfig = &JComponentHelper::getParams( 'com_content' );
$access = !$contentConfig->get('show_noauth');

$nullDate = $db->getNullDate();

$date =& JFactory::getDate();
$now = $date->toMySQL();

$where = 'a.state = 1'
. ' AND ( a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' )'
. ' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )'
;

// User Filter
switch ($params->get( 'user_id' ))
{
case 'by_me':
$where .= ' AND (created_by = ' . (int) $userId . ' OR modified_by = ' . (int) $userId . ')';
break;
case 'not_me':
$where .= ' AND (created_by <> ' . (int) $userId . ' AND modified_by <> ' . (int) $userId . ')';
break;
}

// Ordering
switch ($params->get( 'ordering' ))
{
case 'm_dsc':
$ordering = 'a.modified DESC, a.created DESC';
break;
case 'c_dsc':
default:
$ordering = 'a.created DESC';
break;
}

if ($catid)
{
$ids = explode( ',', $catid );
JArrayHelper::toInteger( $ids );
$catCondition = ' AND (cc.id=' . implode( ' OR cc.id=', $ids ). ')';
}
if ($secid)
{
$ids = explode( ',', $secid );
JArrayHelper::toInteger( $ids );
$secCondition = ' AND (s.id=' . implode( ' OR s.id=', $ids ). ')';
}

// Content Items only
$query = 'SELECT a.*, ' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
' FROM #__content AS a' .
($show_front == '0' ? ' LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id' : '').
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
' WHERE '. $where .' AND s.id > 0' .
($access ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
($catid ? $catCondition : '').
($secid ? $secCondition : '').
($show_front == '0' ? ' AND f.content_id IS NULL ' : '').
' AND s.published = 1' .
' AND cc.published = 1' .
' ORDER BY '. $ordering;
$db->setQuery($query, 0, $count);
$rows = $db->loadObjectList();

$i = 0;
$lists = array();

foreach ( $rows as $row )
{
if($row->access <= $aid)
{
$lists[$i]->link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid));
} else {
$lists[$i]->link = JRoute::_('index.php?option=com_user&view=login');
}
$lists[$i]->text = htmlspecialchars( $row->title );
// Litchfield Morris added Intro text
$lists[$i]->intro = $row->introtext ;


$str=$lists[$i]->intro;
//$str=strval($str);

//$str=str_replace('&lt;','<',$description);
//$str=str_replace('&gt;','>',$description);
//$description=str_replace('quot;','"',$description);
$tag='<img';
$pos_img=strpos($str,$tag);
if ($pos_img!=0){
$src=strpos($str,'src="',$pos_img);
$end_src=strpos($str,'"',$src+7);
$links=substr($str,$src+5,$end_src-$src-5);
}
$lists[$i]->img = $links ;
//$img=find_image($description);
//echo $description;
//echo $list[0]->intro;
//echo $img;
$links=0;
$i++;
}

return $lists;
}

}
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
Это не ошибка а уведомление, т.е. ничего страшного, можно сделать так:

if (!isset($links)) {
   $links = '';
}
а где это вписывается? и что будет означать данная запись?
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
У меня наподобие выскакивало уведомление еще в одном модуле
rsevents предстоящие мероприятия. Я в общих настройках сегодня выбрала Сообщение об ошибках - простой (до этого стояло максимальный). И все уведомления не видны теперь.
А сейчас ради интереса зашла на сайт, выставила опять максимальный и вижу что все в порядке, никаких уведомлений нет.
Что это за ерунда такая? вдруг завтра зайду и опять эта "красота" появится(
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
Пришлось опять в админке выставить Уведомление об ошибках - Простой, т.к. опять стало показываться
*

icom

  • Давно я тут
  • 830
  • 202 / 4
if (!isset($links)) {
   $links = '';
}

нужно вставить перед

$lists[$i]->img = $links;
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
icom, спасибо! сделала так как посоветовали. Буду следить чтоб опять не всплыло уведомление.
Может тогда сразу подскажите - подобная ошибка еще в 1 модуле:
Notice: Undefined variable: eventLink in /***/modules/mod_rsevents_upcoming/helper.php on line 92:
Код
$eventIcon = '<a href="'.$eventLink.'"><img style="vertical-align:middle;padding-bottom:2px;" src="'.JURI::root().'components/com_rsevents/images/thumbs/'.$small_icon.'" /></a>';
else
$eventIcon = '';
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
прикладываю сам файл
Код
<?php
/**
* @version 1.0.0
* @package RSEvents! 1.0.0
* @copyright (C) 2009 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/

// no direct access
defined('_JEXEC') or die('Restricted access');


class modRseventsHelper
{

/**
* Method to get the events
*
* @access public
* @return array
*/
function getList(&$params)
{
global $mainframe;

$db =& JFactory::getDBO();
$rseventsConfig = $mainframe->getUserState('rseventsConfig');

if(file_exists(JPATH_SITE.DS.'components'.DS.'com_rsevents'.DS.'helpers'.DS.'rsevents.php'))
require_once(JPATH_SITE.DS.'components'.DS.'com_rsevents'.DS.'helpers'.DS.'rsevents.php');
else return;

$where = "";

$current_time = time();
$locationIds = $params->get('locids','');
$categoryIds = $params->get('catids','');
$repeatingEvents = $params->get('repeatevents','0');
$itid = $params->get('itemid','');
$limit = (int)$params->get('evnumber');
if($limit == 0) $limit= 1000000;

$ordering = $params->get('ordering','0');
$order = ($ordering == 0)? 'DESC' : 'ASC';

if(is_array($locationIds))
$locids = implode(',', $locationIds);
else $locids = $locationIds;
if(is_array($categoryIds))
$catids = implode(',', $categoryIds);
else $catids = $categoryIds;

$where .= " AND e.EventStartDate >= '".$current_time."' ";

if(!empty($locationIds))
$where .= " AND l.IdLocation IN (".$locids.") ";
if(!empty($categoryIds))
$where .= " AND c.IdCategory IN (".$catids.") ";

$where .= " AND e.published = 1 AND e.EventType = 1 ";

if($repeatingEvents == 1 ) $where .= " AND e.IdParent = 0 ";
else $where .= "";

$db->setQuery("SELECT ConfigValue FROM #__rsevents_config WHERE ConfigName = 'global.dateformat'");
$dateFormat = $db->loadResult();

$query = "SELECT e.IdEvent , e.EventName , l.IdLocation , l.LocationName , e.EventStartDate , e.EventEndDate , e.EventIcon ,  c.IdCategory , c.CategoryName FROM #__rsevents_events e "
." LEFT JOIN #__rsevents_locations l ON e.IdLocation=l.IdLocation LEFT JOIN #__rsevents_events_cat ec ON ec.IdEvent = e.IdEvent LEFT JOIN #__rsevents_categories c ON c.IdCategory = ec.IdCategory WHERE 1=1 ".$where." GROUP BY e.IdEvent ORDER BY e.EventStartDate ".$order." LIMIT ".$limit;

$db->setQuery($query);
$rows = $db->loadObjectList();


$Itemid = JRequest::getVar('Itemid','','request');
if(!empty($Itemid))
{
if($itid == '' || empty($itid)) $itemId =  '&Itemid='.$Itemid;
else $itemId = '&Itemid='.$itid;
} else $itemId='';

$i = 0;
$lists = array();
if(!empty($rows))
foreach ( $rows as $row )
{
$categnames = array();
$layout = $params->get('layout','{EventName} - {EventLocation}');

$small_icon = str_replace('.jpg','_'.$rseventsConfig['event.icon.small'].'.jpg',$row->EventIcon);
if($rseventsConfig['enable.event.icon'] && $row->EventIcon != '')
$eventIcon = '<a href="'.$eventLink.'"><img style="vertical-align:middle;padding-bottom:2px;" src="'.JURI::root().'components/com_rsevents/images/thumbs/'.$small_icon.'" /></a>';
else
$eventIcon = '';

$db->setQuery("SELECT c.CategoryName , c.IdCategory FROM #__rsevents_categories c LEFT JOIN #__rsevents_events_cat ec ON ec.IdCategory = c.IdCategory WHERE ec.IdEvent =".$row->IdEvent);
$categs = $db->loadObjectList();
foreach($categs as $categ)
$categnames[] = '<a target="_blank" href="'.html_entity_decode(JRoute::_('index.php?option=com_rsevents&view=events&layout=listcategoryevents&cid='.$categ->IdCategory.$itemId)).'">'.$categ->CategoryName.'</a>';

$categnames = implode(',',$categnames);

$row->EventName = htmlspecialchars( $row->EventName, ENT_COMPAT, 'UTF-8');
$eventlink = html_entity_decode(JRoute::_('index.php?option=com_rsevents&view=events&layout=show&cid='.$row->IdEvent.$itemId));
$locationlink = html_entity_decode(JRoute::_('index.php?option=com_rsevents&view=locations&layout=show&cid='.$row->IdLocation.'&IdEvent='.$row->IdEvent.$itemId));
$row->EventName = '<a target="_blank" href="'.$eventlink.'">'.$row->EventName.'</a>';
$row->CategoryName = $categnames;
$row->LocationName = '<a target="_blank" href="'.$locationlink.'">'.$row->LocationName.'</a>';
$row->EventStartDate = rseventsHelper::translateDate(date($dateFormat,$row->EventStartDate));
$row->EventEndDate   = rseventsHelper::translateDate(date($dateFormat,$row->EventEndDate));

$bad  = array('{EventName}','{EventLocation}','{EventCategory}','{EventStartDate}','{EventEndDate}','{EventIcon}');
$good = array($row->EventName , $row->LocationName , $row->CategoryName , $row->EventStartDate , $row->EventEndDate, $eventIcon);

$layout = str_replace($bad,$good,$layout);

$lists[$i]->layout = $layout;

$i++;
}


return $lists;


}
}
*

icom

  • Давно я тут
  • 830
  • 202 / 4
так же само и тут, только переменную поменять
if (!isset($eventLink)) {
   $eventLink = '';
}
*

caitleen

  • Захожу иногда
  • 84
  • 4 / 1
спасибо, ставлю вам +
*

dobrunov

  • Захожу иногда
  • 64
  • 0 / 1
if (!isset($links)) {
   $links = '';
}

нужно вставить перед

$lists[$i]->img = $links;
если не сложно можете разложить по полочкам что перед чем надо вставить у меня я так понимаю таже проблема.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Undefined index: catid

Автор Elimelech

Ответов: 0
Просмотров: 1406
Последний ответ 30.12.2016, 14:40:18
от Elimelech
PHP Notice: Undefined variable: sub_main_suffix in

Автор Elimelech

Ответов: 16
Просмотров: 1418
Последний ответ 23.12.2016, 12:29:37
от dmitry_stas
Undefined variable, прошу помощи, важный проект!

Автор Elimelech

Ответов: 15
Просмотров: 1618
Последний ответ 22.12.2016, 12:42:23
от Elimelech
Попытка взлома сайта или что? - libraries/joomla/session/session.php on line 343

Автор Elimelech

Ответов: 35
Просмотров: 4603
Последний ответ 19.12.2016, 09:40:34
от vipiusss
Проблема со входом в админку Fatal error: Call to undefined method stdClass::onAuthenticate()

Автор DykaX

Ответов: 11
Просмотров: 8344
Последний ответ 15.05.2015, 09:50:59
от Loria1979