Merge branch 'develop-ascraeus' into develop

* develop-ascraeus:
  [ticket/12730] Update Google+ button class to use proper identification
  [ticket/12730] Update maxlen for type_googleplus to 255
  [ticket/12730] Fix type_googleplus_test to use same validation rule as the field
  [ticket/12730] Update field_length to be 20 by default for Google+
  [ticket/12730] Google+ field_order should be 13
  [ticket/12730] Switch service name to googleplus for type_googleplus
  [ticket/12730] Restore field_length to 10 for type_googleplus
  [ticket/12730] Add functional test for Google+ field
  [ticket/12730] Value shouldn't be escaped for schema_data.sql
  [ticket/12730] Missing newline at type_googleplus_test.php
  [ticket/12730] Set field_active to 1 for Google+ field
  [ticket/12730] Add unit test for type_googleplus
  [ticket/12730] Add missing brackets to type_googleplus.php
  [ticket/12730] Update field_order for Google+ CPF
  [ticket/12730] Use string template for Google+ CPF instead of a new one
  [ticket/12730] Minor formatting fixes
  [ticket/12730] Incorrect indentation for type_googleplus
  [ticket/12730] Spaces in block header
  [ticket/12730] Add a Google+ field by default
  [ticket/12730] Add Google+ profile field type
This commit is contained in:
Joas Schilling 2014-06-22 19:56:49 +02:00
commit 25fd6a0d15
11 changed files with 200 additions and 1 deletions

View file

@ -55,6 +55,15 @@ services:
tags:
- { name: profilefield.type }
profilefields.type.googleplus:
class: phpbb\profilefields\type\type_googleplus
arguments:
- @request
- @template
- @user
tags:
- { name: profilefield.type }
profilefields.type.int:
class: phpbb\profilefields\type\type_int
arguments:

View file

@ -2104,6 +2104,10 @@
"VCHAR",
""
],
"pf_phpbb_googleplus": [
"VCHAR",
""
],
"pf_phpbb_interests": [
"MTEXT",
""

View file

@ -810,6 +810,7 @@ INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_len
INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_twitter', 'profilefields.type.string', 'phpbb_twitter', '20', '1', '15', '', '', '[\w_]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 10, 1, 'VIEW_TWITTER_PROFILE', 'http://twitter.com/%s');
INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_skype', 'profilefields.type.string', 'phpbb_skype', '20', '6', '32', '', '', '[a-zA-Z][\w\.,\-_]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 11, 1, 'VIEW_SKYPE_PROFILE', 'skype:%s?userinfo');
INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_youtube', 'profilefields.type.string', 'phpbb_youtube', '20', '3', '60', '', '', '[a-zA-Z][\w\.,\-_]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 12, 1, 'VIEW_YOUTUBE_CHANNEL', 'http://youtube.com/user/%s');
INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_googleplus', 'profilefields.type.googleplus', 'phpbb_googleplus', '20', '3', '255', '', '', '[\w]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 13, 1, 'VIEW_GOOGLEPLUS_PROFILE', 'http://plus.google.com/%s');
# User Notification Options (for first user)
INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('post', 0, 2, '');

View file

@ -93,6 +93,7 @@ $lang = array_merge($lang, array(
'FIELD_DESCRIPTION' => 'Field description',
'FIELD_DESCRIPTION_EXPLAIN' => 'The explanation for this field presented to the user.',
'FIELD_DROPDOWN' => 'Dropdown box',
'FIELD_GOOGLEPLUS' => 'Google+',
'FIELD_IDENT' => 'Field identification',
'FIELD_IDENT_ALREADY_EXIST' => 'The chosen field identification already exist. Please choose another name.',
'FIELD_IDENT_EXPLAIN' => 'The field identification is a name to identify the profile field within the database and the templates.',

View file

@ -284,6 +284,7 @@ $lang = array_merge($lang, array(
'GB' => 'GB',
'GIB' => 'GiB',
'GO' => 'Go',
'GOOGLEPLUS' => 'Google+',
'GOTO_FIRST_POST' => 'Go to first post',
'GOTO_LAST_POST' => 'Go to last post',
'GOTO_PAGE' => 'Go to page',

View file

@ -148,4 +148,5 @@ $lang = array_merge($lang, array(
'VIEW_SKYPE_PROFILE' => 'View Skype Profile',
'VIEW_TWITTER_PROFILE' => 'View Twitter Profile',
'VIEW_YOUTUBE_CHANNEL' => 'View YouTube Channel',
'VIEW_GOOGLEPLUS_PROFILE' => 'View Google+ Profile',
));

View file

@ -0,0 +1,60 @@
<?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\db\migration\data\v310;
class profilefield_googleplus extends \phpbb\db\migration\profilefield_base_migration
{
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v310\profilefield_types',
'\phpbb\db\migration\data\v310\profilefield_show_novalue',
);
}
public function update_data()
{
return array(
array('custom', array(array($this, 'create_custom_field'))),
);
}
protected $profilefield_name = 'phpbb_googleplus';
protected $profilefield_database_type = array('VCHAR', '');
protected $profilefield_data = array(
'field_name' => 'phpbb_googleplus',
'field_type' => 'profilefields.type.googleplus',
'field_ident' => 'phpbb_googleplus',
'field_length' => '20',
'field_minlen' => '3',
'field_maxlen' => '255',
'field_novalue' => '',
'field_default_value' => '',
'field_validation' => '[\w]+',
'field_required' => 0,
'field_show_novalue' => 0,
'field_show_on_reg' => 0,
'field_show_on_pm' => 1,
'field_show_on_vt' => 1,
'field_show_profile' => 1,
'field_hide' => 0,
'field_no_view' => 0,
'field_active' => 1,
'field_is_contact' => 1,
'field_contact_desc' => 'VIEW_GOOGLEPLUS_PROFILE',
'field_contact_url' => 'http://plus.google.com/%s',
);
}

View file

@ -0,0 +1,58 @@
<?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\profilefields\type;
class type_googleplus extends type_string
{
/**
* {@inheritDoc}
*/
public function get_service_name()
{
return 'profilefields.type.googleplus';
}
/**
* {@inheritDoc}
*/
public function get_default_option_values()
{
return array(
'field_length' => 20,
'field_minlen' => 3,
'field_maxlen' => 255,
'field_validation' => '[\w]+',
'field_novalue' => '',
'field_default_value' => '',
);
}
/**
* {@inheritDoc}
*/
public function get_profile_contact_value($field_value, $field_data)
{
if (!$field_value && !$field_data['field_show_novalue'])
{
return null;
}
if (!is_numeric($field_value))
{
$field_value = '+' . $field_value;
}
return $field_value;
}
}

View file

@ -143,7 +143,7 @@ ul.linklist.bulletin li.small-icon:before {
.phpbb_website-icon { background-position: -40px 0; }
.phpbb_youtube-icon { background-position: -98px 0; }
.phpbb_facebook-icon { background-position: -119px 0; }
.phpbb_google_plus-icon { background-position: -140px 0; }
.phpbb_googleplus-icon { background-position: -140px 0; }
.phpbb_skype-icon { background-position: -161px 0; }
.phpbb_twitter-icon { background-position: -203px 0; }
.phpbb_yahoo-icon { background-position: -224px 0; }

View file

@ -26,6 +26,7 @@ class phpbb_functional_ucp_profile_test extends phpbb_functional_test_case
$form = $crawler->selectButton('Submit')->form(array(
'pf_phpbb_facebook' => 'phpbb',
'pf_phpbb_googleplus' => 'phpbb',
'pf_phpbb_location' => 'Bertie´s Empire',
'pf_phpbb_skype' => 'phpbb.skype.account',
'pf_phpbb_twitter' => 'phpbb_twitter',
@ -39,6 +40,7 @@ class phpbb_functional_ucp_profile_test extends phpbb_functional_test_case
$form = $crawler->selectButton('Submit')->form();
$this->assertEquals('phpbb', $form->get('pf_phpbb_facebook')->getValue());
$this->assertEquals('phpbb', $form->get('pf_phpbb_googleplus')->getValue());
$this->assertEquals('Bertie´s Empire', $form->get('pf_phpbb_location')->getValue());
$this->assertEquals('phpbb.skype.account', $form->get('pf_phpbb_skype')->getValue());
$this->assertEquals('phpbb_twitter', $form->get('pf_phpbb_twitter')->getValue());

View file

@ -0,0 +1,62 @@
<?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.
*
*/
class phpbb_profilefield_type_googleplus_test extends phpbb_test_case
{
public function get_profile_contact_value_data()
{
return array(
array(
'112010191010100',
array(),
'112010191010100',
'Field should return a numerical Google+ ID as is',
),
array(
'TestUsername',
array(),
'+TestUsername',
'Field should return a string Google+ ID with a + prefixed',
),
);
}
/**
* @dataProvider get_profile_contact_value_data
*/
public function test_get_profile_contact_value($value, $field_options, $expected, $description)
{
$user = $this->getMock('\phpbb\user');
$request = $this->getMock('\phpbb\request\request');
$template = $this->getMock('\phpbb\template\template');
$field = new \phpbb\profilefields\type\type_googleplus(
$request,
$template,
$user
);
$default_field_options = array(
'field_type' => '\phpbb\profilefields\type\type_googleplus',
'field_name' => 'field',
'field_id' => 1,
'lang_id' => 1,
'lang_name' => 'field',
'field_required' => false,
'field_validation' => '[\w]+',
);
$field_options = array_merge($default_field_options, $field_options);
$this->assertSame($expected, $field->get_profile_contact_value($value, $field_options), $description);
}
}