Нужные хаки для модуля форума Bullet Energy 1.3 от RDN TEAM
- Хаки DLE
Если вы являетесь вебмастером администрирующим форум Bullet Energy эти модификации модуля от RDN TEAM будут для вас полезны.
1. Авто-закрепление первого поста форума на верху как шапка
Установка:
Открываем файл newtopic.php находим:
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_topic (id,id_parent,title,reply_count,view_count,autor_id,autor,post_date,last_reply_date,last_reply_info,rating,topic_fixed,topic_type,topic_private_user,topic_descr_site,topic_approve,topic_meta,vote_id) VALUES (NULL," . parent::$globalParam['id'] . ",'{$option['topicName']}',0,0," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "'," . parent::$timeParameters['time'] . "," . parent::$timeParameters['time'] . ",0,0,0,{$option['topicType']},'{$option['topicIsPrivateUser']}','{$option['topicDescription']}',{$option['aprove']},'{$option['meta']}', {$option['poll']})") ;
Заменяем на:
//
// first post auto pinned hack by RDN TEAM
// parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_topic (id,id_parent,title,reply_count,view_count,autor_id,autor,post_date,last_reply_date,last_reply_info,rating,topic_fixed,topic_type,topic_private_user,topic_descr_site,topic_approve,topic_meta,vote_id) VALUES (NULL," . parent::$globalParam['id'] . ",'{$option['topicName']}',0,0," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "'," . parent::$timeParameters['time'] . "," . parent::$timeParameters['time'] . ",0,0,0,{$option['topicType']},'{$option['topicIsPrivateUser']}','{$option['topicDescription']}',{$option['aprove']},'{$option['meta']}', {$option['poll']})") ;
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_topic (id,id_parent,title,reply_count,view_count,autor_id,autor,post_date,last_reply_date,last_reply_info,rating,topic_fixed,topic_type,topic_private_user,topic_descr_site,topic_approve,topic_meta,vote_id,is_fixed_count) VALUES (NULL," . parent::$globalParam['id'] . ",'{$option['topicName']}',0,0," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "'," . parent::$timeParameters['time'] . "," . parent::$timeParameters['time'] . ",0,0,0,{$option['topicType']},'{$option['topicIsPrivateUser']}','{$option['topicDescription']}',{$option['aprove']},'{$option['meta']}', {$option['poll']}, '1')") ;
//
Находим:
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_message (id,id_topic,autors_id,message_autor,message_autor_ip,message_date,message_text,
message_approve,tree_id,attachment,user_thanks) VALUES (NULL,{$option['topicInsertId']}," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "',{$option['ipUser']}," . parent::$timeParameters['time'] . ",'{$option['topicOneMessage']}',{$option['a
prove']}," . parent::$globalParam['id'] . ",0,'')") ;
Заменяем на:
//parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_message (id,id_topic,autors_id,message_autor,message_autor_ip,message_date,message_text,
message_approve,tree_id,attachment,user_thanks) VALUES (NULL,{$option['topicInsertId']}," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "',{$option['ipUser']}," . parent::$timeParameters['time'] . ",'{$option['topicOneMessage']}',{$option['a
prove']}," . parent::$globalParam['id'] . ",0,'')") ;
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_message (id,id_topic,autors_id,message_autor,message_autor_ip,message_date,message_text,
message_approve,tree_id,attachment,user_thanks,fixap_msg) VALUES (NULL,{$option['topicInsertId']}," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "',{$option['ipUser']}," . parent::$timeParameters['time'] . ",'{$option['topicOneMessage']}',{$option['a
prove']}," . parent::$globalParam['id'] . ",0,'',1)") ;
2. Решаем проблему некрасивых спидбаров(суть его работы в убирании дублирующего заголовка открытого топика):
Было:
Стало:
Установка:
Откройте файл: primary.php
Найдите:
$speedbar .= $this->getPosotionUserTree($data['idTree'], false) . '<li class="last"><a class="no_linck">' . $data['titlAction'] . '</a><span class="arrow"><span></span></span></li>' ;
Замените на:
// hack hack small speedbar by RDN TEAM!
//$speedbar .= $this->getPosotionUserTree($data['idTree'], false) . '<li class="last"><a class="no_linck">' . $data['titlAction'] . '</a><span class="arrow"><span></span></span></li>' ;
$speedbar .= $this->getPosotionUserTree($data['idTree'], false) ;
//
3. Обрезаем большие заголовки топиков(без потери смысла заголовка, потому что при наведении на заголовок мышкой мы получим его полную длинну):
Установка:
Открыть файл categories.php:
Найти:
parent::$tpl->set('{title}', $data['title']) ;
Заменить на:
// hack topics text-limit by RDN TEAM
if( strlen($data['title']) > 40 ) {
parent::$tpl->set('{title}', "<span title=\"".$data['title']."\">".substr( $data['title'], 0, 40 ). " ...</span>");
} else {
parent::$tpl->set('{title}', $data['title']) ;
}
//
// parent::$tpl->set('{title}', $data['title']) ;
//
4. Обрезаем заголовки топиков при выводе их в блоке на сайте "Последние новости на форуме":
Установка:
Открыть файл: bullet_api.class.php
Найти:
$this->tpl->set('{title}', $row['title'] );
Заменить на:
// hack text limit by RDN TEAM
if( strlen($row['title']) > 55 ) {
$this->tpl->set('{title}', substr( $row['title'], 0,55 ). " ...");
} else {
$this->tpl->set('{title}', stripslashes($row['title']) );
}
//
5. Исправим ошибку с точкой рядом с аватарой при предпросмотре вашего поста:
Установка:
Открыть файл preview_topic_new.tpl
Найдем:
<li class="msg">
Заменим на:
<li class="msg" style="list-style-type: none;">
6. Фиксы для функции обсудить на форуме:
1) Убирает автосмену регистра первого символа.
2) Убирает пробел перед темой если префикс в шаблоне "обсуждение" пустой.
Установка:
Открыть файл: /engine/bullet_energy/action/site/discussion.php и найти:
$option = array( ... );
Заменить на:
// hack disabled prefix by RDN TEAM
if ( parent::$cache['template']['discussion']['prefix'] == "" ) parent::$cache['template']['discussion']['prefix'] = null;
else parent::$cache['template']['discussion']['prefix'] = parent::$cache['template']['discussion']['prefix'] . " ";
// hack disabled prefix by RDN TEAM
$option = array(
'foto' => parent::$member_id['foto'] ? parent::$member_id['foto'] : '',
'ipUser' => ip2long($_SERVER['REMOTE_ADDR']),
'meta' => parent::$db->safesql(serialize(array(
parent::$cache['template']['discussion']['prefix'] . $row['post']['title'],
'',
''))),
// hack hack no first symbol change register by RDN TEAM
// 'title' => parent::$helper->ucfirs(parent::$helper->dle_substr(parent::$cache['template']['discussion']['prefix'] . ' ' . $row['post']['title'], 0, 250, parent::$config['DLE']['charset']), parent::$config['DLE']['charset'])) ;
'title' => parent::$helper->dle_substr(parent::$cache['template']['discussion']['prefix'] . $row['post']['title'], 0, 250, parent::$config['DLE']['charset']), parent::$config['DLE']['charset']);
//
7. Выводим статистику форума в топиках:
Установка:
Открыть файл /engine/bullet_energy/action/site/showtopic.php
Найти:
'titlTree' => parent::$cache['tree'][$row['id_parent']]['tree_title']), 'widget' => $option['widget'])) ;
Заменить на:
// hack: show statistics in topic page by RDN TEAM
// 'titlTree' => parent::$cache['tree'][$row['id_parent']]['tree_title']), 'widget' => $option['widget'])) ;
'titlTree' => parent::$cache['tree'][$row['id_parent']]['tree_title']),
'widget' => $option['widget'] = parent::$helper->getSidebar() )) ;
//
8. Выпиливаем систему автосмены регистра у топиков, ибо она или не работает или работает, но делает любой регистр => маленьким(выпиливаем самым простым способом, обнулением функции):
Установка:
Открыть файл: /engine/bullet_energy/helper/ и найти:
public function ucfirs($value = '', $charset = '') {
...
}
Заменяем на:
// RDN TEAM
public function ucfirs($value = '', $charset = '')
{
return $value;
// fuck this holy shit!
/*
$value = $this->element_strtolower($value) ;
if($this->element_strtolower($charset) == "utf-8") {
$value = mb_ereg_replace("^[\ ]+", "", $value) ;
return mb_strtoupper(mb_substr($value, 0, 1, "UTF-8"), "UTF-8") . mb_substr($value, 1, mb_strlen($value), "UTF-8") ;
} else
return ucfirst($value) ;
*/
// fuck this holy shit!
}
// RDN TEAM
9. Добавляем лимит текста в блоке "последние сообщения" при просмотре форумов(стандартно окончание темы просто скрывается средствами css):
До:
После:
Установка:
Открыть файл: /engine/bullet_energy/action/site/category.php
Найти:
parent::$tpl->set('{lastTopicName}', $last[2]) ;
Заменим на:
// hack last topics text-limit in forums by RDN TEAM
if( strlen(htmlspecialchars($last[2])) > 20 ) {
parent::$tpl->set('{lastTopicName}', "<span title=\"".htmlspecialchars($last[2])."\">".substr( htmlspecialchars($last[2]), 0, 20 ). " ...</span>");
} else {
parent::$tpl->set('{lastTopicName}', htmlspecialchars($last[2])) ;
}
//
// parent::$tpl->set('{lastTopicName}', $last[2]) ;
Продолжение:
Открыть файл: /engine/bullet_energy/action/site/index.php
Найти:
parent::$tpl->set('{lastTopicName}', stripslashes($element['tree_last_info'][2])) ;
Заменить на:
// hack last topics text-limit in forums by RDN TEAM
if( strlen(stripslashes($element['tree_last_info'][2])) > 20 ) {
parent::$tpl->set('{lastTopicName}', "<span title=\"".stripslashes($element['tree_last_info'][2])."\">".substr( stripslashes($element['tree_last_info'][2]), 0, 20 ). " ...</span>");
} else {
parent::$tpl->set('{lastTopicName}', stripslashes($element['tree_last_info'][2])) ;
}
//
// parent::$tpl->set('{lastTopicName}', stripslashes($element['tree_last_info'][2])) ;
//
Опытным методом было выяснено оптимальное значение в 20 символов, в предыдущем посте тоже исправьте в двух местах его.
10. Интеграция модуля Репутация + количество благодарностей за новости на сайте:
+ Стандартные иконки плюс\минус у репутации имеют пути: {THEME}/images/repa_up.gif и {THEME}/images/repa_dn.gif (в инструкции ниже, я юзаю стандартные иконки DLE)
+ Репутация обновляется при изменении (AJAX FIXED)
+ Нулевая нагрузка, никаких посторонних запросов.
+ Поддержка стилей вывода: расскоментируйте нужный вам визуальный тип репутации (0|0) (0|0|0) (0)
Установка:
Приступим к модифицированию: Файл: /engine/bullet_energy/action/site/showtopic.php
Найдём строку:
parent::$tpl->set('{messageAutorIp}', parent::$helper->ckeckModulesConfig('be_moder_ip_view') ? long2ip($row['message_autor_ip']) : '') ;
После неё добавим:
// repa&thanx hack by RDN TEAM
if($row['repa_off'] == 0) {
$option['repa'] = explode('|',$row['repa_mod']);
// тип репутации (0|0) раскоментируйте по необходимости
//$option['view'] = "<span id=\"repa-{$row['autors_id']}-".$row['id']."\"><a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/\"><strong>(<font color=green>".$option['repa'][0]."</font>|<font color=red>".$option['repa'][1]."</font>)</strong></a></span>";
// тип репутации (0|0|0) используется по умолчанию
$option['view'] = "<span id=\"repa-{$row['autors_id']}-".$row['id']."\"><a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/\"><strong>(<font color=green>".$option['repa'][0]."</font>|".$row['repa']."|<font color=red>".$option['repa'][1]."</font>)</strong></a></span>";
// тип репутации (0) раскоментируйте по необходимости
//$option['view'] = "<span id=\"repa-{$row['autors_id']}-".$row['id']."\"><a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/\"><strong>(".$row['repa'].")</strong></a></span>";
parent::$tpl->set('{repa}', "<a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/plus/\" onclick=\"repa_global('form', '1', '{$row['autors_id']}', '".$row['id']."'); return false;\" >
<img title=\"Повысить репутацию\" src=\"{THEME}/dleimages/up.gif\" border=\"0\" /></a>".$option['view']."
<a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/minus/\" onclick=\"repa_global('form', '0', '{$row['autors_id']}', '".$row['id']."'); return false;\" >
<img title=\"Понизить репутацию\" src=\"{THEME}/dleimages/down.gif\" border=\"0\" /></a>") ;
} else {
parent::$tpl->set('{repa}','Репутация отключена');
}
if(!$row['thx_num']) parent::$tpl->set('{thxnum}', '0');
else parent::$tpl->set('{thxnum}', $row['thx_num']);
// repa&thanx hack by RDN TEAM
Для вывода репутации на форуме добавьте в файл шаблона: short_message.tpl
в нужное вам место:
{repa}
Для вывода благодарностей за статьи на форуме добавьте в файл шаблона: short_message.tpl
в нужное вам место:
{thxnum}
UPDATE: Ещё исправление по репутации, пути к файлам изображений указывайте статичные, с именем темы и тд.. + теже самые изменения необходимо применить к файлу: /engine/bullet_energy/action/site/newpost.php.
11. Оформляем первый пост темы как шапку своим дизайном:
Установка:
Открыть файл: /engine/bullet_energy/action/site/showtopic.php
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Выше вставить:
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
if($this->_param['countPost'] == 0) { // $row['fixap_msg']
parent::$tpl->set_block("'\\[firstpost\\](.*?)\\[/firstpost\\]'si", "\\1") ;
} else {
parent::$tpl->set_block("'\\[firstpost\\](.*?)\\[/firstpost\\]'si", "") ;
}
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
Открыть файл: /engine/bullet_energy/action/site/newpost.php
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Выше вставить:
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
parent::$tpl->set_block("'\\[firstpost\\](.*?)\\[/firstpost\\]'si", "") ;
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
Теперь если вы хотите оформить первый пост особенным стилем добавьте в файле шаблона short_message.tpl в нужное место:
[firstpost]ваш стиль который применится только к первому посту.[/firstpost]
12. Хак "TopicStarter", позволяет выводить нужный вам текст(изображение) в каждом сообщении от автора темы:
Установка:
Открыть файл: /engine/bullet_energy/action/site/showtopic.php
Найти:
$row = parent::$db->super_query("SELECT topic . * {$option['SQL']['readColum']}{$option['SQL']['columFeed']} FROM " . DBNAME . "." . PREFIX . "_be_topic AS topic {$option['SQL']['readJoin']} {$option['SQL']['feed']} WHERE topic.id = " . parent::$globalParam['id'] . " LIMIT 1") ;
Добавить ниже:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
$this->_param['topic_autor'] = $row['autor_id'] ;
// TopicStarter hack by RDN TEAM
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Добавить выше:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
if($this->_param['topic_autor'] == $row['autors_id']) {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "\\1") ;
} else {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "") ;
}
// TopicStarter hack by RDN TEAM
Открыть файл: /engine/bullet_energy/action/site/newpost.php
Найти:
$row['topic']['title'] = stripcslashes($row['topic']['title']) ;
Выше вставить:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
$this->_param['topic_autor'] = $row['topic']['autor_id'] ;
// TopicStarter hack by RDN TEAM
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Добавить выше:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
if($this->_param['topic_autor'] == $row['autors_id']) {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "\\1") ;
} else {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "") ;
}
// TopicStarter hack by RDN TEAM
Добавить в нужном месте в шаблоне: short_message.tpl
[topicstarter]<p style="color:red"><strong>Автор темы</strong></p>[/topicstarter]
13. Хак который позволяет добавить свой стиль оформления для постов администратора, модератора:
Установка:
Модифицировать будем файл: /engine/bullet_energy/action/site/showtopic.php и /engine/bullet_energy/action/site/newpost.php
Найдем:
parent::$tpl->set('{group-icon}', parent::$user_group[$row['user_group']]['icon']) ;
Добавим ниже:
// custom usergroup style by RDN-TEAM
parent::$tpl->set('{group-id}', parent::$user_group[$row['user_group']]['id']) ;
// custom usergroup style by RDN-TEAM
Теперь используя {group-id} в файле шаблона short_message.tpl вы будете получать id группы автора сообщения.
Подключается вот так:
<div class="group-{group-id}">...</div>
В css соответственно:
.group-1 a {color:red !important;}
.group-2 a {color:blue !important;}
.group-3 a {color:green !important;}
14. Хак подключение стандартных полей из профиля DLE: icq, land, fullname, дата последнего посещения:
Установка:
Редактируем файлы: /engine/bullet_energy/action/site/showtopic.php и /engine/bullet_energy/action/site/newpost.php
Найти:
parent::$tpl->set('{icq}', $row['icq']) ;
Заменить на:
//parent::$tpl->set('{icq}', $row['icq']) ;
// extended user info by RDN TEAM
if( $row['icq'] ) {
parent::$tpl->set( '[icq]', "" );
parent::$tpl->set( '[/icq]', "" );
parent::$tpl->set( '{icq}', stripslashes( $row['icq'] ) );
parent::$tpl->set_block( "'\\[not-icq\\](.*?)\\[/not-icq\\]'si", "" );
} else {
parent::$tpl->set_block( "'\\[icq\\](.*?)\\[/icq\\]'si", "" );
parent::$tpl->set( '{icq}', "" );
parent::$tpl->set( '[not-icq]', "" );
parent::$tpl->set( '[/not-icq]', "" );
}
if( $row['land'] ) {
parent::$tpl->set( '[land]', "" );
parent::$tpl->set( '[/land]', "" );
parent::$tpl->set( '{land}', stripslashes( $row['land'] ) );
parent::$tpl->set_block( "'\\[not-land\\](.*?)\\[/not-land\\]'si", "" );
} else {
parent::$tpl->set_block( "'\\[land\\](.*?)\\[/land\\]'si", "" );
parent::$tpl->set( '{land}', "" );
parent::$tpl->set( '[not-land]', "" );
parent::$tpl->set( '[/not-land]', "" );
}
if( $row['fullname'] ) {
parent::$tpl->set( '[fullname]', "" );
parent::$tpl->set( '[/fullname]', "" );
parent::$tpl->set( '{fullname}', stripslashes( $row['fullname'] ) );
parent::$tpl->set_block( "'\\[not-fullname\\](.*?)\\[/not-fullname\\]'si", "" );
} else {
parent::$tpl->set_block( "'\\[fullname\\](.*?)\\[/fullname\\]'si", "" );
parent::$tpl->set( '{fullname}', "" );
parent::$tpl->set( '[not-fullname]', "" );
parent::$tpl->set( '[/not-fullname]', "" );
}
parent::$tpl->set( '{lastdate}', langdate( "j F Y, H:i", $row['lastdate'] ) );
// extended user info by RDN TEAM
Изменения провести в обоих файлах. Далее в файле шаблона short_message.tpl нам станут доступны теги:
<p>[icq]Аська: {icq}[/icq][not-icq]Аська: не указана![/not-icq]</p>
<p>[land]Город: {land}[/land][not-land]Город: не указан![/not-land]</p>
<p>[fullname]Имя: {fullname}[/fullname][not-fullname]Имя: не указано![/not-fullname]</p>
<p>Последнее посещение: {lastdate}</p>
15. При использовании оффициального хака "Кнопка обсудить на форуме в новостях" была найдена проблема:
- Не работает "версия статьи для печати"
Исправление:
в файле /engine/modules/show.full.php
найти:
$tpl->set('{forumDiscus}', $apiBullet->setLinckDiscus(array(
'idPost' => $row['id'],
'id' => $row['topic_id'],
'tree' => $category_id))) ;
заменить на:
// discuss at forum hack fix! RDN-TEAM
if ( $view_template != "print") {
$tpl->set('{forumDiscus}', $apiBullet->setLinckDiscus(array(
'idPost' => $row['id'],
'id' => $row['topic_id'],
'tree' => $category_id))) ; }
// discuss at forum hack fix! RDN-TEAM
16. Исправление маленьких багов плюс расширение для системы работы с жалобами:
FIX: Исправленна проблема длинного текста жалобы, теперь окно всегда статичное, присутствует скроллбар.
FIX: Исправлена проблема отображения ника отправителя жалобы (там был включен url encoding)
Подробное описание проблемы: white-master.ru/forum/
При написании жалобы автоматически отправляется уведомление в ЛС администратору сайта. (или модератору, необходимо лишь изменить user_id в файле actions/site/complaint.php )
Скачать файлы установки:
17. Хак позволяющий определённым образом оформить ссылки на новые сообщения форума в блоке "последние сообщения с форума:
По умолчанию отображает ваш блок если последний ответ в теме или дата создания поста сегодня\вчера. Для особо активных форумов можно оставить отображение метки только за "сегодня".
Установка:
Открыть файл /engine/bullet_energy/api/bullet_api.class.php
Найти:
$this->tpl->set('{lastAutorName}', $row['last_reply_info'][0]) ;
Вставить выше:
// custom style or label for new posts by RDN-TEAM
if(date('Ymd', $row['last_reply_info'][1]) == date('Ymd', time()) OR date('Ymd', $row['last_reply_info'][1]) == date('Ymd', (time() - 86400))) {
// uncomment and delete previous string for active forum posting
// if(date('Ymd', $row['last_reply_info'][1]) == date('Ymd', time())) {
$this->tpl->set( '[new-post]', "" );
$this->tpl->set( '[/new-post]', "" );
} else {
$this->tpl->set_block( "'\\[new-post\\](.*?)\\[/new-post\\]'si"
, "" );
}
// custom style or label for new posts by RDN-TEAM
Изменения в шаблоне: last_topic_content.tpl
Добавьте в нужное место:
[new-post][НОВОЕ] [/new-post]
или
[new-post]ваш стиль оформления[/new-post]
Автор: RDN TEAM
источник: rdn-team.com
Ключевые слова по теме Нужные хаки для модуля форума Bullet Energy 1.3 от RDN TEAM: хак, форум Bullet Energy, RDN TEAM
Baseball instruction www.inthezonenj.com | Гост муфты соединительные арматура гост муфты соединительные арматура ems-ancon.com |