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

El_nik

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Прошу помощи.
Роутер вроди работает, и делает красивые ссылки но только при условии что в заголовке объявления есть латиница.

что бы было понятно если встречается в заголовке латиница.

Гостиница NURSAUDA то ссылка http://www.mysite.ru/board/139--/1251--nursauda.html


если заголовок Гостиничный комплекс то ссылка http://www.mysite.ru/board/139--/1252---.html

в общем роутер каким то образом вырезает все кирилические знаки из URL.
Как можно сделать что бы он преобразовывал в транслит

сам роутер
Код
<?php
/**
 * @package AdsManager
 * @copyright Copyright (C) 2010-2011 JoomPROD.com. All rights reserved.
 * @license GNU/GPL
 */

jimport( 'joomla.filter.output' );


function getAdsmanagerRouteCategory($id)
{
$db = &JFactory::getDBO();
$sql = "SELECT name FROM #__adsmanager_categories WHERE id = ".(int)$id;
$db->setQuery($sql);
$result = str_replace(array(" ",":","/"),array("-","-","-"),$db->loadResult());
$result= JFilterOutput::stringURLSafe($result);
$result = substr($result,0,30);
return $result;
}

function getAdsmanagerRouteContent($id)
{
$db = &JFactory::getDBO();
$sql = "SELECT ad_headline FROM #__adsmanager_ads WHERE id = ".(int)$id;
$db->setQuery($sql);
$result = str_replace(array(" ",":","/"),array("-","-","-"),$db->loadResult());
$result= JFilterOutput::stringURLSafe($result);
$result = substr($result,0,30);
return $result;
}

function getAdsmanagerUser($userid)
{
$db = &JFactory::getDBO();
$sql = "SELECT username FROM #__users WHERE id = ".(int)$userid;
$db->setQuery($sql);
$result = str_replace(array(" ",":","/"),array("-","-","-"),$db->loadResult());
$result= JFilterOutput::stringURLSafe($result);
$result = substr($result,0,30);
return $result;
}


function AdsmanagerBuildRoute(&$query)
{
$segments = array();

if (!isset($query['task']))
$t = "";
else
$t = $query['task'];

switch($t)
{
case "display":
case "":
if (!isset($query['view']))
$v = "";
else
$v = $query['view'];
switch($v)
{
case "details":
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
$segments[] = $query["id"]."-".getAdsmanagerRouteContent($query["id"]);
unset($query["id"]);
unset($query["catid"]);
unset($query["task"]);
unset($query["view"]);
break;
case "expiration":
$segments[] = $query["id"]."-".getAdsmanagerRouteContent($query["id"]);
$segments[] = JText::_('ADSMANAGER_SEF_EXPIRATION');
unset($query["id"]);
unset($query["task"]);
unset($query["view"]);
break;
case "front":
unset($query["task"]);
unset($query["view"]);
break;
case "list":
if (isset($query["catid"])&&($query["catid"] != 0)) {
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
}
else if (isset($query["user"])&&($query["user"] != 0)) {
$segments[] = JText::_('ADSMANAGER_SEF_USER');
$segments[] = $query["user"]."-".getAdsmanagerUser($query["user"]);
}
else if (isset($query["user"])) {
$segments[] = JText::_('ADSMANAGER_SEF_USER');
}
else {
$segments[] = JText::_('ADSMANAGER_SEF_ALL_ADS');
}
unset($query["user"]);
unset($query["catid"]);
unset($query["task"]);
unset($query["view"]);
break;
case "login":
$segments[] = JText::_('ADSMANAGER_SEF_LOGIN');
unset($query["task"]);
unset($query["view"]);
break;
case "message":
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
$segments[] = $query["contentid"]."-".getAdsmanagerRouteContent($query["contentid"]);
$segments[] = JText::_('ADSMANAGER_SEF_CONTACT');
unset($query["contentid"]);
unset($query["catid"]);
unset($query["task"]);
unset($query["view"]);
break;
case "profile":
$segments[] = JText::_('ADSMANAGER_SEF_PROFILE');
unset($query["task"]);
unset($query["view"]);
break;
case "result":
$segments[] = JText::_('ADSMANAGER_SEF_RESULT');
unset($query["task"]);
unset($query["view"]);
break;
case "rules":
$segments[] = JText::_('ADSMANAGER_SEF_RULES');
unset($query["task"]);
unset($query["view"]);
break;
case "search":
if (isset($query["catid"])&&($query["catid"] != 0)) {
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
}
$segments[] = JText::_('ADSMANAGER_SEF_SEARCH');
unset($query["task"]);
unset($query["view"]);
unset($query["catid"]);
break;
}
break;
case "write":
if (isset($query["id"])&&($query["id"] != 0))
{
if (!isset($query["catid"]))
$query["catid"] = 0;
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
$segments[] = $query["id"]."-".getAdsmanagerRouteContent($query["id"]);
$segments[] = JText::_('ADSMANAGER_SEF_EDIT');
}
else
{
if (isset($query["catid"])) {
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
}
$segments[] = JText::_('ADSMANAGER_SEF_WRITE');
}

unset($query["id"]);
unset($query["catid"]);
unset($query["task"]);
unset($query["view"]);
break;
break;
case "delete":
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
$segments[] = $query["id"]."-".getAdsmanagerRouteContent($query["id"]);
$segments[] = JText::_('ADSMANAGER_SEF_DELETE');
unset($query["id"]);
unset($query["catid"]);
unset($query["task"]);
unset($query["view"]);
break;
break;
case "save":

break;
case "saveprofile":

break;
case "sendmessage":

break;
case "renew":

break;
}

//unset($query["task"]);
//unset($query["view"]);

return $segments;
}

function AdsmanagerParseRoute($segments)
{
$vars = array();

$lang = JFactory::getLanguage();
$lang->load("com_adsmanager");

//Get the active menu item
$menu =& JSite::getMenu();
$item =& $menu->getActive();

$nbsegments = count($segments);

if (in_array(JText::_('ADSMANAGER_SEF_RESULT'),$segments))
{
$vars["view"] = "result";
}
else if (in_array(JText::_('ADSMANAGER_SEF_SEARCH'),$segments))
{
$vars["view"] = "search";
$catid = explode( ':', $segments[0] );
    $vars['catid'] = (int) $catid[0];
    $vars['task'] = "display";
}
else if (in_array(JText::_('ADSMANAGER_SEF_EDIT'),$segments))
{
$vars["view"] = "edit";
$catid = explode( ':', $segments[0] );
    $vars['catid'] = (int) $catid[0];
    $id = explode( ':', $segments[1] );
    $vars['id'] = (int) $id[0];
    $vars['task'] = "write";
}
else if (in_array(JText::_('ADSMANAGER_SEF_WRITE'),$segments))
{
$vars["view"] = "edit";
    $vars['task'] = "write";
    $catid = explode( ':', $segments[0] );
    $vars['catid'] = (int) $catid[0];
}
else if (in_array(JText::_('ADSMANAGER_SEF_DELETE'),$segments))
{
$vars["view"] = "edit";
$catid = explode( ':', $segments[0] );
    $vars['catid'] = (int) $catid[0];
    $id = explode( ':', $segments[1] );
    $vars['id'] = (int) $id[0];
    $vars['task'] = "delete";
}
else if (in_array(JText::_('ADSMANAGER_SEF_EXPIRATION'),$segments))
{
$vars["view"] = "expiration";
    $id = explode( ':', $segments[0] );
    $vars['id'] = (int) $id[0];
    $vars['task'] = "display";

}
else if (in_array(JText::_('ADSMANAGER_SEF_RULES'),$segments))
{
$vars["view"] = "rules";
}
else if (in_array(JText::_('ADSMANAGER_SEF_PROFILE'),$segments))
{
$vars["view"] = "profile";
}
else if (in_array(JText::_('ADSMANAGER_SEF_ALL_ADS'),$segments))
{
$vars["view"] = "list";
}
else if (in_array(JText::_('ADSMANAGER_SEF_LOGIN'),$segments))
{
$vars["view"] = "login";
}
else if (in_array(JText::_('ADSMANAGER_SEF_CONTACT'),$segments))
{
$vars["view"] = "message";
$catid = explode( ':', $segments[0] );
    $vars['catid'] = (int) $catid[0];
    $id = explode( ':', $segments[1] );
    $vars['contentid'] = (int) $id[0];
    $vars['task'] = "display";
}
else if (in_array(JText::_('ADSMANAGER_SEF_USER'),$segments))
{
$userid = explode( ':', $segments[1] );
$vars['user'] = (int) $userid[0];
$vars['task'] = "display";
$vars['view'] = "list";
}
else
{
if ($nbsegments == 2)
{
$catid = explode( ':', $segments[0] );
    $vars['catid'] = (int) $catid[0];
    $id = explode( ':', $segments[1] );
    $vars['id'] = (int) $id[0];
    $vars["view"] = "details";
}
else
{
$catid = explode( ':', $segments[0] );
    $vars['catid'] = (int) $catid[0];
    $vars["view"] = "list";
}
$vars['task'] = "display";
}

return $vars;
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено]Дублирования ссылки "объвления" в breadcrumb, в компоненте AdsManager

Автор nicklas

Ответов: 4
Просмотров: 3992
Последний ответ 25.04.2024, 23:13:18
от Rinat abzyi
AdsManager вывод нужных полей по отдельности

Автор klekovkinandrey

Ответов: 2
Просмотров: 14518
Последний ответ 06.04.2024, 09:54:15
от Rinat abzyi
AdsManager загрузка файлов

Автор FlexNL

Ответов: 1
Просмотров: 3247
Последний ответ 21.10.2021, 17:20:09
от khan-alex
AdsManager 2.9.13 Есть ли возможность добавить функцию снять с публикации по мимо редактировать и уд

Автор murovoz

Ответов: 11
Просмотров: 13632
Последний ответ 27.03.2020, 22:39:23
от Pavel
Два компонента AdsManager в одном движке

Автор kaman62

Ответов: 12
Просмотров: 28865
Последний ответ 27.03.2020, 22:32:04
от Pavel