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

Светлана

  • Захожу иногда
  • 99
  • 7 / 0
Модуль mod_topauthors
« : 11.03.2010, 13:12:24 »
Модуль mod_topauthors выводит авторов сайта, сколько их читают, сколько публикаций и сколько их комментируют. Нужно во втором поле свободном вывести аватар автора, он выводится из таблицы jos_community_users компонента JomSocial из поля thumb, там хранится путь к картинке. В файле mod_topauthors.php нужно сделать запрос к таблице, помогите пож никогда не работала с БД
*

Светлана

  • Захожу иногда
  • 99
  • 7 / 0
Re: Модуль mod_topauthors
« Ответ #1 : 11.03.2010, 13:15:46 »
Вот код файла mod_topauthors.php
Код
<?php
/*
* Top Authors Module 2.0.2
* @ Copyright (C) 2006 - Ryan Rhode http://www.ty2u.com
* @ All rights reserved
* @ Joomla is Free Software
* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
*/
defined('_VALID_MOS') or die('Direct Access to this location is not allowed.');

$numauthors = $params->def('numauth',10);
$displayname = $params->def('displayname','name');
$sortby = $params->def('sortby','articles');
$order = $params->def('order','DESC');
$articletext = $params->def('articletext','Articles');
$hideempty = $params->def('hideempty','hide');
$class_sfx = $params->get('class_sfx');

$num = 50;
$pages = $_GET['pages'];
$pages=htmlspecialchars(stripslashes($pages));
if(empty($pages) or $pages < 0) {$pages = 1; }

if ($numauthors > 0) {

$query = "SELECT *"
. "\n FROM #__users"
. "\n WHERE block = '0' AND usertype<>'Registered'";

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

$i = 0;
$noarticles = 0;

foreach($rows as $row){

if ($i==$numauthors+$noarticles) break;

if($displayname == "name") {
$users[$i]['displayname'] = $row->name;
} else {
$users[$i]['displayname'] = $row->username;
}

$query = "SELECT *"
. "\n FROM #__content"
. "\n WHERE state = '1'"
. "\n AND sectionid <> '0'"
. "\n AND created_by = ". $row->id
. "\n AND LOCATE('show_author=0',attribs)=0";

$database->setQuery($query);
$articles = $database->query();
$art_count=$database->getNumRows($articles);
$users[$i]['articles'] = $art_count;

$art=$database->loadResultArray();

$comments_sum=0;
for ($j=0;$j<$art_count;$j++)
{

$query = "SELECT COUNT(*)"
. "\n FROM #__jcomments"
. "\n WHERE object_id=".$art[$j];

$database->setQuery($query);
$comments = $database->loadResult();
$comments_sum+=$comments;
}

$users[$i]['comments'] = $comments_sum;

$query = "SELECT SUM(hits)"
. "\n FROM #__content"
. "\n WHERE state = '1'"
. "\n AND sectionid <> '0'"
. "\n AND created_by = ". $row->id
. "\n AND LOCATE('show_author=0',attribs)=0";

$database->setQuery($query);
$hits = $database->loadResult();

$users[$i]['hits'] = $hits;


/* if ($userlist[$i]['articles'] == 0 && $hideempty=="hide") $noarticles++;*/

$i++;

  }

$userlist = sortdata($users, $sortby, $order);

$posts=count($userlist);

$total = intval(($posts - 1) / $num) + 1;
$pages = intval($pages); 
if($pages > $total) {$pages = $total; }
$start = $pages * $num - $num+1;
$finish=$start+$num-1;
//echo $start;exit;

echo "</br><div class=\"topauthors". $class_sfx ."\">
<table style='border:1px solid #cccccc;white-space: nowrap;'>
<tr><th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>#</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>&nbsp;</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>Автор</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;'>Меня<br>читают</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>Мои<br>публикации</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>Меня<br>комментируют</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>&nbsp;</th></tr>
";

$y = 0;
$shown = 0;
$num = 1;

foreach ($users as $user) {
if ($userlist[$y]['displayname'] == "NewsGrabberJC.Pro") {$y++;continue;}
if ($userlist[$y]['displayname'] == "admin") {$y++;continue;}
if ($userlist[$y]['displayname'] == "ipjack") {$y++;continue;}
if (($num<$start) || ($num>$finish)) {$y++;$num++;continue;}
if ($hideempty == "hide" && $userlist[$y]['articles'] > 0) {

echo "<tr><td style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$num."</td>
<td align='left' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td>
<td align='left' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['displayname']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['hits']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['articles']." ".$articletext."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['comments']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td></tr>";

$shown++;
if ($shown==$numauthors) break;

} elseif ($hideempty == "show" ) {

echo "<tr><td style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$num."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td>
<td align='left' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['displayname']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['hits']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['articles']." ".$articletext."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['comments']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td></tr>";

$shown++;
if ($shown==$numauthors) break;
}

$y++;
$num++;
}

echo "</table></div>";
echo "<br/>";

$component="authors";
if ($pages != 1) { $pervpage = "<a href=/$component?pages=1><<</a> 
                               <a href=/authors?pages=". ($pages - 1)."><</a> "; }

if ($pages != $total){ $nextpage = " <a href=/$component?pages=".($pages + 1).">></a>
                                   <a href=/$component?pages=".$total.">>></a>"; }
                                   
if($pages - 2 > 0){ $page2left = "<a href=/$component?pages=".($pages - 2).">". ($pages - 2)."</a> | "; }
if($pages - 1 > 0){ $page1left = "<a href=/$component?pages=". ($pages - 1).">". ($pages - 1)."</a> | "; }
if($pages + 2 <= $total){ $page2right = " | <a href=/$component?pages=". ($pages + 2).">". ($pages + 2)."</a>"; }
if($pages + 1 <= $total){ $page1right = " | <a href=/$component?pages=". ($pages + 1).">". ($pages + 1)."</a>";}

echo $pervpage.$page2left.$page1left."<b>".$pages."</b>".$page1right.$page2right.$nextpage; 


}

function sortdata($array, $by, $order){

foreach ($array as $key => $row) {
   $displayname[$key]  = $row['displayname'];
   $articles[$key] = $row['hits'];
}

$displayname_lowercase = array_map('strtolower', $displayname);

if ($by == "author") {

if ($order == "DESC") {
array_multisort($displayname_lowercase, SORT_DESC, SORT_STRING, $array);
} elseif ($order == "ASC"){
array_multisort($displayname_lowercase, SORT_ASC, SORT_STRING, $array);
}

} elseif ($by == "articles") {

if ($order == "DESC"){
array_multisort($articles, SORT_DESC, SORT_NUMERIC, $array);
} elseif ($order == "ASC"){
array_multisort($articles, SORT_ASC, SORT_NUMERIC, $array);
}

}

return $array;
}
?>

А это код файла mod_topauthors.xml
Код
<?xml version="1.0" ?>
<mosinstall type="module">
<name>Top Authors</name>
<creationDate>2 June 2006</creationDate>
<author>Ryan Rhode</author>
<copyright>This module is released under the GNU/GPL License.</copyright>
<authorEmail>admin@ty2u.com</authorEmail>
<authorUrl>http://www.ty2u.com</authorUrl>
<version>2.0.2</version>
<description>
<![CDATA[
<p>This module displays how many articles users have posted.  You can choose how many authors to display and choose to display their real name or their username.</p>
<p>New Features Added in 2.0!</p>
<p>Now you can also choose to sort by the author name, or the number articles they have published.  You can choose to sort the list in ascending or descending order.  You also can change the "Articles" text which shows.  There is the ability to set a class suffix and choose whether to show users who have no articles published.</p>
<p>Changelog:</p>
<p>2.0.2 - Added "Enable Cache" parameter.</p>
<p>2.0.1 - Fixed bug where it wouldn't show number of authors properly when some had no articles.</p>
<p>2.0 - Added many new features and rewrote the whole thing.</p>
<p>Visit <a href="http://www.ty2u.com/" target="_blank">TY2U.com</a> for more Joomla related downloads.</p>
]]>
</description>

<files>
<filename module="mod_topauthors">mod_topauthors.php</filename>
</files>
<params>
<param name="cache" type="radio" default="0" label="Enable Cache" description="Select whether to cache the content of this module">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
<param name="class_sfx" type="text" default="" label="Div Class Suffix" description="A suffix to be applied to the CSS class of the div tag (div.topauthors), this allows individual module styling" />
<param name="numauth" type="text" default="10" label="Number to show" description="How many authors to show." />
<param name="displayname" type="list" default="name" label="Display username or real name" description="Whether to display the Joomla username or if they entered their real name when registering you can display this.">
<option value="username">Username</option>
<option value="name">Real Name</option>
</param>
<param name="articletext" type="text" default="Articles" label="Article text" description="The text that comes after the number of articles." />
<param name="sortby" type="list" default="articles" label="Sort by" description="What to sort the list by.">
<option value="articles">Articles</option>
<option value="author">Author</option>
</param>
<param name="order" type="list" default="DESC" label="Sort order" description="The order in which to sort the list.">
<option value="ASC">Ascending</option>
<option value="DESC">Descending</option>
</param>
<param name="hideempty" type="list" default="true" label="Users with 0 articles" description="Whether to show or hide users who have no articles published.">
<option value="hide">Hide</option>
<option value="show">Show</option>
</param>
</params>
<images>
</images>
</mosinstall>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль расширенных результатов ARI Quiz Results

Автор Beer

Ответов: 0
Просмотров: 1346
Последний ответ 03.02.2025, 15:27:35
от Beer
Модуль для отображения курсов валют

Автор Геон

Ответов: 2
Просмотров: 2691
Последний ответ 03.02.2024, 22:19:02
от Геон
Модуль «Image Show gk4», не отображается ни картинка, ни текст

Автор kaasin

Ответов: 1
Просмотров: 3949
Последний ответ 13.05.2023, 15:42:15
от anastasya96
Стандартный модуль случайного изображения не выводит фотографии

Автор strix

Ответов: 8
Просмотров: 8645
Последний ответ 19.10.2022, 16:07:11
от Andrej_777
Модуль тегов Joes Word Cloud для Joomla 3

Автор ecolora

Ответов: 1
Просмотров: 3147
Последний ответ 05.05.2022, 19:04:44
от ecolora