mirror of
https://github.com/phpbb/phpbb.git
synced 2025-04-21 16:22:22 +02:00
[ticket/13647] Move FAQ page to a controller
PHPBB3-13647
This commit is contained in:
parent
71eb981a81
commit
0595ab959c
@ -8,6 +8,7 @@ imports:
|
||||
- { resource: services_db.yml }
|
||||
- { resource: services_event.yml }
|
||||
- { resource: services_feed.yml }
|
||||
- { resource: services_help.yml }
|
||||
- { resource: services_mimetype_guesser.yml }
|
||||
- { resource: services_notification.yml }
|
||||
- { resource: services_password.yml }
|
||||
|
10
phpBB/config/default/container/services_help.yml
Normal file
10
phpBB/config/default/container/services_help.yml
Normal file
@ -0,0 +1,10 @@
|
||||
services:
|
||||
phpbb.help.controller:
|
||||
class: phpbb\help\controller\help
|
||||
arguments:
|
||||
- @controller.helper
|
||||
- @dispatcher
|
||||
- @template
|
||||
- @user
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
3
phpBB/config/default/routing/help.yml
Normal file
3
phpBB/config/default/routing/help.yml
Normal file
@ -0,0 +1,3 @@
|
||||
phpbb_help_controller:
|
||||
path: /{mode}
|
||||
defaults: { _controller: phpbb.help.controller:handle }
|
@ -7,3 +7,7 @@
|
||||
# The above will be accessed via app.php?controller=foo and it will
|
||||
# instantiate the "foo_service" service and call the "method" method.
|
||||
#
|
||||
|
||||
phpbb_help_routing:
|
||||
resource: "help.yml"
|
||||
prefix: /help
|
||||
|
@ -24,90 +24,8 @@ $user->session_begin();
|
||||
$auth->acl($user->data);
|
||||
$user->setup();
|
||||
|
||||
$mode = $request->variable('mode', '');
|
||||
/** @var \phpbb\controller\helper $controller_helper */
|
||||
$controller_helper = $phpbb_container->get('controller.helper');
|
||||
|
||||
// Load the appropriate faq file
|
||||
switch ($mode)
|
||||
{
|
||||
case 'bbcode':
|
||||
$l_title = $user->lang['BBCODE_GUIDE'];
|
||||
$user->add_lang('bbcode', false, true);
|
||||
break;
|
||||
|
||||
default:
|
||||
$page_title = $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($phpbb_dispatcher->trigger_event('core.faq_mode_validation', compact($vars)));
|
||||
|
||||
$l_title = $page_title;
|
||||
$user->add_lang(($lang_file) ? $lang_file : 'faq', false, true, $ext_name);
|
||||
break;
|
||||
}
|
||||
|
||||
// Pull the array data from the lang pack
|
||||
$switch_column = $found_switch = false;
|
||||
$help_blocks = array();
|
||||
foreach ($user->help as $help_ary)
|
||||
{
|
||||
if ($help_ary[0] == '--')
|
||||
{
|
||||
if ($help_ary[1] == '--')
|
||||
{
|
||||
$switch_column = true;
|
||||
$found_switch = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
$template->assign_block_vars('faq_block', array(
|
||||
'BLOCK_TITLE' => $help_ary[1],
|
||||
'SWITCH_COLUMN' => $switch_column,
|
||||
));
|
||||
|
||||
if ($switch_column)
|
||||
{
|
||||
$switch_column = false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
$template->assign_block_vars('faq_block.faq_row', array(
|
||||
'FAQ_QUESTION' => $help_ary[0],
|
||||
'FAQ_ANSWER' => $help_ary[1])
|
||||
);
|
||||
}
|
||||
|
||||
// Lets build a page ...
|
||||
$template->assign_vars(array(
|
||||
'L_FAQ_TITLE' => $l_title,
|
||||
'L_BACK_TO_TOP' => $user->lang['BACK_TO_TOP'],
|
||||
|
||||
'SWITCH_COLUMN_MANUALLY' => (!$found_switch) ? true : false,
|
||||
'S_IN_FAQ' => true,
|
||||
));
|
||||
|
||||
page_header($l_title);
|
||||
|
||||
$template->set_filenames(array(
|
||||
'body' => 'faq_body.html')
|
||||
);
|
||||
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
|
||||
|
||||
page_footer();
|
||||
// TODO send "Moved permanently" header
|
||||
redirect($controller_helper->route('phpbb_help_controller', array('mode' => $request->variable('mode', 'faq'))));
|
||||
|
160
phpBB/phpbb/help/controller/help.php
Normal file
160
phpBB/phpbb/help/controller/help.php
Normal file
@ -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(501, 'FEATURE_NOT_AVAILABLE');
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user