[ticket/13844] Add events

PHPBB3-13844
This commit is contained in:
Joas Schilling 2015-05-20 00:23:42 +02:00
parent 6dcc14bc58
commit 077051fef5
4 changed files with 63 additions and 17 deletions

View file

@ -2,14 +2,14 @@ services:
phpbb.help.manager:
class: phpbb\help\manager
arguments:
- @template
- @dispatcher
- @language
- @template
phpbb.help.controller.bbcode:
class: phpbb\help\controller\bbcode
arguments:
- @controller.helper
- @dispatcher
- @phpbb.help.manager
- @template
- @language
@ -20,7 +20,6 @@ services:
class: phpbb\help\controller\faq
arguments:
- @controller.helper
- @dispatcher
- @phpbb.help.manager
- @template
- @language

View file

@ -21,9 +21,6 @@ abstract class controller
/** @var \phpbb\controller\helper */
protected $helper;
/** @var \phpbb\event\dispatcher_interface */
protected $dispatcher;
/** @var \phpbb\help\manager */
protected $manager;
@ -43,17 +40,15 @@ abstract class controller
* 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)
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->dispatcher = $dispatcher;
$this->manager = $manager;
$this->template = $template;
$this->language = $language;

View file

@ -18,25 +18,30 @@ namespace phpbb\help;
*/
class manager
{
/** @var \phpbb\template\template */
protected $template;
/** @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\template\template $template
* @param \phpbb\event\dispatcher $dispatcher
* @param \phpbb\language\language $language
* @param \phpbb\template\template $template
*/
public function __construct(\phpbb\template\template $template, \phpbb\language\language $language)
public function __construct(\phpbb\event\dispatcher $dispatcher, \phpbb\language\language $language, \phpbb\template\template $template)
{
$this->template = $template;
$this->dispatcher = $dispatcher;
$this->language = $language;
$this->template = $template;
}
/**
@ -47,6 +52,18 @@ class manager
*/
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,
@ -58,6 +75,18 @@ class manager
}
$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)));
}
/**
@ -68,10 +97,32 @@ class manager
*/
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)));
}
/**

View file

@ -11,7 +11,7 @@
*
*/
class phpbb_language_test extends phpbb_test_case
class phpbb_help_manager_test extends phpbb_test_case
{
/** @var \phpbb\help\manager */
protected $manager;
@ -30,8 +30,9 @@ class phpbb_language_test extends phpbb_test_case
->getMock();
$this->manager = new \phpbb\help\manager(
$this->template,
$this->language
new \phpbb_mock_event_dispatcher(),
$this->language,
$this->template
);
}