info navigation

phpbb-belk.ru

темы, связанные с форумом phpbb 3.0.x



Новая тема  [ Сообщений: 2 ]  Просмотры: 3510

Автор Сообщение
Не в сети
(Андрей)  
Администратор
Аватара пользователя

Стаж: 8 лет 6 месяцев 27 дней
Сообщения: 1223
Откуда: здешние мы


Стиль: subsilver2


Репутация: 11


Russia

Тиц и PR

перейти на сайт пользователя
Найти темы пользователя


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

Topic Image phpbb 3

модификация позволяет вывести картинку из первого поста темы в список тем, как картинку самой темы. картинка выбирается при создании темы. имеются настройки в админке. модификация создана ещё для версии 3.0.7, но я её протестировал на 3.0.14 - всё нормально работает.

17 ноября 2022 года в целях проверки установил здесь эту модификацию. её работу вы можете посмотреть в списке тем раздела "Модификации" - эта тема, наведите на значок # (я переделал вывод под себя - чтобы место не занимало на странице).

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

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

сканы модификации:

Вложение:
viewforum.png
viewforum.png [ 71.62 КБ | Просмотров: 3510 ] viewforum.png


Вложение:
subsilver2.png
subsilver2.png [ 61.26 КБ | Просмотров: 3484 ] subsilver2.png


Вложение:
posting.png
posting.png [ 27.9 КБ | Просмотров: 3510 ] posting.png


Вложение:
mesage_adm.png
mesage_adm.png [ 53.07 КБ | Просмотров: 3510 ] mesage_adm.png


Вложение:
forum_adm.png
forum_adm.png [ 41.88 КБ | Просмотров: 3510 ] forum_adm.png


Вложение:
prava_adm.png
prava_adm.png [ 73.9 КБ | Просмотров: 3510 ] prava_adm.png



Если кого заинтересовало - ставим.

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

Скачать модификацию из файлового архива сайта:

Скачать из файлового архива сайта

содержимое папки root необходимо закачать на сервер, в папку сайта, где файл config.php.

Теперь необходимо провести SQL-запрос:
не знаю почему, что все запросы написаны отдельно, а не одной установкой. я их так раздельно и проводил.

Код: Выделить всё

INSERT INTO `phpbb_acl_options` (auth_option, is_global, is_local, founder_only) VALUES ('f_topic_image', 0, 1, 0);


Код: Выделить всё

INSERT INTO `phpbb_config` VALUES ('img_max_topic_image_width', 150, 0);


Код: Выделить всё

INSERT INTO `phpbb_config` VALUES ('img_max_topic_image_height', 100, 0);


Код: Выделить всё

ALTER TABLE `phpbb_attachments` ADD topic_image tinyint(1) UNSIGNED NOT NULL DEFAULT 0;


Код: Выделить всё

ALTER TABLE `phpbb_forums` ADD forum_allow_topic_image TINYINT(1) NOT NULL DEFAULT 0;


Код: Выделить всё

ALTER TABLE `phpbb_topics` ADD topic_image_id MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0;


Код: Выделить всё

UPDATE phpbb_attachments SET topic_image = 1 WHERE in_message = 0 AND post_msg_id IN (SELECT topic_first_post_id FROM phpbb_topics WHERE topic_attachment = 1)


установил на сайт генератор SQL запроса и сделал установочный файл (кто не хочет делать запрос вручную или у кого проблемы.

Вложение:
db_update.zip [1.34 КБ]
Скачиваний: 43


Дальше редактируем файлы:

Открыть adm\style\acp_forums.html
Найти

Код: Выделить всё

            <label><input type="radio" class="radio" name="display_recent" value="0"<!-- IF not S_DISPLAY_ACTIVE_TOPICS --> id="display_recent" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>


Вставить после найденного

Код: Выделить всё

      <dl>
         <dt><label for="forum_allow_topic_image">{L_ALLOW_TOPICS_IMAGES}:</label><br /><span>{L_ALLOW_TOPICS_IMAGES_EXPLAIN}</span></dt>
         <dd><label><input type="radio" class="radio" name="forum_allow_topic_image" value="1"<!-- IF S_ALLOW_TOPICS_IMAGES --> id="forum_allow_topic_image" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
            <label><input type="radio" class="radio" name="forum_allow_topic_image" value="0"<!-- IF not S_ALLOW_TOPICS_IMAGES --> id="forum_allow_topic_image" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>


Открыть download\file.php
Найти

Код: Выделить всё

$thumbnail = request_var('t', false);


Заменить найденное на

Код: Выделить всё

$thumbnail = request_var('t', 0);


Найти

Код: Выделить всё

$sql = 'SELECT attach_id, in_message, post_msg_id, extension, is_orphan, poster_id, filetime


Заменить найденное на

Код: Выделить всё

$sql = 'SELECT attach_id, in_message, post_msg_id, extension, is_orphan, poster_id, mimetype, filetime, topic_image


Найти

Код: Выделить всё

if ((!$attachment['in_message'] && !$config['allow_attachments']) || ($attachment['in_message'] && !$config['allow_pm_attach']))


Вставить перед найденным

Код: Выделить всё

if (!($config['img_max_topic_image_width'] > 0 && $config['img_max_topic_image_height'] > 0) || ($thumbnail == 2 && !$attachment['topic_image']))
{
   header('HTTP/1.0 403 Forbidden');
   trigger_error($user->lang['LINKAGE_FORBIDDEN']);
}


Найти

Код: Выделить всё

if ($thumbnail)


Заменить найденное на

Код: Выделить всё

if ($thumbnail == 2)
{
   $filename = $phpbb_root_path . $config['upload_path'] . '/topic_image_' . $attachment['physical_filename'];
   
   if (!@file_exists($filename))
   {
      @include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
      if (create_thumbnail($phpbb_root_path . $config['upload_path'] . '/' . $attachment['physical_filename'], $filename, $attachment['mimetype'], true))
      {
         $attachment['physical_filename'] = 'topic_image_' . $attachment['physical_filename'];
      }
   }
   else
   {
      $attachment['physical_filename'] = 'topic_image_' . $attachment['physical_filename'];
   }
}
elseif ($thumbnail)


Открыть includes\acp\acp_board.php
Найти

Код: Выделить всё

                  'legend2'            => 'POSTING',


Вставить перед найденным

Код: Выделить всё

                  'img_max_topic_image_width'      => array('lang' => 'MAX_TOPIC_IMG_WIDTH',   'validate' => 'int:0',      'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
                  'img_max_topic_image_height'   => array('lang' => 'MAX_TOPIC_IMG_HEIGHT',   'validate' => 'int:0',      'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),


Открыть includes\acp\acp_forums.php
Найти

Код: Выделить всё

                     'forum_password_confirm'=> '',


Вставить после найденного

Код: Выделить всё

                     'forum_allow_topic_image'=> false,


Найти

Код: Выделить всё

               'S_ENABLE_QUICK_REPLY'      => ($forum_data['forum_flags'] & FORUM_FLAG_QUICK_REPLY) ? true : false,


Вставить после найденного

Код: Выделить всё

               'S_ALLOW_TOPICS_IMAGES'      => ($forum_data['forum_allow_topic_image']) ? true : false,


Найти (эта строка в новых версиях форума находится там же, где и первая правка в этом файле).

Код: Выделить всё

                  'forum_password_unset'   => request_var('forum_password_unset', false),


Вставить после найденного

Код: Выделить всё

                  'forum_allow_topic_image'   => request_var('forum_allow_topic_image', false),


Открыть includes\acp\acp_styles.php
Найти (может быть показана часть строки)

Код: Выделить всё

            'user_icon1', 'user_icon2', 'user_icon3', 'user_icon4', 'user_icon5', 'user_icon6', 'user_icon7', 'user_icon8', 'user_icon9', 'user_icon10',


В этой строке после

Код: Выделить всё

'user_icon10',


Вставить

Код: Выделить всё

 'topic_image_no_photo',


Открыть includes\functions_admin.php
Найти

Код: Выделить всё

   $sql = 'SELECT post_msg_id, topic_id, in_message, physical_filename, thumbnail, filesize, is_orphan


Заменить найденное на

Код: Выделить всё

   $sql = 'SELECT post_msg_id, topic_id, in_message, physical_filename, thumbnail, filesize, is_orphan, topic_image


Найти (может быть показана часть строки)

Код: Выделить всё

      $physical[] = array('filename' => $row['physical_filename'], 'thumbnail' => $row['thumbnail'], 'filesize' => $row['filesize'], 'is_orphan' => $row['is_orphan']);


В данной строке найти



и перед найденным кодом вписать

Код: Выделить всё

, 'topic_image' => $row['topic_image']


Найти

Код: Выделить всё

      if ($file_ary['thumbnail'])


Вставить перед найденным

Код: Выделить всё

      if ($file_ary['topic_image'])
      {
         phpbb_unlink($file_ary['filename'], 'topic_image', true);
      }


Найти

Код: Выделить всё

   $filename = ($mode == 'thumbnail') ? 'thumb_' . utf8_basename($filename) : utf8_basename($filename);


Заменить найденное на

Код: Выделить всё

   switch($mode)
   {
      case 'thumbnail': $filename = 'thumb_' . utf8_basename($filename); break;
      case 'topic_image': $filename = 'topic_image_' . utf8_basename($filename); break;
      default: $filename = utf8_basename($filename); break;
   }


Открыть includes\functions_posting.php
Найти

Код: Выделить всё

function create_thumbnail($source, $destination, $mimetype)


Заменить найденное на

Код: Выделить всё

function create_thumbnail($source, $destination, $mimetype, $for_topic_image = false)


Найти

Код: Выделить всё

   if (!$img_filesize || $img_filesize <= $min_filesize)


Заменить найденное на

Код: Выделить всё

   if (!$for_topic_image && (!$img_filesize || $img_filesize <= $min_filesize))


Найти

Код: Выделить всё

   list($new_width, $new_height) = get_img_size_format($width, $height);


Заменить найденное на

Код: Выделить всё

   list($new_width, $new_height) = ($for_topic_image) ? get_img_size_format_for_topic_image($width, $height) : get_img_size_format($width, $height);


Найти (эта строка в моём файле оказалась выше предыдущей правки. вставил код как написано в инструкции - всё нормально).

Код: Выделить всё

function get_img_size_format($width, $height)


Вставить перед найденным

Код: Выделить всё

function get_img_size_format_for_topic_image($pw, $ph)
{
   global $config;

   $nw = ($config['img_max_topic_image_width']) ? $config['img_max_topic_image_width'] : 150;
   $nh = ($config['img_max_topic_image_height']) ? $config['img_max_topic_image_height'] : 100;

   $wr = $nw/$pw;
   $hr = $nh/$ph;
   return array(round(min($wr,$hr)*$pw),round(min($wr,$hr)*$ph));
}


Найти

Код: Выделить всё

            'ASSOC_INDEX'      => $count,


Вставить после найденного

Код: Выделить всё

            'S_IMAGE'         => (strpos($attach_row['mimetype'], 'image') === 0),


Найти

Код: Выделить всё

            'topic_attachment'         => (!empty($data['attachment_data'])) ? 1 : 0,


Вставить после найденного

Код: Выделить всё

            'topic_image_id'         => $data['topic_image_id'],


Найти

Код: Выделить всё

            'topic_attachment'         => (!empty($data['attachment_data'])) ? 1 : (isset($data['topic_attachment']) ? $data['topic_attachment'] : 0),


Вставить после найденного

Код: Выделить всё

            'topic_image_id'         => $data['topic_image_id'],


Открыть includes\message_parser.php
Найти

Код: Выделить всё

   function parse_attachments($form_name, $mode, $forum_id, $submit, $preview, $refresh, $is_message = false)


Заменить найденное на

Код: Выделить всё

   function parse_attachments($form_name, $mode, $forum_id, $submit, $preview, $refresh, $is_message = false, $allow_topic_image = false)


Найти

Код: Выделить всё

                  'poster_id'         => $user->data['user_id'],


Вставить после найденного

Код: Выделить всё

                  'topic_image'      => ($allow_topic_image && (strpos($filedata['mimetype'], 'image') === 0)) ? 1 : 0,


Найти

Код: Выделить всё

                  $sql = 'SELECT attach_id, physical_filename, thumbnail


Заменить найденное на

Код: Выделить всё

                  $sql = 'SELECT attach_id, physical_filename, thumbnail, topic_image


Найти

Код: Выделить всё

                     phpbb_unlink($row['physical_filename'], 'file');


Вставить после найденного

Код: Выделить всё

                     if ($row['topic_image'])
                     {
                        phpbb_unlink($row['physical_filename'], 'topic_image');
                     }


Найти

Код: Выделить всё

                     'poster_id'         => $user->data['user_id'],


Вставить после найденного

Код: Выделить всё

                     'topic_image'      => ($allow_topic_image && (strpos($filedata['mimetype'], 'image') === 0)) ? 1 : 0,


Найти (эта правка у меня оказалась выше предыдущей в том же списке).

Код: Выделить всё

                  'real_filename'   => $filedata['real_filename'],


Вставить после найденного

Код: Выделить всё

                  'mimetype'      => $filedata['mimetype'],


Найти

Код: Выделить всё

                     'real_filename'   => $filedata['real_filename'],


Вставить после найденного

Код: Выделить всё

                     'mimetype'      => $filedata['mimetype'],


Найти

Код: Выделить всё

         // Get the attachment data, based on the poster id...
         $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment


Заменить найденное на

Код: Выделить всё

         // Get the attachment data, based on the poster id...
         $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment, mimetype


Найти

Код: Выделить всё

      {
         $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment


Заменить найденное на

Код: Выделить всё

      {
         $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment, mimetype


Открыть posting.php
Найти

Код: Выделить всё

   // Do not change to SELECT *
   $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename


Заменить найденное на

Код: Выделить всё

   // Do not change to SELECT *
   $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename, mimetype


Найти

Код: Выделить всё

            'topic_time_limit'   => 0,


Вставить после найденного

Код: Выделить всё

            'topic_image_id'   => 0,


Найти

Код: Выделить всё

   $post_data['topic_time_limit']   = request_var('topic_time_limit', (($mode != 'post') ? (int) $post_data['topic_time_limit'] : 0));


Вставить после найденного

Код: Выделить всё

   if (($config['img_max_topic_image_width'] > 0 && $config['img_max_topic_image_height'] > 0) && ($post_data['forum_allow_topic_image'] == 1 && $auth->acl_get('f_topic_image', $forum_id)) && ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id'])))
   {
      $topic_image_id_default = ($mode != 'post') ? (int) $post_data['topic_image_id'] : 0;
      $topic_image_id = request_var('topic_image_id', $topic_image_id_default);
      if ($topic_image_id)
      {
         $post_data['topic_image_id'] = $topic_image_id_default;
         foreach($message_parser->attachment_data as $att_arr)
         {
            if (($att_arr['attach_id'] == $topic_image_id) && (strpos($att_arr['mimetype'], 'image') === 0)) $post_data['topic_image_id'] = $topic_image_id;
         }
      }
      else
      {
         $post_data['topic_image_id'] = 0;
      }
   }


Найти

Код: Выделить всё

   $message_parser->parse_attachments('fileupload', $mode, $forum_id, $submit, $preview, $refresh);


Заменить найденное на

Код: Выделить всё

   $message_parser->parse_attachments('fileupload', $mode, $forum_id, $submit, $preview, $refresh, false , true);


Найти

Код: Выделить всё

            'topic_time_limit'      => (int) $post_data['topic_time_limit'],


Вставить после найденного

Код: Выделить всё

            'topic_image_id'      => (int) $post_data['topic_image_id'],


Найти

Код: Выделить всё

   'S_FORM_ENCTYPE'         => $form_enctype,


Вставить после найденного

Код: Выделить всё

   'S_ALLOW_TOPICS_IMAGES'      => ($config['img_max_topic_image_width'] > 0 && $config['img_max_topic_image_height'] > 0) && ($post_data['forum_allow_topic_image'] == 1 && $auth->acl_get('f_topic_image', $forum_id)) && ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id'])),
   'U_PREVIEW_TOPIC_IMAGE'      => "{$phpbb_root_path}download/file.$phpEx?t=2&amp;id=",
   'S_TOPIC_IMAGE_MW'         => ($config['img_max_topic_image_width']) ? $config['img_max_topic_image_width'] : 150,
   'S_TOPIC_IMAGE_MH'         => ($config['img_max_topic_image_height']) ? $config['img_max_topic_image_height'] : 100,
   'S_TOPIC_IMAGE_ID'         => $post_data['topic_image_id'],


Отрыть viewforum.php
Найти

Код: Выделить всё

$sql_approved = ($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND t.topic_approved = 1';


Вставить перед найденнным

Код: Выделить всё

if ($config['allow_attachments'] && $auth->acl_get('f_download', $forum_id))
{
   $sql_array['LEFT_JOIN'][] = array('FROM' => array(ATTACHMENTS_TABLE => 'a'), 'ON' => 'a.attach_id = t.topic_image_id AND a.topic_id = t.topic_id');
   $sql_array['SELECT'] .= ', a.topic_image';
}


Найти

Код: Выделить всё

   'S_VIEWFORUM'         => true,


Вставить после найденного

Код: Выделить всё

   'S_ALLOW_TOPICS_IMAGES'   => ($config['img_max_topic_image_width'] > 0 && $config['img_max_topic_image_height'] > 0) && $forum_data['forum_allow_topic_image'] == 1,
   'S_TOPIC_IMAGE_MW'      => (($config['img_max_topic_image_width']) ? $config['img_max_topic_image_width'] : 150) + 8,


Найти

Код: Выделить всё

   $s_type_switch = 0;


Заменить найденное на

Код: Выделить всё

   $s_type_switch = $ti_cnt = 0;


Найти

Код: Выделить всё

      // Send vars to template
      $template->assign_block_vars('topicrow', array(


Вставить перед найденным

Код: Выделить всё

      if ($row['topic_image_id'] && $row['topic_image']) $ti_cnt++;


Найти

Код: Выделить всё

         'TOPIC_TYPE'      => $topic_type,


Вставить после найденного

Код: Выделить всё

         'TOPIC_IMAGE_LINK'   => ($row['topic_image_id'] && $row['topic_image']) ? "{$phpbb_root_path}download/file.$phpEx?t=2&amp;id={$row['topic_image_id']}" : '',


Найти

Код: Выделить всё

      unset($rowset[$topic_id]);
   }


Вставить после найденного

Код: Выделить всё

   $template->assign_vars(array(
      'S_TOPICS_WITH_IMAGES'      => $ti_cnt,
   ));


языковые правки en
Открыть language\en\acp\board.php
Найти

Код: Выделить всё

   'MAX_POST_URLS'               => 'Maximum links per post',


Вставить перед найденным

Код: Выделить всё

   'MAX_TOPIC_IMG_HEIGHT'         => 'Maximum topic image height',
   'MAX_TOPIC_IMG_HEIGHT_EXPLAIN'   => 'Set to 0 for disable this function',
   'MAX_TOPIC_IMG_WIDTH'         => 'Maximum topic image width',
   'MAX_TOPIC_IMG_WIDTH_EXPLAIN'   => 'Set to 0 for disable this function',


Открыть language\en\acp\forums.php
Найти

Код: Выделить всё

$lang = array_merge($lang, array(


Вставить после найденного

Код: Выделить всё

   'ALLOW_TOPICS_IMAGES'         => 'Topic images',
   'ALLOW_TOPICS_IMAGES_EXPLAIN'   => 'Enable topic images',


Открыть language\en\acp\permissions_phpbb.php
Найти

Код: Выделить всё

   'acl_f_sticky'      => array('lang' => 'Can post stickies', 'cat' => 'post'),


Вставить после найденного

Код: Выделить всё

   'acl_f_topic_image'   => array('lang' => 'Can set topic images', 'cat' => 'post'),


Открыть language\en\posting.php
Найти

Код: Выделить всё

$lang = array_merge($lang, array(


Вставить после найденного

Код: Выделить всё

   'DELETE_TOPIC_IMAGE'      => 'Do not use',
   'SET_TOPIC_IMAGE'         => 'Use as topic image',


языковые правки ru
Открыть language\ru\acp\board.php
Найти

Код: Выделить всё

   'MAX_POST_URLS'               => 'Максимальное количество ссылок в сообщении',


Вставить перед найденным

Код: Выделить всё

   'MAX_TOPIC_IMG_HEIGHT'         => 'Максимальная высота изображения темы',
   'MAX_TOPIC_IMG_HEIGHT_EXPLAIN'   => 'Введите 0 для отключения функции',
   'MAX_TOPIC_IMG_WIDTH'         => 'Максимальная ширина изображения темы',
   'MAX_TOPIC_IMG_WIDTH_EXPLAIN'   => 'Введите 0 для отключения функции',


Открыть language\ru\acp\forums.php
Найти

Код: Выделить всё

$lang = array_merge($lang, array(


Вставить после найденного

Код: Выделить всё

   'ALLOW_TOPICS_IMAGES'         => 'Изображения тем',
   'ALLOW_TOPICS_IMAGES_EXPLAIN'   => 'Включить отображение изображений, опубликованных в первом сообщении.',


Открыть language\ru\acp\permissions_phpbb.php
Найти

Код: Выделить всё

   'acl_f_sticky'      => array('lang' => 'Может прилеплять темы', 'cat' => 'post'),


Вставить после найденного

Код: Выделить всё

   'acl_f_topic_image'   => array('lang' => 'Может назначать изображения темам', 'cat' => 'post'),


Открыть language\ru\posting.php
Найти

Код: Выделить всё

$lang = array_merge($lang, array(


Вставить после найденного

Код: Выделить всё

   'DELETE_TOPIC_IMAGE'      => 'Не использовать',
   'SET_TOPIC_IMAGE'         => 'Использовать как изображение темы',


правки для стиля prosilver
Открыть styles\prosilver\imageset\en\imageset.cfg
Найти

Код: Выделить всё

img_button_topic_reply = button_topic_reply.gif*25*96


Вставить после найденного

Код: Выделить всё

img_topic_image_no_photo = no-photo.gif*48*48


Открыть styles\prosilver\imageset\ru\imageset.cfg
Найти

Код: Выделить всё

img_button_topic_reply = button_topic_reply.gif*48*48


Вставить после найденного

Код: Выделить всё

img_topic_image_no_photo = no-photo.gif*25*94


Открыть styles\prosilver\template\posting_editor.html
Найти

Код: Выделить всё

         <fieldset class="fields2">


Заменить найденное на

Код: Выделить всё

         <!-- IF S_ALLOW_TOPICS_IMAGES -->
         <script type="text/javascript">
         // <![CDATA[
            var _topic_image_preview = "{U_PREVIEW_TOPIC_IMAGE}";
            var _topic_image_mw = "{S_TOPIC_IMAGE_MW}";
            var _topic_image_mh = "{S_TOPIC_IMAGE_MH}";
            function getElementsByClassName(classname,node){if(!node)node=document.getElementsByTagName("body")[0];var a=[];var re=new RegExp('\\b'+classname+'\\b');var els=node.getElementsByTagName("*");for(var i=0,j=els.length;i<j;i++)if(re.test(els[i].className))a.push(els[i]);return a;}
            function ti_set_selection(obj, n) {
               var _rows = document.getElementById("atts_list").getElementsByTagName("dl");
               for (i = 0; i < _rows.length; i++) {
                  _rows[i].className = "topic_image_row_hidden";
                  _rows[i].getElementsByTagName("dd")[0].style.marginLeft = 0;
               }
               
               var _btns = getElementsByClassName("set_topic_image", document.getElementById("atts_list"));
               for (i = 0; i < _btns.length; i++) _btns[i].style.display = "inline";
               if (obj) {
                  obj = obj.parentNode.parentNode.parentNode.parentNode;
                  obj.className = "topic_image_row";
                  
                  var obj2 = obj.getElementsByTagName("dt")[0];
                  obj2.innerHTML = '<div class="topic_image_preview" style="width:'+_topic_image_mw+'px;height:'+_topic_image_mh+'px"><img src="'+_topic_image_preview+n+'" /></div><input type="button" style="margin-top:2px" value="{L_DELETE_TOPIC_IMAGE}" class="button2" onclick="ti_set_selection(null, 0);this.style.display='+"'"+'none'+"'"+';return false;" />';
                  obj2.style.width = (_topic_image_mw)+'px';
                  
                  var obj2 = obj.getElementsByTagName("dd")[0];
                  obj2.style.marginLeft = (parseInt(_topic_image_mw)+15)+'px';
               }
               obj = document.getElementById("topic_image_id");
               if (obj) obj.value = n;
               return false;
            }
         // ]]>
         </script>
         <!-- ENDIF -->
         <fieldset id="atts_list" class="fields2">


Найти

Код: Выделить всё

         <!-- BEGIN attach_row -->


Вставить после найденного

Код: Выделить всё

         <!-- IF S_ALLOW_TOPICS_IMAGES --><dl class="topic_image_row_hidden"><dt class="_tir">
         </dt><dd class="_tir"><!-- ENDIF -->


Найти

Код: Выделить всё

               <input type="submit" name="delete_file[{attach_row.ASSOC_INDEX}]" value="{L_DELETE_FILE}" class="button2" />


Вставить после найденного

Код: Выделить всё

               <!-- IF S_ALLOW_TOPICS_IMAGES and attach_row.S_IMAGE --><script type="text/javascript">/*<![CDATA[*/document.write('<br /><input type="button" style="margin-top:4px" value="{L_SET_TOPIC_IMAGE}" class="set_topic_image button2"<!-- IF attach_row.ATTACH_ID eq S_TOPIC_IMAGE_ID --> id="default_ropic_image"<!-- ENDIF --> onclick="ti_set_selection(this, {attach_row.ATTACH_ID});this.style.display='+"'"+'none'+"'"+';return false;" />');/*]]>*/</script><!-- ENDIF -->


Найти

Код: Выделить всё

         <!-- END attach_row -->


Вставить перед найденным

Код: Выделить всё

         <!-- IF S_ALLOW_TOPICS_IMAGES --></dd></dl>
            <!-- IF attach_row.ATTACH_ID eq S_TOPIC_IMAGE_ID --><script type="text/javascript">/*<![CDATA[*/var obj = document.getElementById('default_ropic_image');ti_set_selection(obj, {S_TOPIC_IMAGE_ID});obj.style.display = "none";/*]]>*/</script><!-- ENDIF -->
         <!-- ENDIF -->


Найти

Код: Выделить всё

         {S_HIDDEN_FIELDS}


Вставить после найденного

Код: Выделить всё

         <input type="hidden" name="topic_image_id" id="topic_image_id" value="{S_TOPIC_IMAGE_ID}" />


Открыть styles\prosilver\template\viewforum_body.html
Найти

Код: Выделить всё

            <dt<!-- IF topicrow.TOPIC_ICON_IMG and S_TOPIC_ICONS --> style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF --> title="{topicrow.TOPIC_FOLDER_IMG_ALT}"><!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a>


Заменить найденное на

Код: Выделить всё

      <dt<!-- IF topicrow.TOPIC_ICON_IMG and S_TOPIC_ICONS --> style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF --> title="{topicrow.TOPIC_FOLDER_IMG_ALT}"><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES --><span style="width:{S_TOPIC_IMAGE_MW}px; float:left" class="topic_image<!-- IF topicrow.TOPIC_IMAGE_LINK --> spinning<!-- ENDIF -->"><a href="{topicrow.U_VIEW_TOPIC}"><img src="<!-- IF topicrow.TOPIC_IMAGE_LINK -->{topicrow.TOPIC_IMAGE_LINK}"<!-- ELSE -->./images/spacer.gif" class="no-photo"<!-- ENDIF --> alt="{topicrow.TOPIC_TITLE}" /></a></span><!-- ENDIF --><!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a>


Открыть styles\prosilver\theme\colours.css
Найти

Код: Выделить всё

input.disabled {
   color: #666666;
}


Вставить после найденного

Код: Выделить всё

.topic_image_row, span.topic_image {border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;background-color:#E6EFF5;border:1px solid #BBCFDC}
.topic_image_row dt._tir {text-align:center;padding:0 5px;width:160px}
.topic_image_row dd._tir {margin-left:166px}
.topic_image_row .dashed {display:none}
.topic_image_row_hidden dt._tir {display:none}
.topic_image_row_hidden dd._tir {margin-left:0}
div.topic_image_preview, span.spinning {background:#E6EFF5 url('{T_THEME_PATH}/images/wait.gif') no-repeat center center}
span.topic_image {padding:3px;margin-right:4px;float:left;text-align:center}
img.no-photo {background:transparent url('{IMG_TOPIC_IMAGE_NO_PHOTO_SRC}') no-repeat center center;width:{IMG_TOPIC_IMAGE_NO_PHOTO_WIDTH}px;height:{IMG_TOPIC_IMAGE_NO_PHOTO_HEIGHT}px}


правки для стиля subsilver2
для корректной работы с этим стилем надо загрузить содержимое папки root этого стиля туда же, куда был загружен основной мод.
папка root этого стиля находится в папке contrib/Topic_image_0.2_subsilver2/ основного мода.

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

Открыть styles\subsilver2\imageset\en\imageset.cfg
Найти

Код: Выделить всё

img_button_topic_reply = button_topic_reply.gif


Вставить после найденного

Код: Выделить всё

img_topic_image_no_photo = no-photo.gif*48*48


Открыть styles\subsilver2\imageset\ru\imageset.cfg
Найти

Код: Выделить всё

img_button_topic_reply = button_topic_reply.gif


Вставить после найденного

Код: Выделить всё

img_topic_image_no_photo = no-photo.gif*48*48


Открыть styles\subsilver2\template\posting_attach_body.html
Найти

Код: Выделить всё

   <!-- BEGIN attach_row -->


Вставить перед найденным

Код: Выделить всё

   <!-- IF S_ALLOW_TOPICS_IMAGES -->
   <script type="text/javascript">
   // <![CDATA[
      var _topic_image_preview = "{U_PREVIEW_TOPIC_IMAGE}";
      var _topic_image_mw = "{S_TOPIC_IMAGE_MW}";
      var _topic_image_mh = "{S_TOPIC_IMAGE_MH}";
      function getElementsByClassName(classname,node){if(!node)node=document.getElementsByTagName("body")[0];var a=[];var re=new RegExp('\\b'+classname+'\\b');var els=node.getElementsByTagName("*");for(var i=0,j=els.length;i<j;i++)if(re.test(els[i].className))a.push(els[i]);return a;}
      function ti_set_selection(obj, n) {
         var _rows = getElementsByClassName("topic_image_row");
         for (i = 0; i < _rows.length; i++) _rows[i].className = "topic_image_row_hidden";
         
         var _btns = getElementsByClassName("set_topic_image");
         for (i = 0; i < _btns.length; i++) _btns[i].style.display = "inline";
         if (obj) {
            obj = obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling; /*O_o*/
            if (obj.nodeType == 3) obj = obj.previousSibling;
            obj.className = "topic_image_row";
            
            var obj2 = obj.getElementsByTagName("td")[0];
            obj2.innerHTML = '<img src="'+_topic_image_preview+n+'" /><br /><input type="button" style="margin-top:2px" value="{L_DELETE_TOPIC_IMAGE}" class="button2" onclick="ti_set_selection(null, 0);this.style.display='+"'"+'none'+"'"+';return false;" />';
            obj2.style.height = (_topic_image_mh)+'px';
         }
         obj = document.getElementById("topic_image_id");
         if (obj) obj.value = n;
         return false;
      }
   // ]]>
   </script>
   <!-- ENDIF -->


Найти

Код: Выделить всё

      <tr>
         <td class="row1"><b class="genmed">{L_FILE_COMMENT}</b></td>


Вставить перед найденным

Код: Выделить всё

      <tr class="topic_image_row_hidden">
         <td class="topic_image spinning" colspan="2"></td>
      </tr>


Найти

Код: Выделить всё

                     <td><input class="btnlite" type="submit" style="width:150px" name="delete_file[{attach_row.ASSOC_INDEX}]" value="{L_DELETE_FILE}" /></td>
                  </tr>


Вставить после найденного

Код: Выделить всё

                  <!-- IF S_ALLOW_TOPICS_IMAGES and attach_row.S_IMAGE --><script type="text/javascript">/*<![CDATA[*/document.write('<tr><td><input type="button" value="{L_SET_TOPIC_IMAGE}" class="set_topic_image btnlite"<!-- IF attach_row.ATTACH_ID eq S_TOPIC_IMAGE_ID --> id="default_ropic_image"<!-- ENDIF --> onclick="ti_set_selection(this, {attach_row.ATTACH_ID});this.style.display='+"'"+'none'+"'"+';return false;" /></td></tr>');/*]]>*/</script><!-- ENDIF -->


Найти

Код: Выделить всё

   <!-- END attach_row -->


Вставить перед найденным

Код: Выделить всё

      <!-- IF S_ALLOW_TOPICS_IMAGES and (attach_row.ATTACH_ID eq S_TOPIC_IMAGE_ID) --><script type="text/javascript">/*<![CDATA[*/var obj = document.getElementById('default_ropic_image');ti_set_selection(obj, {S_TOPIC_IMAGE_ID});obj.style.display = "none";/*]]>*/</script><!-- ENDIF -->


Открыть styles\subsilver2\template\posting_body.html
Найти

Код: Выделить всё

   <td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}


Вставить после найденного

Код: Выделить всё

      <input type="hidden" name="topic_image_id" id="topic_image_id" value="{S_TOPIC_IMAGE_ID}" />


Открыть styles\subsilver2\template\viewforum_body.html
Найти

Код: Выделить всё

         <td class="cat" colspan="<!-- IF S_TOPIC_ICONS -->7<!-- ELSE -->6<!-- ENDIF -->">


Заменить найденное на

Код: Выделить всё

         <td class="cat" colspan="<!-- IF S_TOPIC_ICONS --><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->8<!-- ELSE -->7<!-- ENDIF --><!-- ELSE --><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->7<!-- ELSE -->6<!-- ENDIF --><!-- ENDIF -->">


Найти

Код: Выделить всё

         <!-- IF S_TOPIC_ICONS -->
            <th colspan="3">&nbsp;{L_TOPICS}&nbsp;</th>
         <!-- ELSE -->
            <th colspan="2">&nbsp;{L_TOPICS}&nbsp;</th>
         <!-- ENDIF -->


Заменить найденное на

Код: Выделить всё

         <!-- IF S_TOPIC_ICONS -->
            <th colspan="<!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->4<!-- ELSE -->3<!-- ENDIF -->">&nbsp;{L_TOPICS}&nbsp;</th>
         <!-- ELSE -->
            <th colspan="<!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->3<!-- ELSE -->2<!-- ENDIF -->">&nbsp;{L_TOPICS}&nbsp;</th>
         <!-- ENDIF -->


Найти

Код: Выделить всё

         <!-- IF topicrow.S_TOPIC_TYPE_SWITCH eq 1 -->
            <tr>
               <td class="row3" colspan="<!-- IF S_TOPIC_ICONS -->7<!-- ELSE -->6<!-- ENDIF -->"><b class="gensmall">{L_ANNOUNCEMENTS}</b></td>
            </tr>
         <!-- ELSEIF topicrow.S_TOPIC_TYPE_SWITCH eq 0 -->
            <tr>
               <td class="row3" colspan="<!-- IF S_TOPIC_ICONS -->7<!-- ELSE -->6<!-- ENDIF -->"><b class="gensmall">{L_TOPICS}</b></td>
            </tr>
         <!-- ENDIF -->


Заменить найденное на

Код: Выделить всё

         <!-- IF topicrow.S_TOPIC_TYPE_SWITCH eq 1 -->
            <tr>
               <td class="row3" colspan="<!-- IF S_TOPIC_ICONS --><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->8<!-- ELSE -->7<!-- ENDIF --><!-- ELSE --><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->7<!-- ELSE -->6<!-- ENDIF --><!-- ENDIF -->"><b class="gensmall">{L_ANNOUNCEMENTS}</b></td>
            </tr>
         <!-- ELSEIF topicrow.S_TOPIC_TYPE_SWITCH eq 0 -->
            <tr>
               <td class="row3" colspan="<!-- IF S_TOPIC_ICONS --><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->8<!-- ELSE -->7<!-- ENDIF --><!-- ELSE --><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->7<!-- ELSE -->6<!-- ENDIF --><!-- ENDIF -->"><b class="gensmall">{L_TOPICS}</b></td>
            </tr>
         <!-- ENDIF -->


Найти

Код: Выделить всё

               <td class="row1" width="25" align="center"><!-- IF topicrow.TOPIC_ICON_IMG --><img src="{T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}" width="{topicrow.TOPIC_ICON_IMG_WIDTH}" height="{topicrow.TOPIC_ICON_IMG_HEIGHT}" alt="" title="" /><!-- ENDIF --></td>
            <!-- ENDIF -->


Вставить после найденного

Код: Выделить всё

            <!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->
               <td style="width:{S_TOPIC_IMAGE_MW}px" class="topic_image<!-- IF topicrow.TOPIC_IMAGE_LINK --> spinning<!-- ENDIF --> row1" align="center"><a href="{topicrow.U_VIEW_TOPIC}"><img src="<!-- IF topicrow.TOPIC_IMAGE_LINK -->{topicrow.TOPIC_IMAGE_LINK}"<!-- ELSE -->./images/spacer.gif" style="width:{TOPIC_IMAGE_NO_PHOTO_W}px;height:{TOPIC_IMAGE_NO_PHOTO_H}px;background:url({TOPIC_IMAGE_NO_PHOTO}) no-repeat center center"<!-- ENDIF --> alt="{topicrow.TOPIC_TITLE}" /></a></td>
            <!-- ENDIF -->


Найти

Код: Выделить всё

            <!-- IF S_TOPIC_ICONS -->
               <td class="row1" colspan="7" height="30" align="center" valign="middle"><span class="gen"><!-- IF not S_SORT_DAYS -->{L_NO_TOPICS}<!-- ELSE -->{L_NO_TOPICS_TIME_FRAME}<!-- ENDIF --></span></td>
            <!-- ELSE -->
               <td class="row1" colspan="6" height="30" align="center" valign="middle"><span class="gen"><!-- IF not S_SORT_DAYS -->{L_NO_TOPICS}<!-- ELSE -->{L_NO_TOPICS_TIME_FRAME}<!-- ENDIF --></span></td>
            <!-- ENDIF -->


Заменить найденное на

Код: Выделить всё

            <!-- IF S_TOPIC_ICONS -->
               <td class="row1" colspan="<!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->8<!-- ELSE -->7<!-- ENDIF -->" height="30" align="center" valign="middle"><span class="gen"><!-- IF not S_SORT_DAYS -->{L_NO_TOPICS}<!-- ELSE -->{L_NO_TOPICS_TIME_FRAME}<!-- ENDIF --></span></td>
            <!-- ELSE -->
               <td class="row1" colspan="<!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->7<!-- ELSE -->6<!-- ENDIF -->" height="30" align="center" valign="middle"><span class="gen"><!-- IF not S_SORT_DAYS -->{L_NO_TOPICS}<!-- ELSE -->{L_NO_TOPICS_TIME_FRAME}<!-- ENDIF --></span></td>
            <!-- ENDIF -->


Открыть styles\subsilver2\theme\stylesheet.css
Найти

Код: Выделить всё

.username-coloured {
   font-weight: bold;
}


Вставить после найденного

Код: Выделить всё

td.topic_image {background-color:#E6EFF5;padding:3px;margin-right:4px;text-align:center}
td.spinning {background:#E6EFF5 url('./images/wait.gif') no-repeat center center}
tr.topic_image_row_hidden {display:none}
tr.topic_image_row {vertical-align:bottom;display:table-row}


Открыть viewforum.php
Найти

Код: Выделить всё

   'GOTO_PAGE_IMG'            => $user->img('icon_post_target', 'GOTO_PAGE'),


Вставить после найденного

Код: Выделить всё

   'TOPIC_IMAGE_NO_PHOTO'      => $user->img('topic_image_no_photo', '', false, '','src'),
   'TOPIC_IMAGE_NO_PHOTO_W'   => $user->img('topic_image_no_photo', '', false, '','width'),
   'TOPIC_IMAGE_NO_PHOTO_H'   => $user->img('topic_image_no_photo', '', false, '','height'),



Всё. теперь необходимо очистить кэши (тем, шаблонов, изображений). установка завершена.

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

так же мод имеет настройки вывода. вкл/выкл применения в определённых форумах и настройки миниатюры изображения в списке тем.
это настраивается в аминке по пути:
Форумы - определённый форум - настройки - изображения тем (включить). по умолчанию выключено.
Размещение сообщений - Максимальная высота/ширина изображения темы. (по умолчанию стоит 100/150)

сканы настройки прилагаются в начале страницы.

удачного применения.

p.s. если ставить строго по инструкции - багов быть не должно. запускается сразу.


оригинальная тема


если кого заинтересовало как сделан вывод модификации здесь в списке тем, то вот так (я сделал для стиля subsilver2, но, думаю, работать будет и на prosilver):

мой вывод
Вложение:
my_viewforum.png
my_viewforum.png [ 91.87 КБ | Просмотров: 3366 ] my_viewforum.png



Открыть viewforum_body.html
# никаких правок из самого мода делать не надо!

Найти

Код: Выделить всё

<!-- INCLUDE overall_header.html -->


Вставить после найденного

Код: Выделить всё

<style>
a img{
width:200px;
height:auto;
position:absolute;
margin-left:50px;
margin-top:-50px;
visibility:hidden;
}
a:hover >img{
visibility:visible;
}
</style>


это код вывода "всплывающего окна". можете его приписать отдельно у себя в стилевом файле, как

Код: Выделить всё

a img{
width:200px;
height:auto;
position:absolute;
margin-left:50px;
margin-top:-50px;
visibility:hidden;
}
a:hover >img{
visibility:visible;
}


Найти

Код: Выделить всё

<!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a><!-- ENDIF -->


Вставить перед найденным

Код: Выделить всё

                <!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES -->
                <a href="#" style="text-decoration:none;"><!-- IF topicrow.TOPIC_IMAGE_LINK --><span style="color:#32CD32;font-size:1.2em;">&nbsp;#&nbsp;</span><! -- ELSE --><!-- ENDIF --><img src="<!-- IF topicrow.TOPIC_IMAGE_LINK -->{topicrow.TOPIC_IMAGE_LINK}"<!-- ELSE -->./images/spacer.gif" style="width:{TOPIC_IMAGE_NO_PHOTO_W}px;height:{TOPIC_IMAGE_NO_PHOTO_H}px;background:url({TOPIC_IMAGE_NO_PHOTO}) no-repeat center center"<!-- ENDIF --> alt="{topicrow.TOPIC_TITLE}" style="width:{S_TOPIC_IMAGE_MW}px;border:1px solid red" class="topic_image" /></a>
                <!-- ENDIF -->


ещё немного дополнений. как я заметил в ходе эксплуатации мода - он в файле редактирования/создания темы (posting) выводит выбранное для темы сайта изображение в большом виде (видимо от настроек изображения всплывашки), что, бывает, "ломает" страницу вывода редактирования темы.
если у кого такая же проблема - её можно очень легко решить, введя жёсткие размеры в код вывода изображения.

Открыть posting_attach_body.html

В строку

Код: Выделить всё

obj2.innerHTML = '<img src="'+_topic_image_preview+n+'" />


добавить размер ширины, например так

Код: Выделить всё

obj2.innerHTML = '<img src="'+_topic_image_preview+n+'" width="100" />


то есть ширина выводимого изображения будет 100px, в не зависимости от того, что прописано в настройках.


трёхголовый белк семейства рептилоидов:
"три головы - хорошо, на как же трудно придти к согласию..."
Topic Image,phpbb 3,форум,картинка для темы,постер
Не в сети
(Андрей)  
2023-09-13 
Администратор
Аватара пользователя

Стаж: 8 лет 6 месяцев 27 дней
Сообщения: 1223
Откуда: здешние мы


Стиль: subsilver2


Репутация: 11


Russia

Тиц и PR

перейти на сайт пользователя
Найти темы пользователя


похоже, что выставленные максимальные значения изображений в "размещении сообщений" в админке для этого мода являются своего рода ресайзером, то есть сжимают изображения до этих параметров при загрузке.
я столкнулся с этим когда заметил "расплывчатость" изображений вывода в списке тем. вылечил очень просто: поставил в админке большие параметры максимума (700 по ширине и 900 по высоте) и прописал жёсткие параметры вывода в файле viewforum_body.html.


трёхголовый белк семейства рептилоидов:
"три головы - хорошо, на как же трудно придти к согласию..."
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ Сообщений: 2 ] 

Кто сейчас на сайте:

Всего посетителей: 0, из них зарегистрированных: 0, скрытых: 0 и гостей: 0 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (122) здесь было 19 дек 2023, 12:10

Сейчас этот раздел просматривают: нет зарегистрированных пользователей и гости: 0

Часовой пояс: UTC + 2 часа



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Вы не можете защищать свои темы паролем

Найти:
Перейти:  




cron

Текущее время: 19 апр 2024, 10:11

Создано на основе phpBB® Forum Software © phpBB Group
Яндекс.Метрика

Полная версия Мобильный вид