[ticket/13844] Refactor bbcode help to the new system

PHPBB3-13844
This commit is contained in:
Joas Schilling 2015-05-16 18:49:32 +02:00
parent 5586cbbcfe
commit ff7e9dc912
5 changed files with 271 additions and 0 deletions

View file

@ -1,4 +1,10 @@
services: services:
phpbb.help.manager:
class: phpbb\help\manager
arguments:
- @template
- @language
phpbb.help.controller: phpbb.help.controller:
class: phpbb\help\controller\help class: phpbb\help\controller\help
arguments: arguments:
@ -8,3 +14,14 @@ services:
- @user - @user
- %core.root_path% - %core.root_path%
- %core.php_ext% - %core.php_ext%
phpbb.help.controller.bbcode:
class: phpbb\help\controller\bbcode
arguments:
- @controller.helper
- @dispatcher
- @phpbb.help.manager
- @template
- @language
- %core.root_path%
- %core.php_ext%

View file

@ -1,3 +1,6 @@
phpbb_help_controller: phpbb_help_controller:
path: /bbcode
defaults: { _controller: phpbb.help.controller.bbcode:handle }
path: /{mode} path: /{mode}
defaults: { _controller: phpbb.help.controller:handle } defaults: { _controller: phpbb.help.controller:handle }

View file

@ -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');
}
}

View file

@ -0,0 +1,81 @@
<?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\event\dispatcher_interface */
protected $dispatcher;
/** @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\event\dispatcher_interface $dispatcher
* @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\event\dispatcher_interface $dispatcher, \phpbb\help\manager $manager, \phpbb\template\template $template, \phpbb\language\language $language, $root_path, $php_ext)
{
$this->helper = $helper;
$this->dispatcher = $dispatcher;
$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);
}
}

View file

@ -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;
/**
* Class help page manager
*/
class manager
{
/** @var \phpbb\template\template */
protected $template;
/** @var \phpbb\language\language */
protected $language;
/** @var bool */
protected $switched_column;
/**
* Constructor
*
* @param \phpbb\template\template $template
* @param \phpbb\language\language $language
*/
public function __construct(\phpbb\template\template $template, \phpbb\language\language $language)
{
$this->template = $template;
$this->language = $language;
}
/**
* 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
*/
public function add_block($block_name, $switch_column = false, $questions = array())
{
$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;
}
/**
* 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)
{
$this->template->assign_block_vars('faq_block.faq_row', array(
'FAQ_QUESTION' => $this->language->lang($question),
'FAQ_ANSWER' => $this->language->lang($answer),
));
}
/**
* Returns whether the block titles switched side
* @return bool
*/
public function switched_column()
{
return $this->switched_column;
}
}