BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
 • Просмотры: 4657
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

22 июл 2013, 14:16

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

1. В phpmyadmin выполнить (если префикс таблиц не phpbb_ - заменить на свой):

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

ALTER TABLE `phpbb_forums`
ADD  `forum_addfields` smallint(5) unsigned NOT NULL DEFAULT '0';

INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES
('ppkbb_addfields_pos', '0', 0),
('ppkbb_addfields_type', '0', 0);
если mysql версии 4.1.3 или выше

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

CREATE TABLE `phpbb_tracker_afftpl` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `addfields` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_hlp` mediumtext COLLATE utf8_bin NOT NULL,
  `addfields_br` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_br2` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_inall` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_ta` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_multi` tinyint(1) NOT NULL DEFAULT '0',
  `addfields_bbcode` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_bbcodes` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_descr` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_enable` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `addfields_def` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_checkas` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_title` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `addfields_alias` mediumtext COLLATE utf8_bin NOT NULL,
  `addfields_skip` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_exists` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `addfields` (`addfields`),
  KEY `addfields_enable` (`addfields_enable`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `phpbb_tracker_afsets` (
  `id` mediumint(8) NOT NULL AUTO_INCREMENT,
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `af_name` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '',
  `af_count` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_order` smallint(3) unsigned NOT NULL DEFAULT '0',
  `af_required` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `af_id` (`af_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `phpbb_tracker_aftpl` (
  `id` smallint(5) NOT NULL AUTO_INCREMENT,
  `af_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `af_descr` text COLLATE utf8_bin NOT NULL,
  `af_subject` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `af_data` text COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
иначе:

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

CREATE TABLE `phpbb_tracker_afftpl` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `addfields` varchar(64) binary NOT NULL DEFAULT '',
  `addfields_hlp` mediumtext NOT NULL,
  `addfields_br` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_br2` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_inall` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_ta` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_multi` tinyint(1) NOT NULL DEFAULT '0',
  `addfields_bbcode` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_bbcodes` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_descr` varchar(128) binary NOT NULL DEFAULT '',
  `addfields_enable` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `addfields_def` varchar(128) binary NOT NULL DEFAULT '',
  `addfields_checkas` varchar(64) binary NOT NULL DEFAULT '',
  `addfields_title` varchar(255) binary NOT NULL DEFAULT '',
  `addfields_alias` mediumtext NOT NULL,
  `addfields_skip` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `addfields_exists` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `addfields` (`addfields`),
  KEY `addfields_enable` (`addfields_enable`)
) TYPE=MyISAM ;

CREATE TABLE `phpbb_tracker_afsets` (
  `id` mediumint(8) NOT NULL AUTO_INCREMENT,
  `af_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `af_name` varchar(32) binary NOT NULL DEFAULT '',
  `af_count` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `af_order` smallint(3) unsigned NOT NULL DEFAULT '0',
  `af_required` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `af_id` (`af_id`)
) TYPE=MyISAM ;

CREATE TABLE `phpbb_tracker_aftpl` (
  `id` smallint(5) NOT NULL AUTO_INCREMENT,
  `af_name` varchar(64) binary NOT NULL,
  `af_descr` text NOT NULL,
  `af_subject` varchar(255) binary NOT NULL DEFAULT '',
  `af_data` text NOT NULL,
  PRIMARY KEY (`id`)
) TYPE=MyISAM ;
2. Скачать архив, распаковать, заменить файлы форума файлами из директории /root/.
phpbb3_minimods_bb3addfields2.zip
3. Переделать файлы:

adm/style/acp_board.html перед

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

<!-- IF S_AUTH -->
	<!-- BEGIN auth_tpl -->
добавить

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

<!-- IF S_ADDFIELDS_INC --><!-- INCLUDE acp_tracker_addfields.html --><!-- ENDIF -->
<!-- IF S_ADDFIELD_INC --><!-- INCLUDE acp_tracker_addfield.html --><!-- ENDIF -->
adm/style/acp_forums.html перед

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

	<!-- IF S_CAN_COPY_PERMISSIONS -->
		<dl>
добавить

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

	<dl>
		<dt><label for="forum_addfields">{L_FORUM_ADDFIELDS}:</label><br /><span>{L_FORUM_ADDFIELDS_EXPLAIN}</span></dt>
		<dd><select id="forum_addfields" name="forum_addfields"><option value="0">{L_NO_ADDFIELDS}</option>{S_ADDFIELDS_OPTIONS}</select></dd>
	</dl>
includes/acp/acp_board.php перед

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

			case 'message':
				$display_vars = array(
добавить

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

			case 'addfields':
				include_once("$phpbb_root_path/tracker/include/includes/acp/acp_board_add1_addfields.{$phpEx}");
			break;

			case 'addfield':
				include_once("$phpbb_root_path/tracker/include/includes/acp/acp_board_add1_addfield.{$phpEx}");
			break;
перед

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

						'legend2'				=> 'POSTING',
						'bump_type'				=> false,
добавить

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

						'ppkbb_addfields_type'		=> array('lang' => 'TRACKER_ADDFIELDS_TYPE', 'validate' => 'string', 'type' => 'text:1:1', 'method' => false, 'explain' => true,),
						'ppkbb_addfields_pos'		=> array('lang' => 'TRACKER_ADDFIELDS_POS', 'validate' => 'int:0', 'type' => 'text:1:1', 'method' => false, 'explain' => true,),
includes/acp/acp_forums.php после

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

						'forum_password_confirm'=> request_var('forum_password_confirm', '', true),
						'forum_password_unset'	=> request_var('forum_password_unset', false),
добавить

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

						'forum_addfields'	=> request_var('forum_addfields', 0),
после

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

							'forum_password'		=> '',
							'forum_password_confirm'=> '',
добавить

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

							'forum_addfields' => 0,
перед

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

				$template->assign_vars(array(
					'S_EDIT_FORUM'		=> true,
добавить

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

				$af_selects='';

				$sql="SELECT * FROM ".TRACKER_ADDFIELDS_TPL."";
				$result=$db->sql_query($sql);
				while($row=$db->sql_fetchrow($result))
				{
					$af_select=@$forum_data['forum_addfields']==$row['id'] ? ' selected="selected"' : '';
					$af_selects.='<option value="'.$row['id'].'"'.$af_select.'>'.$row['af_name'].'</option>';
				}
				$db->sql_freeresult($result);
после

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

					'S_CAN_COPY_PERMISSIONS'	=> ($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))) ? true : false,
добавить

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

					'S_ADDFIELDS_OPTIONS' => $af_selects,
includes/acp/info/acp_board.php после

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

				'load'		=> array('title' => 'ACP_LOAD_SETTINGS', 'auth' => 'acl_a_server', 'cat' => array('ACP_SERVER_CONFIGURATION')),
добавить

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

				'addfields'		=> array('title' => 'ACP_ADDFIELDS_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_TRACKER')),
				'addfield'		=> array('title' => 'ACP_ADDFIELD_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_TRACKER')),
includes/constants.php после

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

// Additional tables
добавить

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

define('TRACKER_ADDFIELDS_TPL',			$table_prefix . 'tracker_aftpl');
define('TRACKER_ADDFIELD_TPL',			$table_prefix . 'tracker_afftpl');
define('TRACKER_ADDFIELDS_SETS',			$table_prefix . 'tracker_afsets');
includes/functions.php перед

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

/**
* Determine whether we are approaching the maximum execution time. Should be called once
добавить

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

function get_forum_addfields($id, $forum_astracker=0)
{
	global $db, $user, $torrent_addfield;

	$lines=array();
	$id=intval($id);
	if($id)
	{
		$sql="SELECT afs.af_name, afs.af_required, afs.af_count, aft.af_descr, aft.af_subject FROM ".TRACKER_ADDFIELDS_SETS." afs, ".TRACKER_ADDFIELDS_TPL." aft WHERE afs.af_id='{$id}' AND afs.af_id=aft.id ORDER BY af_order";
		$result=$db->sql_query($sql);
		while($row=$db->sql_fetchrow($result))
		{
			$lines[]=$row['af_name'];
			if($row['af_required'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_REQ'][$row['af_name']]=$row['af_required'];
			}
			if($row['af_count'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_COUNT'][$row['af_name']]=$row['af_count'];
			}
			if(!isset($torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']) && $row['af_descr']/* && $forum_astracker*/)
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']=$row['af_descr'];
			}
			if(!isset($torrent_addfield['TRACKER_FORUM_ADDFIELDS_SUBJSTRING']) && $row['af_subject']/* && $forum_astracker*/)
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_SUBJSTRING']=$row['af_subject'];
			}
		}
		$db->sql_freeresult($result);
	}
	if(/*$forum_astracker && */@$torrent_addfield['TRACKER_FORUM_ADDFIELDS_INALL'])
	{
		foreach($torrent_addfield['TRACKER_FORUM_ADDFIELDS_INALL'] as $k=>$v)
		{
			if($v && !in_array($k, $lines) && @$torrent_addfield['TRACKER_FORUM_ADDFIELDS'][$k])
			{
				$lines[]=$k;
			}
		}
	}

	isset($torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']) ? '' : $torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR']='';

	return $lines;
}

function get_torrent_addfield()
{
	global $db, $user, $cache;

	$torrent_addfield=array();

	//$user->add_lang('mods/ppkbb3cker_addfields');

	$torrent_addfield=$cache->get('_ppkbb3cker_addfield_cache');

	if(!$torrent_addfield)
	{
		$sql='SELECT * FROM ' . TRACKER_ADDFIELD_TPL . " WHERE addfields_enable='1'";
		$result=$db->sql_query($sql/*, 86400*/);
		while($row=$db->sql_fetchrow($result))
		{
			$torrent_addfield['TRACKER_FORUM_ADDFIELDS'][$row['addfields']]=$row['addfields_descr'];
			if($row['addfields_hlp']!='')
			{
				$addfields_hlp=array_map('trim', explode("\n", $row['addfields_hlp']));
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_HLP'][$row['addfields']]=sizeof($addfields_hlp) > 1  ? $addfields_hlp : trim($row['addfields_hlp']);
			}
			if($row['addfields_def']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_DEF'][$row['addfields']]=$row['addfields_def'];
			}
			if($row['addfields_br']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BR'][$row['addfields']]=$row['addfields_br'];
			}
			if($row['addfields_br2']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BR2'][$row['addfields']]=$row['addfields_br2'];
			}
			if($row['addfields_checkas']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_CHECKAS'][$row['addfields']]=$row['addfields_checkas'];
			}
			if($row['addfields_inall'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_INALL'][$row['addfields']]=$row['addfields_inall'];
			}
			if($row['addfields_ta'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_TA'][$row['addfields']]=$row['addfields_ta'];
			}
			if($row['addfields_multi'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_MULTI'][$row['addfields']]=$row['addfields_multi'];
			}
			if($row['addfields_bbcode']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BBCODE'][$row['addfields']]=$row['addfields_bbcode'];
			}
			if($row['addfields_bbcodes']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_BBCODES'][$row['addfields']]=$row['addfields_bbcodes'];
			}
			if($row['addfields_title']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_TITLE'][$row['addfields']]=$row['addfields_title'];
			}
			if($row['addfields_alias']!='')
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_ALIAS'][$row['addfields']]=array_map('trim', explode("\n", $row['addfields_alias']));
			}
			if($row['addfields_skip'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_SKIP'][$row['addfields']]=$row['addfields_skip'];
			}
			if($row['addfields_exists'])
			{
				$torrent_addfield['TRACKER_FORUM_ADDFIELDS_EXISTS'][$row['addfields']]=$row['addfields_exists'];
			}

		}
		$db->sql_freeresult($result);
	}
	$cache->put('_ppkbb3cker_addfield_cache', $torrent_addfield);

	return $torrent_addfield;
}
ищем

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

function my_int_val($v=0)
если ничего не нашлось, перед

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

function get_forum_addfields($id, $forum_astracker=0)
добавить

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

function my_int_val($v=0)
{
	if(!$v || $v < 0)
	{
		return 0;
	}

	return @number_format($v+0, 0, '', '');
}
ищем

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

function my_float_val($v=0, $n=3)
если ничего не нашлось, перед

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

function get_forum_addfields($id, $forum_astracker=0)
добавить

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

function my_float_val($v=0, $n=3)
{
	if(!$v || $v < 0)
	{
		return "0.".str_repeat('0', $n);
	}

	return @number_format($v+0, $n, '.', '');
}
language/ru/acp/common.php в самом конце перед
добавить

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

	'ACP_ADDFIELDS_SETTINGS'				=> 'Шаблоны дополнительных полей',
	'ACP_ADDFIELD_SETTINGS'				=> 'Дополнительные поля',
	'TRACKER_ADDFIELDS_TYPE'	=> 'Дополнительные поля',
	'TRACKER_ADDFIELDS_TYPE_EXPLAIN'	=> 'Значение 0 - отображать дополнительные поля до формы сообщения, значение 1 - отображать дополнительные поля вместе с формой сообщения (<font color="#FF0000">при значении опции равным 1 будет невозможно определять дополнительные поля как обязательные для заполнения</font>)',
	'TRACKER_ADDFIELDS_POS'	=> 'Положение дополнительных полей',
	'TRACKER_ADDFIELDS_POS_EXPLAIN'	=> 'Значение 1 - добавлять значения дополнительных полей в конец сообщения, значение 0 - в начало сообщения (будет действовать только для вновь добавленных/отредактированных сообщений)',
language/ru/acp/forums.php в самом конце перед
добавить

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

	'FORUM_ADDFIELDS'						=> 'Дополнительные поля для форума',
	'FORUM_ADDFIELDS_EXPLAIN'						=> 'Отображаются при добавлении новой темы',
	'COPY_ADDFIELDS'=> 'Копировать дополнительные поля форума из',
	'COPY_ADDFIELDS_EXPLAIN'=> 'Если вы выбрали копирование дополнительных полей, форуму будут присвоены те же дополнительные поля, что и выбранному здесь. Все ранее установленные дополнительные поля к этому форуму будут при этом заменены. Если форум не выбран, будут сохранены текущие дополнительные поля.',
	'NO_ADDFIELDS'=> 'Без дополнительных полей',
	'NO_ADDFIELDS2'=> 'Не копировать дополнительные поля',
language/ru/common.php в самом конце перед
добавить

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

	'TRACKER_ADDFIELDS'	=> 'Дополнительные поля',
	'TRACKER_ADDFIELDS_EXAMPLE'	=> 'Пример',
language/ru/posting.php в самом конце перед
добавить

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

	'ADDFIELDS_REQUIRED'=>'Заполните дополнительные поля',
	'ADDFIELDS_REQUIRED_FIELD'=>'поле',
	'ADDFIELDS_REQUIRED_EXISTS'=>'поле <u>%s</u> может содержать вариант только из предложенных',
	'ADDFIELDS_REQUIRED_FIELDS'=>'<u>Подчёркнутые</u> поля являются обязательными для заполнения, для множественных полей в (скобках) указано минимально необходимое количество полей для заполнения',
	'ADDFIELDS_REQUIRED_MIN'=>'минимум %s поля(ей) %s',
	'ADDFIELDS_CHECK_FUNCTION' => 'ошибка заполнения поля <u>%s</u>',
	'ADDFIELDS_MULTIHLP' => 'Для выбора более одного значения удерживайте нажатой клавишу <b>Ctrl</b>',
posting.php после

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

$draft_id	= request_var('d', 0);
$lastclick	= request_var('lastclick', 0);
добавить

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

$posting_page=1;
$array_addfields=array();
после

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

$result = $db->sql_query($sql);
$post_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
добавить

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

if(@$post_data['forum_addfields'])
{
	$torrent_addfield=get_torrent_addfield();
	$array_addfields=get_forum_addfields(@$post_data['forum_addfields'], 0);
}
после

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

if ($submit || $preview || $refresh)
{
добавить

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

	if($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']))
	{
		if($array_addfields)
		{
				include_once($phpbb_root_path.'tracker/include/posting_addfields2_add1.'.$phpEx);
				include_once($phpbb_root_path.'tracker/include/posting_addfields2_add2.'.$phpEx);
		}
	}
перед

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

// Start assigning vars for main posting page ...
$template->assign_vars(array(
добавить

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

$addfields_type_switch=!$submit && !$preview/* && !$config['ppkbb_addfields_type']*/ && sizeof($array_addfields) && $mode=='post' && !request_var('message', '', true) ? true : false;
$addfields_inform_place=/*!$config['ppkbb_addfields_type'] && */$config['ppkbb_addfields_type'] ? true : false;
после

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

// Start assigning vars for main posting page ...
$template->assign_vars(array(
добавить

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

	'ADDFIELDS_DESCR'					=> sizeof($array_addfields) ? $torrent_addfield['TRACKER_FORUM_ADDFIELDS_DESCR'] : '',
	'ADDFIELDS_TYPE'					=> /*!$config['ppkbb_addfields_type'] && */$config['ppkbb_addfields_type'] ? true : (/*$config['ppkbb_addfields_type'][0] ? true : */false),
	'ADDFIELDS_TYPE_SWITCH'					=> /*!$config['ppkbb_addfields_type'] && */$config['ppkbb_addfields_type'] ? false : $addfields_type_switch,
	'ADDFIELDS_INFORM_PLACE'					=> $addfields_inform_place,
перед

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

// Build custom bbcodes array
display_custom_bbcodes();
добавить

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

if($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']))
{
	if($array_addfields)
	{
			include_once($phpbb_root_path.'tracker/include/posting_addfields2_add2.'.$phpEx);
	}
}
styles/prosilver/template/posting_buttons.html после

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

	var panels = new Array('options-panel', 'attach-panel', 'poll-panel'
вставить

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

<!-- IF FORUM_ADDFIELDS -->, 'addfields-panel'<!-- ENDIF -->
styles/prosilver/template/posting_editor.html после

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

				<!-- IF S_SHOW_POLL_BOX || S_POLL_DELETE --><li id="poll-panel-tab"><a href="#tabs" onclick="subPanels('poll-panel'); return false;"><span>{L_ADD_POLL}</span></a></li><!-- ENDIF -->
добавить

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

				<!-- IF FORUM_ADDFIELDS and ADDFIELDS_TYPE --><li id="addfields-panel-tab"><a href="#tabs" onclick="subPanels('addfields-panel'); return false;"><span>{L_TRACKER_ADDFIELDS}</span></a></li><!-- ENDIF -->
styles/prosilver/template/posting_layout.html после

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

<!-- IF S_DISPLAY_PREVIEW --><!-- INCLUDE posting_preview.html --><!-- ENDIF -->
добавить

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

<!-- IF ADDFIELDS_TYPE_SWITCH and FORUM_ADDFIELDS -->
<div class="panel bg3" id="addfields-panel">
	<div class="inner"><span class="corners-top"><span></span></span>
	<h3>{L_POST_A}</h3>
	<!-- IF ADDFIELDS_DESCR -->
	<p style="width:100%;">
		<span>{ADDFIELDS_DESCR}</span>
	</p>
	<!-- ENDIF -->
	<fieldset class="fields2">
	<dl style="clear: left;">
		<dt><b>{L_TRACKER_ADDFIELDS}</b>:</dt>
		<dd><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></dd>
	</dl>
		<!-- BEGIN addfields_option -->
			<dl>
				<dt><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</dt>
				<dd>
				<!-- IF .addfields_option.fields -->
					<!-- BEGIN fields -->
						<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
						<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
						<!-- ENDIF -->
				<!-- ELSE -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
						<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
					<!-- ENDIF -->
				<!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP -->
					<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
					<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
						<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
					<!-- ELSE -->
						{addfields_option.ADDFIELD_HELP}
					<!-- ENDIF -->
				<!-- ENDIF -->
				</dd>
			</dl>
		<!-- END addfields_option -->
	</fieldset>

	<span class="corners-bottom"><span></span></span></div>
</div>
<div class="panel bg2">
	<div class="inner"><span class="corners-top"><span></span></span>
	<fieldset class="submit-buttons">
		<input type="hidden" name="addf_switch" value="1" />
		{S_HIDDEN_ADDRESS_FIELD}
		{S_HIDDEN_FIELDS}
		{S_FORM_TOKEN}
		<input type="submit" tabindex="5" id="pf_preview" name="preview" value="{L_PREVIEW}" class="button1"<!-- IF not S_PRIVMSGS --> onclick="document.getElementById('postform').action += '#preview';"<!-- ENDIF --> />&nbsp;
	</fieldset>

	<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ELSE -->
перед

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

<!-- IF S_SHOW_ATTACH_BOX --><!-- INCLUDE posting_attach_body.html --><!-- ENDIF -->
добавить

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

<!-- IF FORUM_ADDFIELDS and ADDFIELDS_TYPE -->
<div class="panel bg3" id="addfields-panel">
	<div class="inner"><span class="corners-top"><span></span></span>

	<!-- IF ADDFIELDS_DESCR -->
	<p style="width:100%;">
		<span>{ADDFIELDS_DESCR}</span>
	</p>
	<!-- ENDIF -->
	<fieldset class="fields2">
	<dl style="clear: left;">
		<dt><b>{L_TRACKER_ADDFIELDS}</b>:</dt>
		<dd><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></dd>
	</dl>
		<!-- BEGIN addfields_option -->
			<dl>
				<dt><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</dt>
				<dd>
				<!-- IF .addfields_option.fields -->
					<!-- BEGIN fields -->
						<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
						<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
						<!-- ENDIF -->
				<!-- ELSE -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
						<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
					<!-- ENDIF -->
				<!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP -->
					<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
					<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
						<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
					<!-- ELSE -->
						{addfields_option.ADDFIELD_HELP}
					<!-- ENDIF -->
				<!-- ENDIF -->
				</dd>
			</dl>
		<!-- END addfields_option -->
	</fieldset>

	<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ENDIF -->
перед

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

<!-- ENDIF -->
<!-- IF not S_PRIVMSGS -->
добавить

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

<!-- ENDIF -->
styles/subsilver2/template/posting_body.html перед

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

<!-- IF S_SHOW_TOPIC_ICONS or S_SHOW_PM_ICONS -->
добавить

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

<!-- IF ADDFIELDS_TYPE_SWITCH and FORUM_ADDFIELDS -->

<!-- ELSE -->
перед

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

<!-- IF not S_PRIVMSGS and S_DISPLAY_USERNAME -->
добавить

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

<!-- ENDIF -->
перед

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

<tr>
	<td class="row1" width="22%"><b class="genmed">{L_SUBJECT}:</b></td>
добавить

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

<!-- IF ADDFIELDS_TYPE_SWITCH and FORUM_ADDFIELDS -->
<tr>
	<td colspan="2" class="row1">
		<table cellpadding="1" width="100%">
		<!-- IF ADDFIELDS_DESCR -->
		<tr>
			<td colspan="2" class="row1"><span>{ADDFIELDS_DESCR}</span></td>
		</tr>
		<!-- ENDIF -->
		<tr>
			<td class="row1" width="22%"><b>{L_TRACKER_ADDFIELDS}</b>:</td>
			<td class="row2"><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></td>
		</tr>
		<!-- BEGIN addfields_option -->
		<tr>
			<td class="row1"><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</td>
			<td class="row2">
			<!-- IF .addfields_option.fields -->
				<!-- BEGIN fields -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
					[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
					[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
					<!-- ENDIF -->
			<!-- ELSE -->
				<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
					<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
				<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
					<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
				<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
					<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
				<!-- ENDIF -->
			<!-- ENDIF -->
			<!-- IF addfields_option.ADDFIELD_HELP -->
				<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
					<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
				<!-- ELSE -->
					{addfields_option.ADDFIELD_HELP}
				<!-- ENDIF -->
			<!-- ENDIF -->
			</td>
		</tr>
		<!-- END addfields_option -->
		</table>
	</td>
</tr>
<tr>
	<td class="cat" colspan="2" align="center">
		<input type="hidden" name="addf_switch" value="1" />
		<input class="btnlite" type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" />
	</td>
</tr>

<!-- ELSE -->
после

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

		<!-- DEFINE $CAPTCHA_TAB_INDEX = 4 -->
		<!-- INCLUDE {CAPTCHA_TEMPLATE} -->
		<!-- ENDIF -->
добавить

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

<!-- IF FORUM_ADDFIELDS and ADDFIELDS_TYPE -->
<tr>
	<th colspan="2">{L_TRACKER_ADDFIELDS}</th>
</tr>
<tr>
	<td colspan="2" class="row1">
		<table cellpadding="1" width="100%">
		<!-- IF ADDFIELDS_DESCR -->
		<tr>
			<td colspan="2" class="row1"><span>{ADDFIELDS_DESCR}</span></td>
		</tr>
		<!-- ENDIF -->
		<tr>
			<td class="row1" width="22%"><b>{L_TRACKER_ADDFIELDS}</b>:</td>
			<td class="row2"><!-- IF not ADDFIELDS_INFORM_PLACE -->{L_ADDFIELDS_REQUIRED_FIELDS}<!-- ENDIF --></td>
		</tr>
		<!-- BEGIN addfields_option -->
			<tr>
				<td class="row1"><b>{addfields_option.ADDFIELDS_NAME}</b><!-- IF addfields_option.ADDFIELDS_DESCR --> <a class="my_tt" title="{addfields_option.ADDFIELDS_DESCR}"><img src="{addfields_option.ADDFIELDS_DESCR_SRC_IMG}" /></a><!-- ENDIF -->:</td>
				<td class="row2">
				<!-- IF .addfields_option.fields -->
					<!-- BEGIN fields -->
						<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						[{addfields_option.fields.ADDFIELD_I}] <textarea id="af_{addfields_option.fields.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.fields.ADDFIELD_KEY}">{addfields_option.fields.ADDFIELD_VALUE}</textarea><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF -->
						<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						[{addfields_option.fields.ADDFIELD_I}] <input id="af_{addfields_option.fields.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.fields.ADDFIELD_KEY}" value="{addfields_option.fields.ADDFIELD_VALUE}" /><!-- IF not addfields_option.fields.S_LAST_ROW --><br /><!-- ENDIF --><!-- END fields -->
						<!-- ENDIF -->
				<!-- ELSE -->
					<!-- IF addfields_option.ADDFIELD_TYPE == 'TA' -->
						<textarea id="af_{addfields_option.ADDFIELD_KEY}" rows="3" cols="35" name="{addfields_option.ADDFIELD_KEY}">{addfields_option.ADDFIELD_VALUE}</textarea>
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'T' -->
						<input id="af_{addfields_option.ADDFIELD_KEY}" size="45" type="text" name="{addfields_option.ADDFIELD_KEY}" value="{addfields_option.ADDFIELD_VALUE}" />
					<!-- ELSEIF addfields_option.ADDFIELD_TYPE == 'SEL' -->
						<select name="{addfields_option.ADDFIELD_KEY}[]" multiple="multiple" style="width:300px;">{addfields_option.ADDFIELD_VALUE}</select>
					<!-- ENDIF -->
				<!-- ENDIF -->
				<!-- IF addfields_option.ADDFIELD_HELP -->
					<br /><!-- IF addfields_option.ADDFIELD_HELP_TYPE != 'MLT' -->{L_TRACKER_ADDFIELDS_EXAMPLE}: <!-- ENDIF -->
					<!-- IF addfields_option.ADDFIELD_HELP_TYPE == 'SEL' -->
						<select name="ins_{addfields_option.ADDFIELD_HELP_KEY}" onchange="this.form.{addfields_option.ADDFIELD_HELP_KEY}.value=this.form.ins_{addfields_option.ADDFIELD_HELP_KEY}.value;">{addfields_option.ADDFIELD_HELP}</select>
					<!-- ELSE -->
						{addfields_option.ADDFIELD_HELP}
					<!-- ENDIF -->
				<!-- ENDIF -->
				</td>
			</tr>
		<!-- END addfields_option -->
		</table>
	</td>
</tr>
<!-- ENDIF -->
перед

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

</table>
<!-- IF not S_PRIVMSGS -->
добавить

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

<!-- ENDIF -->
4. Очистить кеш, обновить переделанные стили.

5. Настроить опции, адм. раздел - вкладка Общие - Размещение сообщений - Дополнительные поля/Положение дополнительных полей.

6. Установить модули:

6.1. Адм. раздел - вкладка Система - адм. раздел - ссылка Общие - ссылка Конфигурация - справа внизу ищем в форме напротив кнопки Добавить модуль: Управление конференцией [acp_board] -> Шаблоны дополнительных полей - жмём: Добавить модуль - Да - Вернуться на предыдущую страницу - напротив: Шаблоны дополнительных полей жмём ссылку: включить

6.2. Адм. раздел - вкладка Система - адм. раздел - ссылка Общие - ссылка Конфигурация - справа внизу ищем в форме напротив кнопки Добавить модуль: Управление конференцией [acp_board] -> Дополнительные поля - жмём: Добавить модуль - Да - Вернуться на предыдущую страницу - напротив: Дополнительные поля жмём ссылку: включить
--
Скриншоты:
Опция в адм. разделе


Шаблоны доп. полей


Поля в шаблоне


Выбор шаблона в форуме


Дополнительные поля


Опции дополнительного поля


Создание темы (доп. поля до формы сообщения)


Создание темы (доп. поля после формы сообщения)


Предпросмотр темы


Тема

--
Для пользователей ppkBB3cker - НЕ нужно устанавливать данный мод в трекер, он уже там установлен.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ba
barkovskii
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Сообщения: 11
Зарегистрирован: 12 сен 2011, 21:23
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

04 сен 2013, 18:42

Один из пользователей моего форума попросил оформить все правки в нормальную инструкцию, оформил, если у автора мода будет время, то попрошу его проверить мои труды. (Загрузка архивов почему то отключена, видимо только для меня, разместил архив у себя на сервере). Ссылка на архив мода
da
dan9
Благодарил (а): 3 раза
Сообщения: 4
Зарегистрирован: 22 окт 2013, 13:54
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

23 окт 2013, 19:40

Данный мод будет работать на голом phpbb3?
Я очень плохо знаю phpbb* но "вроде" правки не значительные.

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

include_once($phpbb_root_path.'tracker/include/posting_addfields_add1.'.$phpEx);
include_once($phpbb_root_path.'tracker/include/posting_addfields_add2.'.$phpEx);
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

24 окт 2013, 10:16

В названии темы есть подсказка, если просто добавить эти две строчки - ничего не произойдёт, мод нужно ставить полностью.
da
dan9
Благодарил (а): 3 раза
Сообщения: 4
Зарегистрирован: 22 окт 2013, 13:54
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

24 окт 2013, 10:31

PPK писал(а):В названии темы есть подсказка, если просто добавить эти две строчки - ничего не произойдёт, мод нужно ставить полностью.
Я имел ввиду что у мненя на форуме не будет папки "tracker", а значит пути будут отличаться

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

        
include_once($phpbb_root_path.'includes/posting_addfields_add1.'.$phpEx);
include_once($phpbb_root_path.'includes/posting_addfields_add2.'.$phpEx);
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

24 окт 2013, 10:46

будет, когда скачаете архив.
de
demonx
Благодарил (а): 151 раз
Поблагодарили: 17 раз
Сообщения: 510
Зарегистрирован: 02 апр 2011, 00:19
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

26 янв 2014, 16:24

Как создавать доп. поля, у меня ничего не создаеться, может надо где-то включить мод? Ставил сбарку форума версия 2.
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

BB3AddFields 2 - мод шаблонов дополнительных полей для форума phpBB3

27 янв 2014, 10:48

Обновление #44 2012.11.21 в конце сообщения.

Вернуться в «Минимоды и хаки для phpBB3»