diff options
Diffstat (limited to 'phpBB/phpbb/help')
| -rw-r--r-- | phpBB/phpbb/help/controller/bbcode.php | 85 | ||||
| -rw-r--r-- | phpBB/phpbb/help/controller/controller.php | 76 | ||||
| -rw-r--r-- | phpBB/phpbb/help/controller/faq.php | 165 | ||||
| -rw-r--r-- | phpBB/phpbb/help/controller/help.php | 160 | ||||
| -rw-r--r-- | phpBB/phpbb/help/manager.php | 137 | 
5 files changed, 623 insertions, 0 deletions
| diff --git a/phpBB/phpbb/help/controller/bbcode.php b/phpBB/phpbb/help/controller/bbcode.php new file mode 100644 index 0000000000..e16f99023d --- /dev/null +++ b/phpBB/phpbb/help/controller/bbcode.php @@ -0,0 +1,85 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\help\controller; + +/** + * BBCode help page + */ +class bbcode extends controller +{ +	/** +	 * @return string The title of the page +	 */ +	public function display() +	{ +		$this->language->add_lang('help/bbcode'); + +		$this->manager->add_block( +			'HELP_BBCODE_BLOCK_INTRO', +			false, +			array( +				'HELP_BBCODE_INTRO_BBCODE_QUESTION' => 'HELP_BBCODE_INTRO_BBCODE_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_BBCODE_BLOCK_TEXT', +			false, +			array( +				'HELP_BBCODE_TEXT_BASIC_QUESTION' => 'HELP_BBCODE_TEXT_BASIC_ANSWER', +				'HELP_BBCODE_TEXT_COLOR_QUESTION' => 'HELP_BBCODE_TEXT_COLOR_ANSWER', +				'HELP_BBCODE_TEXT_COMBINE_QUESTION' => 'HELP_BBCODE_TEXT_COMBINE_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_BBCODE_BLOCK_QUOTES', +			false, +			array( +				'HELP_BBCODE_QUOTES_TEXT_QUESTION' => 'HELP_BBCODE_QUOTES_TEXT_ANSWER', +				'HELP_BBCODE_QUOTES_CODE_QUESTION' => 'HELP_BBCODE_QUOTES_CODE_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_BBCODE_BLOCK_LISTS', +			false, +			array( +				'HELP_BBCODE_LISTS_UNORDERER_QUESTION' => 'HELP_BBCODE_LISTS_UNORDERER_ANSWER', +				'HELP_BBCODE_LISTS_ORDERER_QUESTION' => 'HELP_BBCODE_LISTS_ORDERER_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_BBCODE_BLOCK_LINKS', +			true, +			array( +				'HELP_BBCODE_LINKS_BASIC_QUESTION' => 'HELP_BBCODE_LINKS_BASIC_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_BBCODE_BLOCK_IMAGES', +			false, +			array( +				'HELP_BBCODE_IMAGES_BASIC_QUESTION' => 'HELP_BBCODE_IMAGES_BASIC_ANSWER', +				'HELP_BBCODE_IMAGES_ATTACHMENT_QUESTION' => 'HELP_BBCODE_IMAGES_ATTACHMENT_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_BBCODE_BLOCK_OTHERS', +			false, +			array( +				'HELP_BBCODE_OTHERS_CUSTOM_QUESTION' => 'HELP_BBCODE_OTHERS_CUSTOM_ANSWER', +			) +		); + +		return $this->language->lang('BBCODE_GUIDE'); +	} +} diff --git a/phpBB/phpbb/help/controller/controller.php b/phpBB/phpbb/help/controller/controller.php new file mode 100644 index 0000000000..29494205a9 --- /dev/null +++ b/phpBB/phpbb/help/controller/controller.php @@ -0,0 +1,76 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\help\controller; + +/** + * BBCode help page + */ +abstract class controller +{ +	/** @var \phpbb\controller\helper */ +	protected $helper; + +	/** @var \phpbb\help\manager */ +	protected $manager; + +	/** @var \phpbb\template\template */ +	protected $template; + +	/** @var \phpbb\language\language */ +	protected $language; + +	/** @var string */ +	protected $root_path; + +	/** @var string */ +	protected $php_ext; + +	/** +	 * Constructor +	 * +	 * @param \phpbb\controller\helper	$helper +	 * @param \phpbb\help\manager		$manager +	 * @param \phpbb\template\template	$template +	 * @param \phpbb\language\language	$language +	 * @param string					$root_path +	 * @param string					$php_ext +	 */ +	public function __construct(\phpbb\controller\helper $helper, \phpbb\help\manager $manager, \phpbb\template\template $template, \phpbb\language\language $language, $root_path, $php_ext) +	{ +		$this->helper = $helper; +		$this->manager = $manager; +		$this->template = $template; +		$this->language = $language; +		$this->root_path = $root_path; +		$this->php_ext = $php_ext; +	} + +	/** +	 * @return string +	 */ +	abstract protected function display(); + +	public function handle() +	{ +		$title = $this->display(); + +		$this->template->assign_vars(array( +			'L_FAQ_TITLE'	=> $title, +			'S_IN_FAQ'		=> true, +		)); + +		make_jumpbox(append_sid("{$this->root_path}viewforum.{$this->php_ext}")); +		return $this->helper->render('faq_body.html', $title); +	} +} diff --git a/phpBB/phpbb/help/controller/faq.php b/phpBB/phpbb/help/controller/faq.php new file mode 100644 index 0000000000..5e45cfe667 --- /dev/null +++ b/phpBB/phpbb/help/controller/faq.php @@ -0,0 +1,165 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\help\controller; + +/** + * FAQ help page + */ +class faq extends controller +{ +	/** +	 * @return string The title of the page +	 */ +	public function display() +	{ +		$this->language->add_lang('help/faq'); + +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_LOGIN', +			false, +			array( +				'HELP_FAQ_LOGIN_REGISTER_QUESTION' => 'HELP_FAQ_LOGIN_REGISTER_ANSWER', +				'HELP_FAQ_LOGIN_COPPA_QUESTION' => 'HELP_FAQ_LOGIN_COPPA_ANSWER', +				'HELP_FAQ_LOGIN_CANNOT_REGISTER_QUESTION' => 'HELP_FAQ_LOGIN_CANNOT_REGISTER_ANSWER', +				'HELP_FAQ_LOGIN_REGISTER_CONFIRM_QUESTION' => 'HELP_FAQ_LOGIN_REGISTER_CONFIRM_ANSWER', +				'HELP_FAQ_LOGIN_CANNOT_LOGIN_QUESTION' => 'HELP_FAQ_LOGIN_CANNOT_LOGIN_ANSWER', +				'HELP_FAQ_LOGIN_CANNOT_LOGIN_ANYMORE_QUESTION' => 'HELP_FAQ_LOGIN_CANNOT_LOGIN_ANYMORE_ANSWER', +				'HELP_FAQ_LOGIN_LOST_PASSWORD_QUESTION' => 'HELP_FAQ_LOGIN_LOST_PASSWORD_ANSWER', +				'HELP_FAQ_LOGIN_AUTO_LOGOUT_QUESTION' => 'HELP_FAQ_LOGIN_AUTO_LOGOUT_ANSWER', +				'HELP_FAQ_LOGIN_DELETE_COOKIES_QUESTION' => 'HELP_FAQ_LOGIN_DELETE_COOKIES_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_USERSETTINGS', +			false, +			array( +				'HELP_FAQ_USERSETTINGS_CHANGE_SETTINGS_QUESTION' => 'HELP_FAQ_USERSETTINGS_CHANGE_SETTINGS_ANSWER', +				'HELP_FAQ_USERSETTINGS_HIDE_ONLINE_QUESTION' => 'HELP_FAQ_USERSETTINGS_HIDE_ONLINE_ANSWER', +				'HELP_FAQ_USERSETTINGS_TIMEZONE_QUESTION' => 'HELP_FAQ_USERSETTINGS_TIMEZONE_ANSWER', +				'HELP_FAQ_USERSETTINGS_SERVERTIME_QUESTION' => 'HELP_FAQ_USERSETTINGS_SERVERTIME_ANSWER', +				'HELP_FAQ_USERSETTINGS_LANGUAGE_QUESTION' => 'HELP_FAQ_USERSETTINGS_LANGUAGE_ANSWER', +				'HELP_FAQ_USERSETTINGS_AVATAR_QUESTION' => 'HELP_FAQ_USERSETTINGS_AVATAR_ANSWER', +				'HELP_FAQ_USERSETTINGS_AVATAR_DISPLAY_QUESTION' => 'HELP_FAQ_USERSETTINGS_AVATAR_DISPLAY_ANSWER', +				'HELP_FAQ_USERSETTINGS_RANK_QUESTION' => 'HELP_FAQ_USERSETTINGS_RANK_ANSWER', +				'HELP_FAQ_USERSETTINGS_EMAIL_LOGIN_QUESTION' => 'HELP_FAQ_USERSETTINGS_EMAIL_LOGIN_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_POSTING', +			false, +			array( +				'HELP_FAQ_POSTING_CREATE_QUESTION' => 'HELP_FAQ_POSTING_CREATE_ANSWER', +				'HELP_FAQ_POSTING_EDIT_DELETE_QUESTION' => 'HELP_FAQ_POSTING_EDIT_DELETE_ANSWER', +				'HELP_FAQ_POSTING_SIGNATURE_QUESTION' => 'HELP_FAQ_POSTING_SIGNATURE_ANSWER', +				'HELP_FAQ_POSTING_POLL_CREATE_QUESTION' => 'HELP_FAQ_POSTING_POLL_CREATE_ANSWER', +				'HELP_FAQ_POSTING_POLL_ADD_QUESTION' => 'HELP_FAQ_POSTING_POLL_ADD_ANSWER', +				'HELP_FAQ_POSTING_POLL_EDIT_QUESTION' => 'HELP_FAQ_POSTING_POLL_EDIT_ANSWER', +				'HELP_FAQ_POSTING_FORUM_RESTRICTED_QUESTION' => 'HELP_FAQ_POSTING_FORUM_RESTRICTED_ANSWER', +				'HELP_FAQ_POSTING_NO_ATTACHMENTS_QUESTION' => 'HELP_FAQ_POSTING_NO_ATTACHMENTS_ANSWER', +				'HELP_FAQ_POSTING_WARNING_QUESTION' => 'HELP_FAQ_POSTING_WARNING_ANSWER', +				'HELP_FAQ_POSTING_REPORT_QUESTION' => 'HELP_FAQ_POSTING_REPORT_ANSWER', +				'HELP_FAQ_POSTING_DRAFT_QUESTION' => 'HELP_FAQ_POSTING_DRAFT_ANSWER', +				'HELP_FAQ_POSTING_QUEUE_QUESTION' => 'HELP_FAQ_POSTING_QUEUE_ANSWER', +				'HELP_FAQ_POSTING_BUMP_QUESTION' => 'HELP_FAQ_POSTING_BUMP_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_FORMATTING', +			false, +			array( +				'HELP_FAQ_FORMATTING_BBOCDE_QUESTION' => 'HELP_FAQ_FORMATTING_BBOCDE_ANSWER', +				'HELP_FAQ_FORMATTING_HTML_QUESTION' => 'HELP_FAQ_FORMATTING_HTML_ANSWER', +				'HELP_FAQ_FORMATTING_SMILIES_QUESTION' => 'HELP_FAQ_FORMATTING_SMILIES_ANSWER', +				'HELP_FAQ_FORMATTING_IMAGES_QUESTION' => 'HELP_FAQ_FORMATTING_IMAGES_ANSWER', +				'HELP_FAQ_FORMATTING_GLOBAL_ANNOUNCE_QUESTION' => 'HELP_FAQ_FORMATTING_GLOBAL_ANNOUNCE_ANSWER', +				'HELP_FAQ_FORMATTING_ANNOUNCEMENT_QUESTION' => 'HELP_FAQ_FORMATTING_ANNOUNCEMENT_ANSWER', +				'HELP_FAQ_FORMATTING_STICKIES_QUESTION' => 'HELP_FAQ_FORMATTING_STICKIES_ANSWER', +				'HELP_FAQ_FORMATTING_LOCKED_QUESTION' => 'HELP_FAQ_FORMATTING_LOCKED_ANSWER', +				'HELP_FAQ_FORMATTING_ICONS_QUESTION' => 'HELP_FAQ_FORMATTING_ICONS_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_GROUPS', +			true, +			array( +				'HELP_FAQ_GROUPS_ADMINISTRATORS_QUESTION' => 'HELP_FAQ_GROUPS_ADMINISTRATORS_ANSWER', +				'HELP_FAQ_GROUPS_MODERATORS_QUESTION' => 'HELP_FAQ_GROUPS_MODERATORS_ANSWER', +				'HELP_FAQ_GROUPS_USERGROUPS_QUESTION' => 'HELP_FAQ_GROUPS_USERGROUPS_ANSWER', +				'HELP_FAQ_GROUPS_USERGROUPS_JOIN_QUESTION' => 'HELP_FAQ_GROUPS_USERGROUPS_JOIN_ANSWER', +				'HELP_FAQ_GROUPS_USERGROUPS_LEAD_QUESTION' => 'HELP_FAQ_GROUPS_USERGROUPS_LEAD_ANSWER', +				'HELP_FAQ_GROUPS_COLORS_QUESTION' => 'HELP_FAQ_GROUPS_COLORS_ANSWER', +				'HELP_FAQ_GROUPS_DEFAULT_QUESTION' => 'HELP_FAQ_GROUPS_DEFAULT_ANSWER', +				'HELP_FAQ_GROUPS_TEAM_QUESTION' => 'HELP_FAQ_GROUPS_TEAM_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_PMS', +			false, +			array( +				'HELP_FAQ_PMS_CANNOT_SEND_QUESTION' => 'HELP_FAQ_PMS_CANNOT_SEND_ANSWER', +				'HELP_FAQ_PMS_UNWANTED_QUESTION' => 'HELP_FAQ_PMS_UNWANTED_ANSWER', +				'HELP_FAQ_PMS_SPAM_QUESTION' => 'HELP_FAQ_PMS_SPAM_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_FRIENDS', +			false, +			array( +				'HELP_FAQ_FRIENDS_BASIC_QUESTION' => 'HELP_FAQ_FRIENDS_BASIC_ANSWER', +				'HELP_FAQ_FRIENDS_MANAGE_QUESTION' => 'HELP_FAQ_FRIENDS_MANAGE_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_SEARCH', +			false, +			array( +				'HELP_FAQ_SEARCH_FORUM_QUESTION' => 'HELP_FAQ_SEARCH_FORUM_ANSWER', +				'HELP_FAQ_SEARCH_NO_RESULT_QUESTION' => 'HELP_FAQ_SEARCH_NO_RESULT_ANSWER', +				'HELP_FAQ_SEARCH_BLANK_QUESTION' => 'HELP_FAQ_SEARCH_BLANK_ANSWER', +				'HELP_FAQ_SEARCH_MEMBERS_QUESTION' => 'HELP_FAQ_SEARCH_MEMBERS_ANSWER', +				'HELP_FAQ_SEARCH_OWN_QUESTION' => 'HELP_FAQ_SEARCH_OWN_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_BOOKMARKS', +			false, +			array( +				'HELP_FAQ_BOOKMARKS_DIFFERENCE_QUESTION' => 'HELP_FAQ_BOOKMARKS_DIFFERENCE_ANSWER', +				'HELP_FAQ_BOOKMARKS_TOPIC_QUESTION' => 'HELP_FAQ_BOOKMARKS_TOPIC_ANSWER', +				'HELP_FAQ_BOOKMARKS_FORUM_QUESTION' => 'HELP_FAQ_BOOKMARKS_FORUM_ANSWER', +				'HELP_FAQ_BOOKMARKS_REMOVE_QUESTION' => 'HELP_FAQ_BOOKMARKS_REMOVE_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_ATTACHMENTS', +			false, +			array( +				'HELP_FAQ_ATTACHMENTS_ALLOWED_QUESTION' => 'HELP_FAQ_ATTACHMENTS_ALLOWED_ANSWER', +				'HELP_FAQ_ATTACHMENTS_OWN_QUESTION' => 'HELP_FAQ_ATTACHMENTS_OWN_ANSWER', +			) +		); +		$this->manager->add_block( +			'HELP_FAQ_BLOCK_ISSUES', +			false, +			array( +				'HELP_FAQ_ISSUES_WHOIS_PHPBB_QUESTION' => 'HELP_FAQ_ISSUES_WHOIS_PHPBB_ANSWER', +				'HELP_FAQ_ISSUES_FEATURE_QUESTION' => 'HELP_FAQ_ISSUES_FEATURE_ANSWER', +				'HELP_FAQ_ISSUES_LEGAL_QUESTION' => 'HELP_FAQ_ISSUES_LEGAL_ANSWER', +				'HELP_FAQ_ISSUES_ADMIN_QUESTION' => 'HELP_FAQ_ISSUES_ADMIN_ANSWER', +			) +		); + +		return $this->language->lang('FAQ_EXPLAIN'); +	} +} diff --git a/phpBB/phpbb/help/controller/help.php b/phpBB/phpbb/help/controller/help.php new file mode 100644 index 0000000000..9cc3b0c8b4 --- /dev/null +++ b/phpBB/phpbb/help/controller/help.php @@ -0,0 +1,160 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\help\controller; + +use phpbb\exception\http_exception; + +class help +{ +	/** @var \phpbb\controller\helper */ +	protected $helper; + +	/** @var \phpbb\event\dispatcher_interface  */ +	protected $dispatcher; + +	/** @var \phpbb\template\template */ +	protected $template; + +	/** @var \phpbb\user */ +	protected $user; + +	/** @var string */ +	protected $root_path; + +	/** @var string */ +	protected $php_ext; + +	/** +	 * Constructor +	 * +	 * @param \phpbb\controller\helper	$helper +	 * @param \phpbb\event\dispatcher_interface	$dispatcher +	 * @param \phpbb\template\template	$template +	 * @param \phpbb\user				$user +	 * @param string					$root_path +	 * @param string					$php_ext +	 */ +	public function __construct(\phpbb\controller\helper $helper, \phpbb\event\dispatcher_interface $dispatcher, \phpbb\template\template $template, \phpbb\user $user, $root_path, $php_ext) +	{ +		$this->helper = $helper; +		$this->dispatcher = $dispatcher; +		$this->template = $template; +		$this->user = $user; +		$this->root_path = $root_path; +		$this->php_ext = $php_ext; +	} + +	/** +	 * Controller for /help/{mode} routes +	 * +	 * @param string		$mode +	 * @return \Symfony\Component\HttpFoundation\Response A Symfony Response object +	 * @throws http_exception when the $mode is not known by any extension +	 */ +	public function handle($mode) +	{ +		switch ($mode) +		{ +			case 'faq': +			case 'bbcode': +				$page_title = ($mode === 'faq') ? $this->user->lang['FAQ_EXPLAIN'] : $this->user->lang['BBCODE_GUIDE']; +				$this->user->add_lang($mode, false, true); +			break; + +			default: +				$page_title = $this->user->lang['FAQ_EXPLAIN']; +				$ext_name = $lang_file = ''; + +				/** +				 * You can use this event display a custom help page +				 * +				 * @event core.faq_mode_validation +				 * @var	string	page_title		Title of the page +				 * @var	string	mode			FAQ that is going to be displayed +				 * @var	string	lang_file		Language file containing the help data +				 * @var	string	ext_name		Vendor and extension name where the help +				 *								language file can be loaded from +				 * @since 3.1.4-RC1 +				 */ +				$vars = array( +					'page_title', +					'mode', +					'lang_file', +					'ext_name', +				); +				extract($this->dispatcher->trigger_event('core.faq_mode_validation', compact($vars))); + +				if ($ext_name === '' || $lang_file === '') +				{ +					throw new http_exception(404, 'Not Found'); +				} + +				$this->user->add_lang($lang_file, false, true, $ext_name); +			break; + +		} + +		$this->template->assign_vars(array( +			'L_FAQ_TITLE'				=> $page_title, +			'S_IN_FAQ'					=> true, +		)); + +		$this->assign_to_template($this->user->help); + +		make_jumpbox(append_sid("{$this->root_path}viewforum.{$this->php_ext}")); +		return $this->helper->render('faq_body.html', $page_title); +	} + +	/** +	 * Assigns the help data to the template blocks +	 * +	 * @param array $help_data +	 * @return null +	 */ +	protected function assign_to_template(array $help_data) +	{ +		// Pull the array data from the lang pack +		$switch_column = $found_switch = false; +		foreach ($help_data as $help_ary) +		{ +			if ($help_ary[0] == '--') +			{ +				if ($help_ary[1] == '--') +				{ +					$switch_column = true; +					$found_switch = true; +					continue; +				} + +				$this->template->assign_block_vars('faq_block', array( +					'BLOCK_TITLE'		=> $help_ary[1], +					'SWITCH_COLUMN'		=> $switch_column, +				)); + +				if ($switch_column) +				{ +					$switch_column = false; +				} +				continue; +			} + +			$this->template->assign_block_vars('faq_block.faq_row', array( +				'FAQ_QUESTION'		=> $help_ary[0], +				'FAQ_ANSWER'		=> $help_ary[1], +			)); +		} + +		$this->template->assign_var('SWITCH_COLUMN_MANUALLY', !$found_switch); +	} +} diff --git a/phpBB/phpbb/help/manager.php b/phpBB/phpbb/help/manager.php new file mode 100644 index 0000000000..39f52d343b --- /dev/null +++ b/phpBB/phpbb/help/manager.php @@ -0,0 +1,137 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\help; + +/** + * Class help page manager + */ +class manager +{ +	/** @var \phpbb\event\dispatcher */ +	protected $dispatcher; + +	/** @var \phpbb\language\language */ +	protected $language; + +	/** @var \phpbb\template\template */ +	protected $template; + +	/** @var bool */ +	protected $switched_column; + +	/** +	 * Constructor +	 * +	 * @param \phpbb\event\dispatcher $dispatcher +	 * @param \phpbb\language\language $language +	 * @param \phpbb\template\template $template +	 */ +	public function __construct(\phpbb\event\dispatcher $dispatcher, \phpbb\language\language $language, \phpbb\template\template $template) +	{ +		$this->dispatcher = $dispatcher; +		$this->language = $language; +		$this->template = $template; +	} + +	/** +	 * Add a new faq block +	 * +	 * @param string $block_name	Name or language key with the name of the block +	 * @param bool $switch_column	Switch the column of the menu +	 * @param array $questions		Array of frequently asked questions +	 */ +	public function add_block($block_name, $switch_column = false, $questions = array()) +	{ +		/** +		 * You can use this event to add a block before the current one. +		 * +		 * @event core.help_manager_add_block_before +		 * @var	string	block_name		Language key of the block headline +		 * @var	bool	switch_column	Should we switch the menu column before this headline +		 * @var	array	questions		Array with questions +		 * @since 3.2.0-a1 +		 */ +		$vars = array('block_name', 'switch_column', 'questions'); +		extract($this->dispatcher->trigger_event('core.help_manager_add_block_before', compact($vars))); + +		$this->template->assign_block_vars('faq_block', array( +			'BLOCK_TITLE'		=> $this->language->lang($block_name), +			'SWITCH_COLUMN'		=> !$this->switched_column && $switch_column, +		)); + +		foreach ($questions as $question => $answer) +		{ +			$this->add_question($question, $answer); +		} + +		$this->switched_column = $this->switched_column || $switch_column; + +		/** +		 * You can use this event to add a block after the current one. +		 * +		 * @event core.help_manager_add_block_after +		 * @var	string	block_name		Language key of the block headline +		 * @var	bool	switch_column	Should we switch the menu column before this headline +		 * @var	array	questions		Array with questions +		 * @since 3.2.0-a1 +		 */ +		$vars = array('block_name', 'switch_column', 'questions'); +		extract($this->dispatcher->trigger_event('core.help_manager_add_block_after', compact($vars))); +	} + +	/** +	 * Add a new faq question +	 * +	 * @param string $question	Question or language key with the question of the block +	 * @param string $answer	Answer or language key with the answer of the block +	 */ +	public function add_question($question, $answer) +	{ +		/** +		 * You can use this event to add a question before the current one. +		 * +		 * @event core.help_manager_add_question_before +		 * @var	string	question	Language key of the question +		 * @var	string	answer		Language key of the answer +		 * @since 3.2.0-a1 +		 */ +		$vars = array('question', 'answer'); +		extract($this->dispatcher->trigger_event('core.help_manager_add_question_before', compact($vars))); + +		$this->template->assign_block_vars('faq_block.faq_row', array( +			'FAQ_QUESTION'		=> $this->language->lang($question), +			'FAQ_ANSWER'		=> $this->language->lang($answer), +		)); + +		/** +		 * You can use this event to add a question after the current one. +		 * +		 * @event core.help_manager_add_question_after +		 * @var	string	question	Language key of the question +		 * @var	string	answer		Language key of the answer +		 * @since 3.2.0-a1 +		 */ +		$vars = array('question', 'answer'); +		extract($this->dispatcher->trigger_event('core.help_manager_add_question_after', compact($vars))); +	} + +	/** +	 * Returns whether the block titles switched side +	 * @return bool +	 */ +	public function switched_column() +	{ +		return $this->switched_column; +	} +} | 
