[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: phpbb.help.manager:
class: phpbb\help\manager class: phpbb\help\manager
arguments: arguments:
- @template - @dispatcher
- @language - @language
- @template
phpbb.help.controller.bbcode: phpbb.help.controller.bbcode:
class: phpbb\help\controller\bbcode class: phpbb\help\controller\bbcode
arguments: arguments:
- @controller.helper - @controller.helper
- @dispatcher
- @phpbb.help.manager - @phpbb.help.manager
- @template - @template
- @language - @language
@ -20,7 +20,6 @@ services:
class: phpbb\help\controller\faq class: phpbb\help\controller\faq
arguments: arguments:
- @controller.helper - @controller.helper
- @dispatcher
- @phpbb.help.manager - @phpbb.help.manager
- @template - @template
- @language - @language

View file

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

View file

@ -18,25 +18,30 @@ namespace phpbb\help;
*/ */
class manager class manager
{ {
/** @var \phpbb\template\template */ /** @var \phpbb\event\dispatcher */
protected $template; protected $dispatcher;
/** @var \phpbb\language\language */ /** @var \phpbb\language\language */
protected $language; protected $language;
/** @var \phpbb\template\template */
protected $template;
/** @var bool */ /** @var bool */
protected $switched_column; protected $switched_column;
/** /**
* Constructor * Constructor
* *
* @param \phpbb\template\template $template * @param \phpbb\event\dispatcher $dispatcher
* @param \phpbb\language\language $language * @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->language = $language;
$this->template = $template;
} }
/** /**
@ -47,6 +52,18 @@ class manager
*/ */
public function add_block($block_name, $switch_column = false, $questions = array()) 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( $this->template->assign_block_vars('faq_block', array(
'BLOCK_TITLE' => $this->language->lang($block_name), 'BLOCK_TITLE' => $this->language->lang($block_name),
'SWITCH_COLUMN' => !$this->switched_column && $switch_column, 'SWITCH_COLUMN' => !$this->switched_column && $switch_column,
@ -58,6 +75,18 @@ class manager
} }
$this->switched_column = $this->switched_column || $switch_column; $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) 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( $this->template->assign_block_vars('faq_block.faq_row', array(
'FAQ_QUESTION' => $this->language->lang($question), 'FAQ_QUESTION' => $this->language->lang($question),
'FAQ_ANSWER' => $this->language->lang($answer), '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 */ /** @var \phpbb\help\manager */
protected $manager; protected $manager;
@ -30,8 +30,9 @@ class phpbb_language_test extends phpbb_test_case
->getMock(); ->getMock();
$this->manager = new \phpbb\help\manager( $this->manager = new \phpbb\help\manager(
$this->template, new \phpbb_mock_event_dispatcher(),
$this->language $this->language,
$this->template
); );
} }