Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 4082 Просмотров
*

danko

  • Осваиваюсь на форуме
  • 23
  • 1 / 1
Я исправил баг, в частности, если
создать Модуль - Случайное изображение и в параметрах - поле ширина оставить пустым, а поле высоту заполнить каким либо значением, то картинка всегда будет шириной 100px, независимо от того что вы хотите.

Необходимо в файле:

modules/mod_random_image/helper.php

заменить старый код вот этот:

Код
if ($width == '') {
$width = 100;
}

if ($size[0] < $width) {
$width = $size[0];
}

$coeff = $size[0]/$size[1];
if ($height == '') {
$height = (int) ($width/$coeff);
} else {
$newheight = min ($height, (int) ($width/$coeff));
if ($newheight < $height) {
$height = $newheight;
} else {
$width = $height * $coeff;
}
}

на вот этот переписаный и понятный, который учитывает все комбинации:

Код
$coeff = $size[0] / $size[1];
if (($width == '') && ($height == ''))
{
$width = 100;
if ($size[0] < $width) { $width = $size[0]; }
$height = (int)($width / $coeff);
}
elseif (($width != '') && ($height == ''))
{
if ($size[0] < $width) { $width = $size[0]; }
$height = (int)($width / $coeff);
}
elseif (($width == '') && ($height != ''))
{
if ($size[1] < $height) { $height = $size[1]; }
$width = (int)($height * $coeff);
}
elseif (($width != '') && ($height != ''))
{
if ($size[0] < $width) { $width = $size[0]; }
$height = (int)($width / $coeff);
}

Код оформлен как это положено для языка С++, к примеру, потому как это более читабельный вид.
И то, есть тонкости. Но считаю что это уже лишнее. Это когда например изображение маленькое и сопоставимо с установленными в параметрах размерами, тогда надо по хорошему проверять высоту и ширину, сравнивать это. Но так как это редкий случай и у разработчика вообще таких вещей не предусмотрено, поэтому я тоже не стал делать. считается, что изображение намного больше 100пкс.
« Последнее редактирование: 19.10.2012, 15:26:09 от danko »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Создайте соответствующую запись на баг-треккере Joomla: Joomla! CMS Issue Tracker. Опишите суть проблемы, что было изменено, как протестировать ошибку и как проверить корректную работу после изменений. И приложите к записи патч к файлу модуля (diff-файл). Наличие diff-файла может существенно ускорить процесс утверждения исправления (cделать diff очень просто - можно с помощью сторонних утиллит типа WinMerge, можно с помощью SVN-клиентов типа TortoiseSVN - сделать Checkout исходников в некую папку, исправить в ней модуль, а затем из контекстного меню выбрать пункт TortoiseSVN -> Create patch).

По факту добавления записи на треккере - укажите здесь на нее ссылку, я попрошу одного из разработчиков обратить на нее внимание.

p.s. стиль форматирования кода PHP и в частности в Joomla несколько отличается от C++, в частности открывающие фигурные скобки на отдельную строку не выносятся, условные блоки в линию не пишутся. И еще, поля, лучше проверять не сравнением с пустой строкой, а функцией empty, так как нулевые значения ширины и высоты тоже неприемлемы.
« Последнее редактирование: 19.10.2012, 18:31:47 от smart »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как редактировать отдельную страницу Joomla 2.5?

Автор mrporter

Ответов: 0
Просмотров: 13971
Последний ответ 14.09.2023, 22:16:47
от mrporter
Joomla 2.5.28, Safari под маком и сессии session

Автор beliyadm

Ответов: 19
Просмотров: 16726
Последний ответ 29.03.2023, 12:17:19
от Sawell
Joomla 2.5.28 как скачать все файлы через панель управления

Автор Sergei41984

Ответов: 7
Просмотров: 14477
Последний ответ 27.12.2022, 23:30:38
от Sergei41984
Расширения для Joomla! 1.6 (коллекция полезных ссылок)

Автор Sulpher

Ответов: 124
Просмотров: 145160
Последний ответ 03.12.2022, 16:15:19
от besttechoff
Почему в админке Joomla 2.58 - у меня 16 админов показывает?

Автор dyalex

Ответов: 7
Просмотров: 15355
Последний ответ 27.10.2022, 19:03:45
от marksetter