mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
[ticket/10620] Implemented quote improvements
PHPBB3-10620
This commit is contained in:
@@ -75,7 +75,7 @@ class phpbb_functional_posting_test extends phpbb_functional_test_case
|
||||
public function test_quote()
|
||||
{
|
||||
$text = 'Test post </textarea>"\' &&amp;';
|
||||
$expected = '[quote="admin"]' . $text . '[/quote]';
|
||||
$expected = '([quote="admin"[^]]*\\]' . preg_quote($text) . '\\[/quote\\])';
|
||||
|
||||
$this->login();
|
||||
$topic = $this->create_topic(2, 'Test Topic 1', 'Test topic');
|
||||
@@ -83,7 +83,7 @@ class phpbb_functional_posting_test extends phpbb_functional_test_case
|
||||
|
||||
$crawler = self::request('GET', "posting.php?mode=quote&f=2&t={$post['topic_id']}&p={$post['post_id']}&sid={$this->sid}");
|
||||
|
||||
$this->assertContains($expected, $crawler->filter('textarea#message')->text());
|
||||
$this->assertRegexp($expected, $crawler->filter('textarea#message')->text());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,10 +93,10 @@ class phpbb_functional_posting_test extends phpbb_functional_test_case
|
||||
{
|
||||
$text = '0[quote]1[quote]2[/quote]1[/quote]0';
|
||||
$expected = array(
|
||||
0 => '[quote="admin"]0[quote]1[quote]2[/quote]1[/quote]0[/quote]',
|
||||
1 => '[quote="admin"]00[/quote]',
|
||||
2 => '[quote="admin"]0[quote]11[/quote]0[/quote]',
|
||||
3 => '[quote="admin"]0[quote]1[quote]2[/quote]1[/quote]0[/quote]',
|
||||
0 => '0[quote]1[quote]2[/quote]1[/quote]0',
|
||||
1 => '00',
|
||||
2 => '0[quote]11[/quote]0',
|
||||
3 => '0[quote]1[quote]2[/quote]1[/quote]0',
|
||||
);
|
||||
|
||||
$this->login();
|
||||
@@ -109,7 +109,10 @@ class phpbb_functional_posting_test extends phpbb_functional_test_case
|
||||
{
|
||||
$this->set_quote_depth($quote_depth);
|
||||
$crawler = self::request('GET', $quote_url);
|
||||
$this->assertContains($expected_text, $crawler->filter('textarea#message')->text());
|
||||
$this->assertRegexp(
|
||||
'(\\[quote="admin"[^]]*\\]' . preg_quote($expected_text) . '\\[/quote\\])',
|
||||
$crawler->filter('textarea#message')->text()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -69,16 +69,30 @@ class phpbb_functional_private_messages_test extends phpbb_functional_test_case
|
||||
|
||||
public function test_quote_post()
|
||||
{
|
||||
$text = 'Test post';
|
||||
$expected = '[quote="admin"]' . $text . '[/quote]';
|
||||
$text = 'Test post';
|
||||
|
||||
$this->login();
|
||||
$topic = $this->create_topic(2, 'Test Topic 1', 'Test topic');
|
||||
$post = $this->create_post(2, $topic['topic_id'], 'Re: Test Topic 1', $text);
|
||||
|
||||
$expected = '(\\[quote="admin" post_id="' . $post['post_id'] . '" time="\\d+" user_id="2"\\]' . $text . '\\[/quote\\])';
|
||||
|
||||
$crawler = self::request('GET', 'ucp.php?i=pm&mode=compose&action=quotepost&p=' . $post['post_id'] . '&sid=' . $this->sid);
|
||||
|
||||
$this->assertContains($expected, $crawler->filter('textarea#message')->text());
|
||||
$this->assertRegexp($expected, $crawler->filter('textarea#message')->text());
|
||||
}
|
||||
|
||||
public function test_quote_pm()
|
||||
{
|
||||
$text = 'This is a test private message sent by the testing framework.';
|
||||
$expected = '(\\[quote="admin" time="\\d+" user_id="2"\\]' . $text . '\\[/quote\\])';
|
||||
|
||||
$this->login();
|
||||
$message_id = $this->create_private_message('Test', $text, array(2));
|
||||
|
||||
$crawler = self::request('GET', 'ucp.php?i=pm&mode=compose&action=quote&p=' . $message_id . '&sid=' . $this->sid);
|
||||
|
||||
$this->assertRegexp($expected, $crawler->filter('textarea#message')->text());
|
||||
}
|
||||
|
||||
public function test_quote_forward()
|
||||
|
@@ -476,11 +476,21 @@ class phpbb_test_case_helpers
|
||||
{
|
||||
$lang_loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx);
|
||||
$lang = new \phpbb\language\language($lang_loader);
|
||||
$user = new \phpbb\user($lang, '\phpbb\datetime');
|
||||
|
||||
$user = $this->test_case->getMockBuilder('\phpbb\user')
|
||||
->setConstructorArgs(array($lang, '\phpbb\datetime'))
|
||||
->setMethods(array('format_date'))
|
||||
->getMock();
|
||||
$user->expects($this->test_case->any())
|
||||
->method('format_date')
|
||||
->will($this->test_case->returnCallback(__CLASS__ . '::format_date'));
|
||||
|
||||
$user->date_format = 'Y-m-d H:i:s';
|
||||
$user->optionset('viewcensors', true);
|
||||
$user->optionset('viewflash', true);
|
||||
$user->optionset('viewimg', true);
|
||||
$user->optionset('viewsmilies', true);
|
||||
$user->timezone = new \DateTimeZone('UTC');
|
||||
$container->set('user', $user);
|
||||
}
|
||||
$user->add_lang('common');
|
||||
@@ -490,6 +500,14 @@ class phpbb_test_case_helpers
|
||||
$user->style = array('style_id' => 1);
|
||||
}
|
||||
|
||||
// Create and register a quote_helper
|
||||
$quote_helper = new \phpbb\textformatter\s9e\quote_helper(
|
||||
$container->get('user'),
|
||||
$phpbb_root_path,
|
||||
$phpEx
|
||||
);
|
||||
$container->set('text_formatter.s9e.quote_helper', $quote_helper);
|
||||
|
||||
// Create and register the text_formatter.s9e.parser service and its alias
|
||||
$parser = new \phpbb\textformatter\s9e\parser(
|
||||
$cache,
|
||||
@@ -515,6 +533,7 @@ class phpbb_test_case_helpers
|
||||
$auth = ($container->has('auth')) ? $container->get('auth') : new \phpbb\auth\auth;
|
||||
|
||||
// Calls configured in services.yml
|
||||
$renderer->configure_quote_helper($quote_helper);
|
||||
$renderer->configure_smilies_path($config, $container->get('path_helper'));
|
||||
$renderer->configure_user($user, $config, $auth);
|
||||
|
||||
@@ -528,4 +547,15 @@ class phpbb_test_case_helpers
|
||||
|
||||
return $container;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mocked replacement for \phpbb\user::format_date()
|
||||
*
|
||||
* @param integer $gmepoch unix timestamp
|
||||
* @return string
|
||||
*/
|
||||
static public function format_date($gmepoch)
|
||||
{
|
||||
return gmdate('Y-m-d H:i:s', $gmepoch);
|
||||
}
|
||||
}
|
||||
|
@@ -225,6 +225,28 @@ class phpbb_textformatter_s9e_default_formatting_test extends phpbb_test_case
|
||||
"[quote]\nThis is a long quote that is definitely going to exceed 80 characters\n[/quote]\n\nFollowed by a reply",
|
||||
"<blockquote class=\"uncited\"><div>\nThis is a long quote that is definitely going to exceed 80 characters\n</div></blockquote>\n\nFollowed by a reply"
|
||||
),
|
||||
array(
|
||||
'[quote="Username" post_id="123"]...[/quote]',
|
||||
'<blockquote><div><cite>Username wrote: <a href="phpBB/viewtopic.php?p=123#p123" data-post-id="123" onclick="if(document.getElementById(hash.substr(1)))href=hash">↑</a></cite>...</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
// Users are not allowed to submit their own URL for the post
|
||||
'[quote="Username" post_url="http://fake.example.org"]...[/quote]',
|
||||
'<blockquote><div><cite>Username wrote:</cite>...</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
'[quote="Username" time="58705871"]...[/quote]',
|
||||
'<blockquote><div><cite>1971-11-11 11:11:11 Username wrote:</cite>...</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
'[quote="Username" user_id="123"]...[/quote]',
|
||||
'<blockquote><div><cite><a href="phpBB/memberlist.php?mode=viewprofile&u=123">Username</a> wrote:</cite>...</div></blockquote>'
|
||||
),
|
||||
array(
|
||||
// Users are not allowed to submit their own URL for the profile
|
||||
'[quote="Username" profile_url="http://fake.example.org"]...[/quote]',
|
||||
'<blockquote><div><cite>Username wrote:</cite>...</div></blockquote>'
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user