Новости Joomla

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

7 января 2026 года греческому разработчику Тассосу Мариносу сообщили об уязвимости в системном плагине Tassos Framework, который входит в состав его расширений для Joomla.

⚠️ Проблема затрагивает следующие расширения:
- Convert Forms - конструктор форм обратной связи для Joomla
- EngageBox - конструктор всплывающих окон для Joomla
- Google Structured Data - пакет плагинов микроразметки для Joomla
- Advanced Custom Fields - пакет плагинов пользовательских полей (видео-сервисы, карты и иже с ними)
- Smile Pack - пакет расширений
- MailChimp Auto-Subscribe

Незамедлительно была проведена полная внутренняя проверка кода, внедрены дополнительные меры проверки и повышения безопасности, а также выпущены исправленные версии всех затронутых расширений. Проблема полностью решена.

👉 Суть уязвимости.
Уязвимость заключалась в том, как плагин Tassos Framework обрабатывал определенные AJAX-запросы через com_ajaxточку входа Joomla. При определенных условиях внутренняя функциональность фреймворка могла быть вызвана без надлежащих ограничений.

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

При определенных обстоятельствах запросы к базе данных могли быть изменены для извлечения данных из базы данных Joomla. В совокупности эти возможности потенциально могли быть использованы для повышения уровня доступа и выполнения несанкционированного кода.

В настоящее время нет никаких доказательств того, что эта уязвимость была использована в реальных условиях.

Немедленно обновите расширения до безопасных версий (Joomla 4/5/6 | Joomla 3):
- Convert Forms - v5.1.1 / v.4.1.1
- EngageBox - v.7.1.1 / v,6,3,9
- Google Structured Data - v.6.1.1 / v.5.6.9
- Advanced Custom Fields - v.3.1.1 / v.2.8.10
- Smile Pack - v.2.1.1 / v.1.2.4.
- MailChimp Auto-Subscribe - v.5.1.1+ / v.5.0.4

Все указанные версии включают в себя релиз безопасности плагина Tassos Framework System Plugin v6.0.62.

Если у вас установлено несколько расширений Tassos, достаточно обновить только одно, чтобы применить патч. Однако всегда рекомендуется обновлять все расширения.

@joomlafeed

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

Google Summer of Code (GSoC) - программа компании Google, которая позволяет участникам программы под руководством опытных наставников писать код для организаций, занимающейся открытым исходным кодом. Joomla принимает участие в этой программе не в первый раз и в 2026 году снова включена в список GSoC. Для программы утверждается список "идей", воплотить которые должны участники под руководством наставников.

Проекты Joomla в рамках программы GSoC 2026.

Проект I: Ajax-бэкенд.
- Действия в административной панели без необходимости обновлять страницу.
- Автоматическое сохранение содержимого во время редактирования.
- Расширенный фильтр - поиск и фильтрация по пользовательским полям.

Проект II: Автоматизация рабочих процессов (workflow + task scheduler).
Joomla имеет функцию процессов и планировщика задач. Теперь эти две функции следует объединить, чтобы пользователь мог настраивать назначенные рабочие процессы таким образом, чтобы переходы выполнялись автоматически, с возможностью точного определения времени. Должна быть возможность создавать циклы или прямые запланированные рабочие процессы. Предполагается, что интерфейс должен учитывать хороший пользовательский опыт, удобство использования и современные стандарты доступности. Ожидается, что будет добавлен интерфейс для управления процессами и их расписанием на страницах категорий и материалов. Так же ожидается, что сторонние компоненты также смогут воспользоваться этим функционалом.

Проект III: Мультикатегории.
В настоящее время Joomla! не позволяет назначать один элемент нескольким категориям. Хотя система тегов часто используется в качестве замены, существует острая потребность в нативной поддержке нескольких категорий, чтобы привести Joomla! в соответствие с другими современными системами управления контентом.

Проект IV: Обучение с подкреплением на основе отзывов переводчиков.
Joomla собирается использовать автоматический перевод документации. В каждом языке есть свои специфические слова, характерные для Joomla. Предполагается обучать языковые модели, используя обратную связь от переводчиков, чтобы постоянно улучшать качество переводов и учитывать специфические языковые особенности Joomla.

Принять участие GSoC 2026
Подробнее о проектах Joomla GSoC 2026
Чат GSoC в Mattermost (международное сообщество Joomla)

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

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

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Всем привет. Как удалить пункт меню "Помощь" из административной панели Joomla ( 1.5.14)?
Заранее спасибо за советы!
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Удаление пункта меню из админки
« Ответ #1 : 21.04.2010, 17:23:54 »
Открой файл /administrator/modules/mod_menu/helper.php и закомментируй/удали строки:

Код: php
		/*
* Help SubMenu
*/
$menu->addChild(new JMenuNode(JText::_('Help')), true);
$menu->addChild(new JMenuNode(JText::_('Joomla! Help'), 'index.php?option=com_admin&task=help', 'class:help'));
$menu->addChild(new JMenuNode(JText::_('System Info'), 'index.php?option=com_admin&task=sysinfo', 'class:info'));
и
Код: php
		// Help SubMenu
$menu->addChild(new JMenuNode(JText::_('Help'),  null, 'disabled'));

*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Re: Удаление пункта меню из админки
« Ответ #2 : 21.04.2010, 17:24:52 »
Большое тебе спасибо!
+
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

MaxTishenko

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Удаление пункта меню из админки
« Ответ #3 : 24.06.2011, 02:43:08 »
Fatal error: Call to a member function hasChildren() on a non-object in C:\home\1.loc\www\administrator\modules\mod_menu\menu.php on line 55

menu.php

<?php
/**
 * @version      $Id: menu.php 14401 2010-01-26 14:10:00Z louis $
 * @package      Joomla
 * @copyright   Copyright (C) 2005 - 2010 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.
 */

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );

jimport('joomla.base.tree');

class JAdminCSSMenu extends JTree
{
   /**
    * CSS string to add to document head
    * @var string
    */
   var $_css = null;

   function __construct()
   {
      $this->_root = new JMenuNode('ROOT');
      $this->_current = & $this->_root;
   }

   function addSeparator()
   {
      $this->addChild(new JMenuNode(null, null, 'separator', false));
   }

   function renderMenu($id = 'menu', $class = '')
   {
      global $mainframe;

      $depth = 1;

      if(!empty($id)) {
         $id='id="'.$id.'"';
      }

      if(!empty($class)) {
         $class='class="'.$class.'"';
      }

      /*
       * Recurse through children if they exist
       */
      //Строка 55
while ($this->_current->hasChildren())
      {
         echo "<ul ".$id." ".$class.">\n";
         foreach ($this->_current->getChildren() as $child)
         {
            $this->_current = & $child;
            $this->renderLevel($depth++);
         }
         echo "</ul>\n";
      }

      if ($this->_css) {
         // Add style to document head
         $doc = & JFactory::getDocument();
         $doc->addStyleDeclaration($this->_css);
      }
   }

   function renderLevel($depth)
   {
      /*
       * Build the CSS class suffix
       */
      $class = '';
      if ($this->_current->hasChildren()) {
         $class = ' class="node"';
      }

      if($this->_current->class == 'separator') {
         $class = ' class="separator"';
      }

      if($this->_current->class == 'disabled') {
         $class = ' class="disabled"';
      }


      /*
       * Print the item
       */
      echo "<li".$class.">";

      /*
       * Print a link if it exists
       */
      if ($this->_current->link != null) {
         echo "<a class=\"".$this->getIconClass($this->_current->class)."\" href=\"".$this->_current->link."\">".$this->_current->title."</a>";
      } elseif ($this->_current->title != null) {
         echo "<a>".$this->_current->title."</a>\n";
      } else {
         echo "<span></span>";
      }

      /*
       * Recurse through children if they exist
       */
      while ($this->_current->hasChildren())
      {
         if ($this->_current->class) {
            echo '<ul id="menu-'.strtolower($this->_current->id).'"'.
               ' class="menu-component">'."\n";
         } else {
            echo '<ul>'."\n";
         }
         foreach ($this->_current->getChildren() as $child)
         {
            $this->_current = & $child;
            $this->renderLevel($depth++);
         }
         echo "</ul>\n";
      }
      echo "</li>\n";
   }

   /**
    * Method to get the CSS class name for an icon identifier or create one if
    * a custom image path is passed as the identifier
    *
    * @access   public
    * @param   string   $identifier   Icon identification string
    * @return   string   CSS class name
    * @since   1.5
    */
   function getIconClass($identifier)
   {
      global $mainframe;

      static $classes;

      // Initialize the known classes array if it does not exist
      if (!is_array($classes)) {
         $classes = array();
      }

      /*
       * If we don't already know about the class... build it and mark it
       * known so we don't have to build it again
       */
      if (!isset($classes[$identifier])) {
         if (substr($identifier, 0, 6) == 'class:') {
            // We were passed a class name
            $class = substr($identifier, 6);
            $classes[$identifier] = "icon-16-$class";
         } else {
            // We were passed an image path... is it a themeoffice one?
            if (substr($identifier, 0, 15) == 'js/ThemeOffice/') {
               // Strip the filename without extension and use that for the classname
               $class = preg_replace('#\.[^.]*$#', '', basename($identifier));
               $classes[$identifier] = "icon-16-$class";
            } else {
               if ($identifier == null) {
                  return null;
               }
               // Build the CSS class for the icon
               $class = preg_replace('#\.[^.]*$#', '', basename($identifier));
               $class = preg_replace( '#\.\.[^A-Za-z0-9\.\_\- ]#', '', $class);

               $this->_css  .= "\n.icon-16-$class {\n" .
                     "\tbackground: url($identifier) no-repeat;\n" .
                     "}\n";

               $classes[$identifier] = "icon-16-$class";
            }
         }
      }
      return $classes[$identifier];
   }
}

class JMenuNode extends JNode
{
   /**
    * Node Title
    */
   var $title = null;

   /**
    * Node Id
    */
   var $id = null;


   /**
    * Node Link
    */
   var $link = null;

   /**
    * CSS Class for node
    */
   var $class = null;

   /**
    * Active Node?
    */
   var $active = false;


   function __construct($title, $link = null, $class = null, $active = false)
   {
      $this->title   = $title;
      $this->link      = JFilterOutput::ampReplace($link);
      $this->class   = $class;
      $this->active   = $active;
      $this->id      = str_replace(" ","-",$title);

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

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 9318
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 4283
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 5947
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 24633
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 4664
Последний ответ 01.03.2019, 11:12:18
от vasmed