Новости Joomla

Joomla 6: Автоматические обновления ядра в Joomla

Joomla 6: Автоматические обновления ядра в Joomla

👩‍💻 Joomla 6: Автоматические обновления ядра в Joomla. В октябрьском номере официального журнала Joomla - Joomla Community Magazine вышла статья David Jardin, где рассказывается о внедрении функционала автоматического обновления ядра Joomla.❓Почему сейчас? Joomla же жила как-то 20 лет без автоматических обновлений?Это оказалась самая востребованная за последнее время от пользователей Joomla функция. Но, основная причина внедрения - проблемы безопасности. Всякий раз, когда в новой версии Joomla устраняется уязвимость, злоумышленники начинают анализировать код, чтобы выяснить, какая именно уязвимость была исправлена. И как только они это выясняют - начинается разработка автоматизированных скриптов для взлома как можно большего количества сайтов. Затем доступы к автоматически взломанным сайтам продаются в профильных чатах и ресурсах "пачками" по несколько сотен тысяч или миллионов сайтов. Ваш сайт могли взломать несколько лет назад, но воспользоваться уязвимостью могут не сразу, а тогда, когда у злоумышленников возникнет необходимость. И только после этого вы может быть узнаете об этом.Анализ патча, понимание проблемы и разработка скрипта требуют времени. И если владелец сайта не обновит его до истечения этого срока, сайт может быть взломан. А хакеры действуют быстро! Для критических, легко эксплуатируемых уязвимостей речь идёт о временном окне в 10–12 часов — и этого времени явно недостаточно, чтобы все успели обновить свои сайты.Здесь выходят на первый план автоматизированные обновления: проект Joomla теперь может активно устанавливать обновления (и, следовательно, исправления безопасности) на сайты, чтобы гарантировать, что сайты действительно обновляются вовремя.🕘 От первых идей до реализации прошло 5 лет. И здесь можно вспомнить, как в Joomla 5.1 внедрили TUF - The Update Framework, позволяющий устанавливать защищённое соединение между сайтом и сервером обновлений и исключает возможность supply chain attack (атаки на цепочку поставок).Об особенностях реализации и требованиях к сайту читаем подробнее в статье на JCM.@joomlafeed#joomla #secutiry #jcm

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

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

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Моя версия Joomshoping 3.3.2. У меня нет папки List_products, но почти все работает.

Такой вот вопрос - была проблема с показом Id и названий в категории товаров. Сделал так -
В файле \administrator\components\com_jshopping\controllers\products.php
Код
                else if ($v->type==2){
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'id', 'name', $product->$name);
                }
Заменить на
Код
                else if ($v->type==2){
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'name', 'name', $product->$name);
                }
Но тогда если выбран первый вариант " - - - ", то он так и будет отображаться.


Все вроде бы как получилось. В БД записано текстом "Размеры" - "Двухспальные" и "Семейные", на сайте также, на 2-ом и 3-ем товаре видно. Но фильтр ищет по Id "22" - двухспальные и "23" - семейные, что в БД я ни как не смог совместить. Как сделать что-бы фильтр искал не по ID а по так сказать надписи вместо этой ID Или что бы он искал или по Id или по Надписи

______________________________________________________________________________________________
« Последнее редактирование: 02.04.2012, 17:52:16 от leopoldus »
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Такой вот вопрос - была проблема с показом Id и названий в категории товаров. Сделал так -  
Все вроде бы как получилось. В БД записано текстом "Размеры" - "Двухспальные" и "Семейные", на сайте также, на 2-ом и 3-ем товаре видно. Но фильтр ищет по Id "22" - двухспальные и "23" - семейные, что в БД я ни как не смог совместить. Как сделать что-бы фильтр искал не по ID а по так сказать надписи вместо этой ID Или что бы он искал или по Id или по Надписи
Я просто так понимаю, Вы изначально использовали вариант, без модификаций, и у Вас в базе сохранились ID. Попробуйте для первой позиции (по скриншоту базы) пересохранить характеристики. Тогда у Вас в базе будут записи не "22,23", а "Двухспальное,Семейное"
P.S. Заметил, что у Вас в списке товаров, в характеристиках нет пробела после запятой, значит за их вывод отвечает другой файл (не list_products/product.php). Думаю завтра посмотреть для версии 3.3.2 какой файл модифицировать.
« Последнее редактирование: 02.04.2012, 20:59:11 от Linfuby »
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Я их поменял для наглядности... Получается так , когда в фильтре выбираешь "Двухспальное" и "Семейное", то находит только товары , в кратком описании которых написано 22, 23, тоесть фильтр ищет не по надписи как хотелось бы а по ID (по цифрам). Подскажите как переделать
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Я их поменял для наглядности... Получается так , когда в фильтре выбираешь "Двухспальное" и "Семейное", то находит только товары , в кратком описании которых написано 22, 23, тоесть фильтр ищет не по надписи как хотелось бы а по ID (по цифрам). Подскажите как переделать
Ну если Вы заметили, я пока модифицировал вывод свойств. За фильтр не брался, так как его не использую.
Попробуйте заменить следующий код (после замены описанном в первом посте)
ФИЛЬТР ПО МУЛЬТИПОЛЯМ
1. \components\com_jshopping\lib\jtableauto.php
Код
        if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `id`, `type` FROM `#__jshopping_products_extra_fields`';
на
Код
        if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `name`, `type` FROM `#__jshopping_products_extra_fields`';
Если не сработает, смогу только завтра дать более детальный ответ.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Я заметил  ^-^. Попробовал изменить jtableauto.php - не работает. Но я заметил:

Если характеристика не MultySelect то фильтр находит.
Если характеристика MultySelect то фильтр не находит.

Оставляю свою ссылку на магазин  http://linens.16mb.com/index.php/posteiloebelio  для более детального примера
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Если характеристика не MultySelect то фильтр находит.
Если характеристика MultySelect то фильтр не находит.
Добавляем еще один SQL-запрос и получаем нужный результат. Тестировал на фильтре от разработчика.
jtableauto.php
Меняем
Код
        if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `id`, `type` FROM `#__jshopping_products_extra_fields`';
            $db->setQuery($q);
            $extrafields = $db->loadObjectList('id');
 
            foreach($filters['extra_fields'] as $f_id=>$vals){
                if($extrafields[$f_id]->type == 2){
                    if (is_array($vals) && count($vals)){
                        foreach($vals as $val){
                            $adv_query .= " AND FIND_IN_SET($val, prod.`extra_field_".$f_id."`) > 0";
                        }
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND FIND_IN_SET($vals, prod.`extra_field_".$f_id."`) > 0";
                    }
                }
                else{
                    if (is_array($vals) && count($vals)){
                        $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                    }
                }
            }
        }
на
Код
        if (is_array($filters['extra_fields'])){

            $q = 'SELECT `id`, `'.$lang->get('name').'` as name, `type` FROM `#__jshopping_products_extra_fields`';
            $db->setQuery($q);
            $extrafields = $db->loadObjectList('id');

            foreach($filters['extra_fields'] as $f_id=>$vals){
                if($extrafields[$f_id]->type == 2){
            $q = 'SELECT `id`, `'.$lang->get('name').'` as name FROM `#__jshopping_products_extra_field_values` WHERE field_id='.$extrafields[$f_id]->id;
            $db->setQuery($q);
            $extrafieldsname = $db->loadObjectList('id');
                    if (is_array($vals) && count($vals)){
                        foreach($vals as $val){
                        $valname = $extrafieldsname[$val]->name;
                            $adv_query .= " AND FIND_IN_SET('$valname', prod.`extra_field_".$f_id."`) > 0";
                        }
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND FIND_IN_SET($vals, prod.`extra_field_".$f_id."`) > 0";
                    }
                }
                else{
                    if (is_array($vals) && count($vals)){
                        $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                    }
                }
            }
        }
P.S. Странно, что Аркадий не участвует.
P.P.S. Код немного модифицирован (11:40 03.04.2012)
« Последнее редактирование: 03.04.2012, 11:41:05 от Linfuby »
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А чего странного, у меня работает в исходном варианте, а магазин я уже обновлять не буду, разве что на другом проекте.
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
 :D Вау, вау, вау, все работает. Ночью тоже пробовал сделать, но как то потерялся в коде...

Linfuby - люблю тебя! ^-^

Arkadiy у вас все работает на версии 3.3.0 ?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

pyh

  • Захожу иногда
  • 117
  • 11 / 0
Только сейчас заметил.

Фильтр работает странно.

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

А было бы логично получить выборку "зеленых" и "красных" товаров

Нужны идеи как исправить :)
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
1.
Фильтр работает странно.
...
Нужны идеи как исправить :)
Это относится к другой теме - Работа фильтра. Тут надо править модуль фильтра.
2. Найдено решение, для отображения в админке существующих характеристик товара.
Файл \administrator\components\com_jshopping\controllers\products.php
Меняем
Код
                else if ($v->type==2){
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'name', 'name', $product->$name);
                }
На
Код
                else if ($v->type==2){
                    $names = Explode(",", $product->$name);
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'name', 'name', $names);
                }
3.
А чего странного, у меня работает в исходном варианте, а магазин я уже обновлять не буду, разве что на другом проекте.
Я понял почему у Вас работает и нашел у себя изначальную ошибку, из-за которой мне пришлось внести множество изменений.
Однако в Вашем случае в базе хранятся id характеристики, а у меня Имя, благодаря этому, мне проще импортировать множество товаров с характеристиками вписывая их название, а не id.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

pyh

  • Захожу иногда
  • 117
  • 11 / 0
1.Это относится к другой теме - Работа фильтра. Тут надо править модуль фильтра.


ЭТО ОТНОСИТСЯ К ЭТОЙ ТЕМЕ.

Потому-что данный эффект возникает только при выборе мультихарактеристик.

При выборе обычных характеристик (селектов) фильтр работает нормально.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
3.Я понял почему у Вас работает и нашел у себя изначальную ошибку, из-за которой мне пришлось внести множество изменений.
Однако в Вашем случае в базе хранятся id характеристики, а у меня Имя, благодаря этому, мне проще импортировать множество товаров с характеристиками вписывая их название, а не id.
Это же вопрос к импортеру, все можно сделать и так и эдак, но если хранить иды - это будет правильнее и экономнее.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Это же вопрос к импортеру, все можно сделать и так и эдак, но если хранить иды - это будет правильнее и экономнее.
Я и являюсь импортером. Надо пересмотреть способ сохранения данных (вместо строк записывать id).
Однако последнее мое исправление Вам в любом случае пригодится...
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Не, ты не импортер, ты вводишь данные, а интерпретирует скрипт, который и надо подкрутить.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Не, ты не импортер, ты вводишь данные, а интерпретирует скрипт, который и надо подкрутить.
Ну скрипт то мною написан.
Хотелось бы услышать мнение на счет последнего исправления.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Я не проверял, и не скоро буду.
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Здравствуйте еще раз.

Вопрос по фильтру Джумшопинга. Я сделал мультивыбор характеристик, все норм кроме одного:

Как уже было замечено
Только сейчас заметил.

Фильтр работает странно.

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

А было бы логично получить выборку "зеленых" и "красных" товаров

Нужны идеи как исправить :)

Вот как это выглядит:
1. Захожу в какую нибудь категорию товара

2. Клацаю "полуторное". пока что все нормально работает.

3. Клацаю второй размер "Двухспальное". И получается что, фильтр выбирает только те товары в которых есть и "двухспальное" и "полуторное". Остальные, просто "поуторные" фильтр выбрасывает


Прилагаю ссылку на эту категорию для понятливости   http://linens.16mb.com/index.php/pike
*

fliginskih

  • Захожу иногда
  • 197
  • 15 / 1
попробуйте обычным фильтром (без хака, которой описывается в этой теме)
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
попробуйте обычным фильтром (без хака, которой описывается в этой теме)

Я попробовал установить заново JoomShopping_filter-3.4.0 и JoomShopping_filter-2.7.0 проблема НЕ В НЁМ.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Мультихарактеристики на то и мульти, что в них может быть выбрано несколько значений, и логика фильтра, как фильтра, с каждым нажатием уменьшать кол-во отобранных товаров, а не наоборот.
*

fliginskih

  • Захожу иногда
  • 197
  • 15 / 1
Мультихарактеристики на то и мульти, что в них может быть выбрано несколько значений, и логика фильтра, как фильтра, с каждым нажатием уменьшать кол-во отобранных товаров, а не наоборот.

Тогда по вашему фильтр "противоречит" самому себе.

Зачем делать мультивыбор, если нельзя получить "мультирезультат".
пример
--
Характеристика: цвет
опция: красный
опция: синий
--

Учитывая, что будет действовать мультивыбор, я захочу посмотреть товары красного И синего цвета (в одном списке). На то он и "мульти"
Мой фильтр так и работает. (хак этой темы не применял)
*

fliginskih

  • Захожу иногда
  • 197
  • 15 / 1
Я попробовал установить заново JoomShopping_filter-3.4.0 и JoomShopping_filter-2.7.0 проблема НЕ В НЁМ.

Толку, что вы перестанавливали модуль. Вы же ядро компонента магазина "хакали" по инструкции в этой теме.
*

Backer

  • Новичок
  • 1
  • 0 / 0
Извините за оффтоп.

Linfuby,
Очень понравилось Ваше решение, что в БД записывается имя характеристики, а не ID.
Но из-за проблемы с фильтром описанным выше, нет смысла в этом хаке.
Можно ли изменить стандартный jtableauto.php, чтобы он искал по имени, а не ID, мультихарактеристики мне не нужны.
Кстати без хака jtableauto.php фильтр находит в мультихарактеристиках только первое значение. Например у товара цвет красный и синий, то выводит только красный. Версия JoomShopping-3.5.1 и фильтра 3.0.1.

Или оформить решение в другой теме, для хранения в таблице #_jshopping_products имён характеристик и фильтрации товара по имени. Для удобства импорта. В основном товар шины и диски, и в БД всё равно будут храниться числа.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Или оформить решение в другой теме, для хранения в таблице #_jshopping_products имён характеристик и фильтрации товара по имени. Для удобства импорта.
Решения не будет, только потому что это действительно неправильно хранить в таблице имена характеристик. Я столкнулся с большими проблемами, когда один товар имеет много характеристик (Например список тканей из которых может быть сшита вещь). Они у меня просто не умещались в 255 символов, после чего я начал использовать Мультихарактеристики в оригинале.
А для удобства импорта советую использовать платные решения, где характеристики можно указывать словами (Цвет:Красный,Синий), а не цифрами (1,2).
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

pyh

  • Захожу иногда
  • 117
  • 11 / 0
Фильтр заработал правильно.
Теперь при выборе нескольких мультихарактеристик показывает все товары с этими х-ми.

Последний пункт из первого сообщения

ФИЛЬТР ПО МУЛЬТИПОЛЯМ

1. \components\com_jshopping\lib\jtableauto.php

Код: php
        if (is_array($filters['extra_fields'])){
            foreach($filters['extra_fields'] as $f_id=>$vals){
                if (is_array($vals) && count($vals)){
                    $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                }elseif(is_string($vals) && $vals!=""){
                    $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                }
            }
        }
      
меняем на

Код: php
       if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `id`, `type` FROM `#__jshopping_products_extra_fields`';
            $db->setQuery($q);
            $extrafields = $db->loadObjectList('id');
 
            foreach($filters['extra_fields'] as $f_id=>$vals){
                if($extrafields[$f_id]->type == 2){
                    if (is_array($vals) && count($vals)){
$adv_query.=" and ( 1=0 ";
                        foreach($vals as $val){
                            $adv_query .= " OR FIND_IN_SET($val, prod.`extra_field_".$f_id."`) > 0";
                        }
$adv_query.=" ) ";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " OR FIND_IN_SET($vals, prod.`extra_field_".$f_id."`) > 0";
                    }
                }
                else{
                    if (is_array($vals) && count($vals)){
                        $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                    }
                }
            }
        }


проверялось и работает на Joomla 2.5.1  + JoomShopping 3.5.0
*

stparts

  • Захожу иногда
  • 109
  • 1 / 0
Извиняюсь, за глупый вопрос. Первое сообщение обновляется? Оно дополненно последними наработками, к примеру из сообщения pyh ?
Я пытаюсь разобраться, далёк от этого. Нужно сделать мультивыбор, для магазина автомобильных дисков.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Нет, первое сообщение не обновляется.
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Фильтр заработал правильно.
Теперь при выборе нескольких мультихарактеристик показывает все товары с этими х-ми.

Пожалуйста дай свои файлики \components\com_jshopping\. Я уже 4 неделю не могу исправить фильтр, поставил такие же версии как у тебя и внес твои правки, но безрезультатно. Вышли файлики, ПОЖАЛУЙСТА. leopolds2010@gmail.com
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Для тех, кто не хочет менять код ядра компонента, может пригодится готовое решение.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться