diff --git a/phpBB/adm/style/acp_bbcodes.html b/phpBB/adm/style/acp_bbcodes.html index 234ec5a42b..8bc0b5fdc2 100644 --- a/phpBB/adm/style/acp_bbcodes.html +++ b/phpBB/adm/style/acp_bbcodes.html @@ -47,6 +47,17 @@ +
+ {{ lang('APPEARANCE') }} +
+

{{ lang('BBCODE_FONT_ICON_EXPLAIN') }}
+
+ + {{ Icon('font', BBCODE_FONT_ICON, '', false, '', {'id':'bbcode_icon_preview'}) }} +
+
+
+
diff --git a/phpBB/adm/style/admin.js b/phpBB/adm/style/admin.js index a5c090d8c0..1ff1b02d74 100644 --- a/phpBB/adm/style/admin.js +++ b/phpBB/adm/style/admin.js @@ -277,5 +277,10 @@ function parse_document(container) $('.actions a:has(i.acp-icon)').mouseover(function () { $(this).css("text-decoration", "none"); }); + + // Live update BBCode font icon preview + $('#bbcode_font_icon').on('keyup', function(e) { + $('#bbcode_icon_preview').attr('class', "o-icon o-icon-font fa-fw fas icon fa-" + $(this).val()); + }); }); })(jQuery); diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index a905354040..66ef3627ab 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -44,12 +44,12 @@ class acp_bbcodes switch ($action) { case 'add': - $bbcode_match = $bbcode_tpl = $bbcode_helpline = ''; + $bbcode_match = $bbcode_tpl = $bbcode_helpline = $bbcode_font_icon = ''; $display_on_posting = 0; break; case 'edit': - $sql = 'SELECT bbcode_match, bbcode_tpl, display_on_posting, bbcode_helpline + $sql = 'SELECT bbcode_match, bbcode_tpl, display_on_posting, bbcode_helpline, bbcode_font_icon FROM ' . BBCODES_TABLE . ' WHERE bbcode_id = ' . $bbcode_id; $result = $db->sql_query($sql); @@ -65,6 +65,7 @@ class acp_bbcodes $bbcode_tpl = htmlspecialchars($row['bbcode_tpl'], ENT_COMPAT); $display_on_posting = $row['display_on_posting']; $bbcode_helpline = $row['bbcode_helpline']; + $bbcode_font_icon = $row['bbcode_font_icon']; break; case 'modify': @@ -88,6 +89,7 @@ class acp_bbcodes $bbcode_match = $request->variable('bbcode_match', ''); $bbcode_tpl = html_entity_decode($request->variable('bbcode_tpl', '', true), ENT_COMPAT); $bbcode_helpline = $request->variable('bbcode_helpline', '', true); + $bbcode_font_icon = $request->variable('bbcode_font_icon', ''); break; } @@ -106,6 +108,7 @@ class acp_bbcodes 'BBCODE_MATCH' => $bbcode_match, 'BBCODE_TPL' => $bbcode_tpl, 'BBCODE_HELPLINE' => $bbcode_helpline, + 'BBCODE_FONT_ICON' => $bbcode_font_icon, 'DISPLAY_ON_POSTING' => $display_on_posting, ); @@ -157,6 +160,7 @@ class acp_bbcodes * @var string bbcode_match The bbcode usage string to match * @var string bbcode_tpl The bbcode HTML replacement string * @var string bbcode_helpline The bbcode help line string + * @var string bbcode_font_icon The name of the Font Awesome BBCode icon * @var array hidden_fields Array of hidden fields for use when * submitting form when $warn_unsafe is true * @since 3.1.0-a3 @@ -169,6 +173,7 @@ class acp_bbcodes 'bbcode_match', 'bbcode_tpl', 'bbcode_helpline', + 'bbcode_font_icon', 'hidden_fields', ); extract($phpbb_dispatcher->trigger_event('core.acp_bbcodes_modify_create', compact($vars))); @@ -232,6 +237,11 @@ class acp_bbcodes trigger_error($user->lang['BBCODE_HELPLINE_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING); } + if (strlen($bbcode_font_icon) > 50) + { + trigger_error($user->lang['BBCODE_FONT_ICON_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING); + } + /** * Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR. * Using their Numeric Character Reference's Hexadecimal notation. @@ -244,6 +254,7 @@ class acp_bbcodes 'bbcode_tpl' => $bbcode_tpl, 'display_on_posting' => $display_on_posting, 'bbcode_helpline' => $bbcode_helpline, + 'bbcode_font_icon' => $bbcode_font_icon, 'first_pass_match' => $data['first_pass_match'], 'first_pass_replace' => $data['first_pass_replace'], 'second_pass_match' => $data['second_pass_match'], @@ -328,6 +339,7 @@ class acp_bbcodes 'bbcode_match' => $bbcode_match, 'bbcode_tpl' => htmlspecialchars($bbcode_tpl, ENT_COMPAT), 'bbcode_helpline' => $bbcode_helpline, + 'bbcode_font_icon' => $bbcode_font_icon, 'display_on_posting' => $display_on_posting, ))) , 'confirm_bbcode.html'); diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 7a4e70f944..e8f49f0329 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -1081,7 +1081,7 @@ function display_custom_bbcodes() $num_predefined_bbcodes = NUM_PREDEFINED_BBCODES; $sql_ary = [ - 'SELECT' => 'b.bbcode_id, b.bbcode_tag, b.bbcode_helpline, b.bbcode_match', + 'SELECT' => 'b.bbcode_id, b.bbcode_tag, b.bbcode_helpline, b.bbcode_font_icon, b.bbcode_match', 'FROM' => [BBCODES_TABLE => 'b'], 'WHERE' => 'b.display_on_posting = 1', 'ORDER_BY' => 'b.bbcode_tag', @@ -1124,6 +1124,7 @@ function display_custom_bbcodes() 'BBCODE_TAG' => $row['bbcode_tag'], 'BBCODE_TAG_CLEAN' => str_replace('=', '-', $row['bbcode_tag']), 'BBCODE_HELPLINE' => $row['bbcode_helpline'], + 'BBCODE_FONT_ICON' => $row['bbcode_font_icon'], ]; /** diff --git a/phpBB/language/en/acp/posting.php b/phpBB/language/en/acp/posting.php index f252864eb6..c219b1a46a 100644 --- a/phpBB/language/en/acp/posting.php +++ b/phpBB/language/en/acp/posting.php @@ -53,6 +53,9 @@ $lang = array_merge($lang, array( 'BBCODE_HELPLINE_EXPLAIN' => 'This field contains the mouse over text of the BBCode.', 'BBCODE_HELPLINE_TEXT' => 'Help line text', 'BBCODE_HELPLINE_TOO_LONG' => 'The help line you entered is too long.', + 'BBCODE_FONT_ICON' => 'BBCode icon', + 'BBCODE_FONT_ICON_EXPLAIN' => 'Enter the name of a Font Awesome icon (without the fa prefix) to display instead of the BBCode name appearing on the button. Click here to view the list of available icons.', + 'BBCODE_FONT_ICON_TOO_LONG' => 'The icon name you have entered is too long.', 'BBCODE_INVALID_TAG_NAME' => 'The BBCode tag name that you selected already exists.', 'BBCODE_INVALID' => 'Your BBCode is constructed in an invalid form.', diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index d528ef9b2b..20e7acff91 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -78,6 +78,7 @@ $lang = array_merge($lang, array( 'ALL_TOPICS' => 'All Topics', 'ALT_TEXT' => 'Alternative text', 'AND' => 'And', + 'APPEARANCE' => 'Appearance', 'ARE_WATCHING_FORUM' => 'You have subscribed to be notified of new posts in this forum.', 'ARE_WATCHING_TOPIC' => 'You have subscribed to be notified of new posts in this topic.', 'ASCENDING' => 'Ascending', diff --git a/phpBB/phpbb/db/migration/data/v400/add_bbcode_font_icon.php b/phpBB/phpbb/db/migration/data/v400/add_bbcode_font_icon.php new file mode 100644 index 0000000000..1a580dde8c --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v400/add_bbcode_font_icon.php @@ -0,0 +1,51 @@ + +* @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\v400; + +class add_bbcode_font_icon extends \phpbb\db\migration\migration +{ + public function effectively_installed() + { + return $this->db_tools->sql_column_exists($this->table_prefix . 'bbcodes', 'bbcode_font_icon'); + } + + public static function depends_on() + { + return [ + '\phpbb\db\migration\data\v400\dev' + ]; + } + + public function update_schema() + { + return [ + 'add_columns' => [ + $this->table_prefix . 'bbcodes' => [ + 'bbcode_font_icon' => ['VCHAR:50', ''], + ], + ], + ]; + } + + public function revert_schema() + { + return [ + 'drop_columns' => [ + $this->table_prefix . 'bbcodes' => [ + 'bbcode_font_icon', + ], + ], + ]; + } +} diff --git a/phpBB/styles/prosilver/template/posting_buttons.html b/phpBB/styles/prosilver/template/posting_buttons.html index ee98cb57ce..03824ee7c7 100644 --- a/phpBB/styles/prosilver/template/posting_buttons.html +++ b/phpBB/styles/prosilver/template/posting_buttons.html @@ -97,7 +97,11 @@