├── .tx └── config ├── README.md ├── acp ├── quickreply_info.php ├── quickreply_module.php ├── quickreply_plugins_info.php ├── quickreply_plugins_module.php ├── quickreply_qn_info.php └── quickreply_qn_module.php ├── adm └── style │ ├── acp_quickreply.html │ └── event │ ├── acp_forums_normal_settings_append.html │ └── acp_users_prefs_view_prepend.html ├── composer.json ├── config └── services.yml ├── event ├── listener.php ├── listener_ajax.php └── listener_cp.php ├── ext.php ├── functions ├── acp_module_helper.php ├── ajax_helper.php ├── ajax_preview_helper.php ├── captcha_helper.php ├── cp_helper.php ├── form_helper.php ├── listener_helper.php ├── notifications_helper.php └── plugins_helper.php ├── language ├── README.md ├── ar │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── de │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── en │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── es │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── fr │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── hu │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── pl │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── ru │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── sv │ ├── email │ │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php └── tr │ ├── email │ └── quicknick.txt │ ├── info_acp_quickreply.php │ ├── permissions_quickreply.php │ ├── quickreply.php │ ├── quickreply_notification.php │ └── quickreply_ucp.php ├── license.txt ├── migrations ├── v0xx │ ├── v_0_0_1.php │ ├── v_0_1_0.php │ ├── v_0_1_1.php │ ├── v_0_1_2.php │ └── v_0_1_3.php ├── v1xx │ ├── v_1_0_0.php │ ├── v_1_0_0_beta.php │ ├── v_1_0_0_beta2.php │ ├── v_1_0_0_beta3.php │ ├── v_1_0_0_beta4.php │ ├── v_1_0_0_beta5.php │ ├── v_1_0_1.php │ ├── v_1_0_2.php │ ├── v_1_1_0_alpha.php │ ├── v_1_1_0_alpha2.php │ ├── v_1_1_0_beta1.php │ ├── v_1_1_0_dev.php │ ├── v_1_1_0_rc1.php │ └── v_1_1_0_rc2.php └── v2xx │ ├── v_2_0_0_alpha.php │ ├── v_2_0_0_beta.php │ ├── v_2_0_0_beta2.php │ ├── v_2_0_0_dev2.php │ ├── v_2_1_0_alpha.php │ └── v_2_1_0_beta.php ├── notification └── quicknick.php └── styles ├── all ├── template │ ├── event │ │ ├── overall_header_head_append.html │ │ ├── posting_editor_subject_after.html │ │ ├── quickreply_editor_panel_after.html │ │ ├── search_results_header_after.html │ │ ├── search_results_post_before.html │ │ ├── viewtopic_body_footer_before.html │ │ ├── viewtopic_body_post_author_after.html │ │ ├── viewtopic_body_postrow_post_after.html │ │ └── viewtopic_body_postrow_post_before.html │ ├── quickreply_captcha_template.html │ ├── quickreply_core.js │ ├── quickreply_form_buttons.html │ ├── quickreply_init.html │ ├── quickreply_plugins.js │ ├── quickreply_posting.js │ ├── quickreply_searchresults.js │ ├── quickreply_special.js │ ├── quickreply_style.js │ └── translit.js └── theme │ ├── quickreply.css │ └── quickreply_main.css └── prosilver └── template ├── event ├── quickreply_editor_message_before.html └── ucp_prefs_view_radio_buttons_append.html └── quickreply_template.html /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | type = PHP_ARRAY 4 | 5 | [quickreply.quickreply] 6 | file_filter = language//quickreply.php 7 | source_file = language/en/quickreply.php 8 | source_lang = en 9 | 10 | [quickreply.info_acp_quickreply] 11 | file_filter = language//info_acp_quickreply.php 12 | source_file = language/en/info_acp_quickreply.php 13 | source_lang = en 14 | 15 | [quickreply.permissions_quickreply] 16 | file_filter = language//permissions_quickreply.php 17 | source_file = language/en/permissions_quickreply.php 18 | source_lang = en 19 | 20 | [quickreply.quickreply_notification] 21 | file_filter = language//quickreply_notification.php 22 | source_file = language/en/quickreply_notification.php 23 | source_lang = en 24 | 25 | [quickreply.quickreply_ucp] 26 | file_filter = language//quickreply_ucp.php 27 | source_file = language/en/quickreply_ucp.php 28 | source_lang = en 29 | 30 | [quickreply.email_quicknick] 31 | file_filter = language//email/quicknick.txt 32 | source_file = language/en/email/quicknick.txt 33 | source_lang = en 34 | type = TXT 35 | 36 | [quickreply.plurals] 37 | file_filter = language//quickreply_plurals.po 38 | source_file = language/en/quickreply_plurals.pot 39 | source_lang = en 40 | type = PO 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | QuickReply Reloaded 2 | =================== 3 | Extended possibilities to use the QuickReply feature. 4 | 5 | [![Build Status](https://travis-ci.org/BoardTools/QuickReply.svg?branch=master)](https://travis-ci.org/BoardTools/QuickReply) 6 | 7 | ## General overview and features 8 | You can find general description of extension's features as well as a demo, up-to-date download links and the list of supported versions on extension's webpage: 9 | ### http://boardtools.github.io/QuickReply/ 10 | 11 | ## Quick Installation 12 | You can quickly install this extension on the latest version of [phpBB 3.1](https://www.phpbb.com/downloads/) or on the latest development version of [phpBB 3.1-dev](https://github.com/phpbb/phpbb3) by doing the following: 13 | 14 | 1. Upload the extension with "[Upload Extensions](https://github.com/BoardTools/upload)". 15 | 2. Check that you have uploaded the correct files. 16 | 3. Click `Enable`. 17 | 18 | ## Standard Installation 19 | You can install this extension on the latest version of [phpBB 3.1](https://www.phpbb.com/downloads/) or on the latest development version of [phpBB 3.1-dev](https://github.com/phpbb/phpbb3) by doing the following: 20 | 21 | 1. [Download the latest release of the extension](https://github.com/BoardTools/QuickReply). 22 | 2. Check out the existence of the folder `/ext/boardtools/quickreply/` in the root of your board folder. Create folders if necessary. 23 | 3. Copy the contents of the downloaded `quickreply-master` folder to `/ext/boardtools/quickreply/`. If you've done it correctly, you'll have the extension's `composer.json` file at `(your board's root)/ext/boardtools/quickreply/composer.json`. 24 | 4. Navigate in the ACP to `Customise -> Extension Management -> Manage extensions -> QuickReply Reloaded`. 25 | 5. Click `Enable`. 26 | 27 | ## Configuration 28 | You can configure QuickReply by navigating in the ACP to `Extensions` -> `Quick Reply` -> `Quick Reply Settings`. 29 | 30 | ## Uninstallation 31 | 32 | 1. Navigate in the ACP to `Customise -> Extension Management -> Manage extensions`. 33 | 2. Look for `QuickReply Reloaded` under the `Enabled Extensions` list, and click its `Disable` link. 34 | 3. For permanent uninstallation click `Delete Data` and then delete the `/ext/boardtools/quickreply` folder. 35 | 36 | ## License 37 | [GNU General Public License v2](http://opensource.org/licenses/GPL-2.0) 38 | 39 | © 2014 - 2021 Татьяна5 and LavIgor 40 | -------------------------------------------------------------------------------- /acp/quickreply_info.php: -------------------------------------------------------------------------------- 1 | '\boardtools\quickreply\acp\quickreply_module', 18 | 'title' => 'ACP_QUICKREPLY', 19 | 'version' => '0.0.1', 20 | 'modes' => array( 21 | 'config_quickreply' => array('title' => 'ACP_QUICKREPLY_EXPLAIN', 'auth' => 'ext_boardtools/quickreply && acl_a_quickreply', 'cat' => array('ACP_QUICKREPLY_EXPLAIN')), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /acp/quickreply_module.php: -------------------------------------------------------------------------------- 1 | db = $db; 24 | 25 | $this->ext_name ='boardtools/quickreply'; 26 | $this->ext_langname = 'quickreply'; 27 | $this->tpl_name = 'acp_quickreply'; 28 | $this->form_key = 'config_quickreply'; 29 | add_form_key($this->form_key); 30 | 31 | parent::main($id, $mode); 32 | } 33 | 34 | /** 35 | * Generates the array of display_vars 36 | */ 37 | protected function generate_display_vars() 38 | { 39 | $this->display_vars = array( 40 | 'lang' => array('acp/board', 'acp/forums'), 41 | 'title' => 'ACP_QUICKREPLY_TITLE', 42 | 'vars' => array( 43 | 'legend1' => 'ACP_QR_LEGEND_GENERAL', 44 | 'allow_quick_reply' => array('lang' => 'ALLOW_QUICK_REPLY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 45 | 'forum_qr_enable' => array('lang' => 'ACP_QR_ENABLE_QUICK_REPLY', 'lang_explain2' => 'ACP_QR_LEAVE_AS_IS_EXPLAIN', 'validate' => 'bool', 'type' => 'custom', 'method' => 'enable_only_radio', 'explain' => true), 46 | 'qr_allow_for_guests' => array('lang' => 'ACP_QR_ALLOW_FOR_GUESTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 47 | // 48 | 'legend2' => 'ACP_QR_LEGEND_DISPLAY', 49 | 'forum_qr_form_type' => array('lang' => 'ACP_QR_FORM_TYPE', 'lang_explain' => 'ACP_QR_LEAVE_AS_IS_EXPLAIN', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_qr_form_type', 'explain' => true), 50 | 'qr_ctrlenter' => array('lang' => 'ACP_QR_CTRLENTER_NOTICE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 51 | 'qr_attach' => array('lang' => 'ACP_QR_ATTACH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 52 | 'qr_bbcode' => array('lang' => 'ACP_QR_BBCODE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 53 | 'qr_smilies' => array('lang' => 'ACP_QR_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 54 | 'qr_capslock_transfer' => array('lang' => 'ACP_QR_CAPSLOCK', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 55 | 'qr_show_button_translit' => array('lang' => 'ACP_QR_SHOW_BUTTON_TRANSLIT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 56 | 'qr_read_next' => array('lang' => 'ACP_QR_READ_NEXT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 57 | // 58 | 'legend3' => 'ACP_QR_LEGEND_AJAX', 59 | 'qr_ajax_pagination' => array('lang' => 'ACP_QR_AJAX_PAGINATION', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 60 | 'qr_scroll_time' => array('lang' => 'ACP_QR_SCROLL_TIME', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true), 61 | 'qr_ajax_submit' => array('lang' => 'ACP_QR_AJAX_SUBMIT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 62 | 'forum_qr_ajax_submit' => array('lang' => 'ACP_QR_ENABLE_AJAX_SUBMIT', 'lang_explain2' => 'ACP_QR_LEAVE_AS_IS_EXPLAIN', 'validate' => 'bool', 'type' => 'custom', 'method' => 'enable_only_radio', 'explain' => true), 63 | // 64 | 'legend4' => 'ACP_SUBMIT_CHANGES', 65 | ), 66 | ); 67 | 68 | // Set default values. 69 | $this->new_config['forum_qr_enable'] = false; 70 | $this->new_config['forum_qr_ajax_submit'] = false; 71 | $this->new_config['forum_qr_form_type'] = -1; 72 | } 73 | 74 | /** 75 | * Generates radio option yes/leave as is 76 | */ 77 | public function enable_only_radio($value, $key) 78 | { 79 | $radio_ary = array(1 => 'YES', 0 => 'ACP_QR_LEAVE_AS_IS'); 80 | 81 | return h_radio('config[' . $key . ']', $radio_ary, $value); 82 | } 83 | 84 | /** 85 | * Select quick reply form type. 86 | * 87 | * @param string $value Current value 88 | * @param string $key Current config key 89 | * @return string 90 | */ 91 | function select_qr_form_type($value, $key = '') 92 | { 93 | $form_types = array( 94 | -1 => 'ACP_QR_LEAVE_AS_IS', 95 | 0 => 'ACP_QR_FORM_TYPE_STANDARD', 96 | 1 => 'ACP_QR_FORM_TYPE_FIXED', 97 | ); 98 | 99 | return ''; 102 | } 103 | 104 | /** 105 | * Applies forum based settings to all forums if requested 106 | * 107 | * @param array $cfg_array Array with new values 108 | */ 109 | public function apply_forum_settings($cfg_array) 110 | { 111 | $sql_update_array = array(); 112 | 113 | if ($cfg_array['forum_qr_enable']) 114 | { 115 | enable_bitfield_column_flag(FORUMS_TABLE, 'forum_flags', log(FORUM_FLAG_QUICK_REPLY, 2)); 116 | } 117 | 118 | if ($cfg_array['forum_qr_ajax_submit']) 119 | { 120 | $sql_update_array['qr_ajax_submit'] = (int) $cfg_array['forum_qr_ajax_submit']; 121 | } 122 | 123 | if ($cfg_array['forum_qr_form_type'] > -1) 124 | { 125 | $sql_update_array['qr_form_type'] = (int) $cfg_array['forum_qr_form_type']; 126 | } 127 | 128 | if (sizeof($sql_update_array)) 129 | { 130 | $sql = 'UPDATE ' . FORUMS_TABLE . ' 131 | SET ' . $this->db->sql_build_array('UPDATE', $sql_update_array); 132 | $this->db->sql_query($sql); 133 | } 134 | } 135 | 136 | /** 137 | * Sets the new configuration array 138 | * 139 | * @param array $cfg_array Array with new values 140 | */ 141 | public function set_config($cfg_array) 142 | { 143 | if (!$this->invalid_var('qr_ajax_submit', $cfg_array)) 144 | { 145 | $this->apply_forum_settings($cfg_array); 146 | } 147 | parent::set_config($cfg_array); 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /acp/quickreply_plugins_info.php: -------------------------------------------------------------------------------- 1 | '\boardtools\quickreply\acp\quickreply_plugins_module', 18 | 'title' => 'ACP_QUICKREPLY_PLUGINS', 19 | 'version' => '0.0.1', 20 | 'modes' => array( 21 | 'config_quickreply_plugins' => array('title' => 'ACP_QUICKREPLY_PLUGINS_EXPLAIN', 'auth' => 'ext_boardtools/quickreply && acl_a_quickreply', 'cat' => array('ACP_QUICKREPLY_EXPLAIN')), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /acp/quickreply_plugins_module.php: -------------------------------------------------------------------------------- 1 | ext_name ='boardtools/quickreply'; 19 | $this->ext_langname = 'quickreply'; 20 | $this->tpl_name = 'acp_quickreply'; 21 | $this->form_key = 'config_quickreply_plugins'; 22 | add_form_key($this->form_key); 23 | 24 | parent::main($id, $mode); 25 | } 26 | 27 | /** 28 | * Generates the array of display_vars 29 | */ 30 | protected function generate_display_vars() 31 | { 32 | $this->display_vars = array( 33 | 'title' => 'ACP_QUICKREPLY_PLUGINS_TITLE', 34 | 'vars' => array( 35 | 'legend1' => 'ACP_QR_LEGEND_SPECIAL', 36 | 'qr_enable_re' => array('lang' => 'ACP_QR_ENABLE_RE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 37 | 'qr_show_subjects' => array('lang' => 'ACP_QR_SHOW_SUBJECTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 38 | 'qr_show_subjects_in_search' => array('lang' => 'ACP_QR_SHOW_SUBJECTS_IN_SEARCH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 39 | 'qr_hide_subject_box' => array('lang' => 'ACP_QR_HIDE_SUBJECT_BOX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 40 | // 41 | 'legend2' => 'ACP_SUBMIT_CHANGES', 42 | ), 43 | ); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /acp/quickreply_qn_info.php: -------------------------------------------------------------------------------- 1 | '\boardtools\quickreply\acp\quickreply_qn_module', 18 | 'title' => 'ACP_QUICKREPLY_QN', 19 | 'version' => '0.0.1', 20 | 'modes' => array( 21 | 'config_quickreply_qn' => array('title' => 'ACP_QUICKREPLY_QN_EXPLAIN', 'auth' => 'ext_boardtools/quickreply && acl_a_quickreply', 'cat' => array('ACP_QUICKREPLY_EXPLAIN')), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /acp/quickreply_qn_module.php: -------------------------------------------------------------------------------- 1 | ext_name ='boardtools/quickreply'; 19 | $this->ext_langname = 'quickreply'; 20 | $this->tpl_name = 'acp_quickreply'; 21 | $this->form_key = 'config_quickreply_qn'; 22 | add_form_key($this->form_key); 23 | 24 | parent::main($id, $mode); 25 | } 26 | 27 | /** 28 | * Generates the array of display_vars 29 | */ 30 | protected function generate_display_vars() 31 | { 32 | $this->display_vars = array( 33 | 'title' => 'ACP_QUICKREPLY_QN_TITLE', 34 | 'vars' => array( 35 | 'legend1' => 'ACP_QR_LEGEND_QUICKQUOTE', 36 | 'qr_quickquote' => array('lang' => 'ACP_QR_QUICKQUOTE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 37 | 'qr_quickquote_button' => array('lang' => 'ACP_QR_QUICKQUOTE_BUTTON', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 38 | 'qr_full_quote' => array('lang' => 'ACP_QR_FULL_QUOTE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 39 | 'qr_last_quote' => array('lang' => 'ACP_QR_LAST_QUOTE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 40 | // 41 | 'legend2' => 'ACP_QR_LEGEND_QUICKNICK', 42 | 'qr_quicknick' => array('lang' => 'ACP_QR_QUICKNICK', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 43 | 'qr_quicknick_string' => array('lang' => 'ACP_QR_QUICKNICK_STRING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 44 | 'qr_quicknick_ref' => array('lang' => 'ACP_QR_QUICKNICK_REF', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 45 | 'qr_comma' => array('lang' => 'ACP_QR_COMMA', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 46 | 'qr_color_nickname' => array('lang' => 'ACP_QR_COLOUR_NICKNAME', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 47 | 'qr_quicknick_pm' => array('lang' => 'ACP_QR_QUICKNICK_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 48 | // 49 | 'legend3' => 'ACP_SUBMIT_CHANGES', 50 | ), 51 | ); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /adm/style/acp_quickreply.html: -------------------------------------------------------------------------------- 1 | {% include 'overall_header.html' %} 2 | 3 | 4 |

{{ lang('TITLE') }}

5 | 6 |

{{ lang('TITLE_EXPLAIN') }}

7 | 8 | {% if S_ERROR %} 9 |
10 |

{{ lang('WARNING') }}

11 |

{{ ERROR_MSG }}

12 |
13 | {% endif %} 14 | 15 |
16 | 17 | {% for option in options %} 18 | {% if option.S_LEGEND %} 19 | {% if not(option.S_FIRST_ROW) %} 20 | 21 | {% endif %} 22 |
23 | {{ option.LEGEND }} 24 | {% if option.LEGEND_EXPLAIN != '' %}

{{ option.LEGEND_EXPLAIN }}

{% endif %} 25 | {% else %} 26 | 27 |
28 |
{% if option.S_EXPLAIN %}
{{ option.TITLE_EXPLAIN }}{% endif %}
29 |
{{ option.CONTENT }}
30 |
31 | 32 | {% endif %} 33 | {% endfor %} 34 | 35 |

36 |   37 | 38 |

39 | {{ S_FORM_TOKEN }} 40 |
41 |
42 | 43 | {% include 'overall_footer.html' %} 44 | -------------------------------------------------------------------------------- /adm/style/event/acp_forums_normal_settings_append.html: -------------------------------------------------------------------------------- 1 | {% if S_QR_AJAX_SUBMIT %} 2 |
3 |

{{ lang('ACP_QR_FORUM_AJAX_SUBMIT_EXPLAIN') }}
4 |
5 |
6 |
7 | {% endif %} 8 |
9 |
10 |
11 | 19 |
20 |
21 | -------------------------------------------------------------------------------- /adm/style/event/acp_users_prefs_view_prepend.html: -------------------------------------------------------------------------------- 1 | {% if S_AJAX_PAGINATION %} 2 |
3 |
4 |
5 | 6 | 7 |
8 |
9 | {% endif %} 10 |
11 |
12 |
13 | 14 | 15 |
16 |
17 | {% if S_QR_ALLOW_SOFT_SCROLL %} 18 |
19 |
20 |
21 | 22 | 23 |
24 |
25 | {% endif %} 26 |
27 |
28 |
29 | 30 | 31 |
32 |
33 |
34 |
35 |
36 | 37 | 38 |
39 |
40 | {% if S_QUICKNICK_CHANGE_TYPE %} 41 |
42 |
43 |
44 | 45 | 46 |
47 |
48 | {% endif %} 49 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "boardtools/quickreply", 3 | "type": "phpbb-extension", 4 | "description": "Extended possibilities to use the QuickReply feature.", 5 | "homepage": "http://boardtools.github.io/QuickReply/", 6 | "version": "2.1.1-beta", 7 | "license": "GPL-2.0-only", 8 | "authors": [ 9 | { 10 | "name": "Татьяна5", 11 | "homepage": "http://phpbbguru.net", 12 | "role": "Developer" 13 | }, 14 | { 15 | "name": "Igor Lavrov", 16 | "homepage": "https://github.com/lavigor", 17 | "role": "Developer" 18 | } 19 | ], 20 | "require": { 21 | "php": ">=7.1.3" 22 | }, 23 | "require-dev": { 24 | "phpbb/epv": "dev-master" 25 | }, 26 | "extra": { 27 | "display-name": "QuickReply Reloaded", 28 | "soft-require": { 29 | "phpbb/phpbb": "3.3.*" 30 | }, 31 | "version-check": { 32 | "host": "boardtools.github.io", 33 | "directory": "/QuickReply", 34 | "filename": "version.json" 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /config/services.yml: -------------------------------------------------------------------------------- 1 | services: 2 | boardtools.quickreply.listener: 3 | class: boardtools\quickreply\event\listener 4 | arguments: 5 | - '@auth' 6 | - '@config' 7 | - '@template' 8 | - '@user' 9 | - '@request' 10 | - '@boardtools.quickreply.listener_helper' 11 | tags: 12 | - { name: event.listener } 13 | 14 | boardtools.quickreply.listener_ajax: 15 | class: boardtools\quickreply\event\listener_ajax 16 | arguments: 17 | - '@config' 18 | - '@template' 19 | - '@user' 20 | - '@request' 21 | - '@boardtools.quickreply.ajax_helper' 22 | - '@boardtools.quickreply.listener_helper' 23 | tags: 24 | - { name: event.listener } 25 | 26 | boardtools.quickreply.listener_cp: 27 | class: boardtools\quickreply\event\listener_cp 28 | arguments: 29 | - '@template' 30 | - '@user' 31 | - '@boardtools.quickreply.cp_helper' 32 | tags: 33 | - { name: event.listener } 34 | 35 | boardtools.quickreply.ajax_helper: 36 | class: boardtools\quickreply\functions\ajax_helper 37 | arguments: 38 | - '@auth' 39 | - '@config' 40 | - '@template' 41 | - '@user' 42 | - '@dbal.conn' 43 | - '@content.visibility' 44 | - '@request' 45 | - '@template_context' 46 | - '%core.root_path%' 47 | - '%core.php_ext%' 48 | - '@boardtools.quickreply.ajax_preview_helper' 49 | 50 | boardtools.quickreply.ajax_preview_helper: 51 | class: boardtools\quickreply\functions\ajax_preview_helper 52 | arguments: 53 | - '@auth' 54 | - '@config' 55 | - '@user' 56 | - '@request' 57 | 58 | boardtools.quickreply.captcha_helper: 59 | class: boardtools\quickreply\functions\captcha_helper 60 | arguments: 61 | - '@config' 62 | - '@template' 63 | - '@request' 64 | - '@captcha.factory' 65 | 66 | boardtools.quickreply.cp_helper: 67 | class: boardtools\quickreply\functions\cp_helper 68 | arguments: 69 | - '@config' 70 | - '@request' 71 | 72 | boardtools.quickreply.form_helper: 73 | class: boardtools\quickreply\functions\form_helper 74 | arguments: 75 | - '@auth' 76 | - '@config' 77 | - '@template' 78 | - '@user' 79 | - '@cache' 80 | - '@plupload' 81 | - '@mimetype.guesser' 82 | - '%core.root_path%' 83 | - '%core.php_ext%' 84 | 85 | boardtools.quickreply.listener_helper: 86 | class: boardtools\quickreply\functions\listener_helper 87 | arguments: 88 | - '@auth' 89 | - '@config' 90 | - '@template' 91 | - '@user' 92 | - '@request' 93 | - '@boardtools.quickreply.captcha_helper' 94 | - '@boardtools.quickreply.form_helper' 95 | - '@boardtools.quickreply.plugins_helper' 96 | - '@boardtools.quickreply.notifications_helper' 97 | - '%core.root_path%' 98 | - '%core.php_ext%' 99 | 100 | boardtools.quickreply.notifications_helper: 101 | class: boardtools\quickreply\functions\notifications_helper 102 | arguments: 103 | - '@auth' 104 | - '@user' 105 | - '@notification_manager' 106 | 107 | boardtools.quickreply.plugins_helper: 108 | class: boardtools\quickreply\functions\plugins_helper 109 | arguments: 110 | - '@auth' 111 | - '@config' 112 | - '@user' 113 | - '@ext.manager' 114 | 115 | boardtools.quickreply.notification.type.quicknick: 116 | class: boardtools\quickreply\notification\quicknick 117 | shared: false # service MUST not be shared for this to work! 118 | parent: notification.type.quote 119 | tags: 120 | - { name: notification.type } 121 | -------------------------------------------------------------------------------- /event/listener_ajax.php: -------------------------------------------------------------------------------- 1 | config = $config; 59 | $this->template = $template; 60 | $this->user = $user; 61 | $this->request = $request; 62 | $this->ajax_helper = $ajax_helper; 63 | $this->helper = $helper; 64 | $this->img_status = false; 65 | $this->flash_status = false; 66 | $this->quote_status = false; 67 | } 68 | 69 | /** 70 | * Assign functions defined in this class to event listeners in the core 71 | * 72 | * @return array 73 | */ 74 | static public function getSubscribedEvents() 75 | { 76 | // We set lower priority for some events for the case if another extension wants to use those events. 77 | return [ 78 | 'core.viewtopic_get_post_data' => ['viewtopic_modify_sql', -2], 79 | 'core.viewtopic_modify_page_title' => ['ajaxify_viewtopic_data', -2], 80 | 'core.posting_modify_bbcode_status' => ['get_bbcode_status', -2], 81 | 'core.posting_modify_submission_errors' => 'detect_new_posts', 82 | 'core.posting_modify_message_text' => 'ajax_preview', 83 | 'core.submit_post_end' => ['ajax_submit', -2], 84 | 'rxu.postsmerging.posts_merging_end' => ['ajax_submit', -2], 85 | ]; 86 | } 87 | 88 | /** 89 | * Reduce the set of elements to the one that we need to retrieve. 90 | * 91 | * @param object $event The event object 92 | */ 93 | public function viewtopic_modify_sql($event) 94 | { 95 | $this->helper->captcha_helper->check_captcha_refresh(); 96 | 97 | $post_list = $event['post_list']; 98 | $current_post = (int) $this->request->variable('qr_cur_post_id', 0); 99 | if ($this->ajax_helper->no_refresh($current_post, $post_list)) 100 | { 101 | $this->ajax_helper->qr_merged = $qr_get_current = $this->request->is_set('qr_get_current'); 102 | $sql_ary = $event['sql_ary']; 103 | 104 | $compare = ( 105 | $qr_get_current || 106 | in_array($current_post, $post_list) && $this->ajax_helper->check_post_merge() 107 | ) ? ' >= ' : ' > '; 108 | $sql_ary['WHERE'] .= ' AND p.post_id' . $compare . $current_post; 109 | 110 | $this->ajax_helper->qr_insert = true; 111 | $this->ajax_helper->qr_first = ($current_post == min($post_list)) && $qr_get_current; 112 | 113 | $event['sql_ary'] = $sql_ary; 114 | 115 | // Check whether no posts are found. 116 | if (!$qr_get_current && max($post_list) <= $current_post) 117 | { 118 | $this->ajax_helper->output_errors([$this->user->lang['NO_POSTS_TIME_FRAME']]); 119 | } 120 | } 121 | } 122 | 123 | /** 124 | * Template data for Ajax submit 125 | * 126 | * @param object $event The event object 127 | */ 128 | public function ajaxify_viewtopic_data($event) 129 | { 130 | $forum_id = $event['forum_id']; 131 | $topic_data = $event['topic_data']; 132 | $post_list = $event['post_list']; 133 | 134 | // Ajaxify viewtopic data 135 | if ($this->ajax_helper->qr_is_ajax()) 136 | { 137 | $this->ajax_helper->ajax_response($event['page_title'], max($post_list), $forum_id); 138 | } 139 | 140 | if ($this->helper->qr_is_enabled($forum_id, $topic_data)) 141 | { 142 | if ($topic_data['qr_ajax_submit']) 143 | { 144 | $this->template->append_var('QR_HIDDEN_FIELDS', build_hidden_fields([ 145 | 'qr' => 1, 146 | 'qr_cur_post_id' => (int) max($post_list) 147 | ])); 148 | } 149 | 150 | // Add lastclick for phpBB 3.2.4+ 151 | if (phpbb_version_compare($this->config['version'], '3.2.4', '>=')) 152 | { 153 | $qr_hidden_fields = [ 154 | 'lastclick' => (int) time(), 155 | ]; 156 | 157 | $this->template->append_var('QR_HIDDEN_FIELDS', build_hidden_fields($qr_hidden_fields)); 158 | } 159 | 160 | $this->template->assign_vars($this->ajax_helper->template_variables_for_ajax($topic_data)); 161 | } 162 | } 163 | 164 | /** 165 | * Get bbcode status 166 | * 167 | * @param object $event The event object 168 | */ 169 | public function get_bbcode_status($event) 170 | { 171 | $this->img_status = $event['img_status']; 172 | $this->flash_status = $event['flash_status']; 173 | $this->quote_status = $event['quote_status']; 174 | } 175 | 176 | /** 177 | * Do not post the message if there are some new ones 178 | * 179 | * @param object $event The event object 180 | */ 181 | public function detect_new_posts($event) 182 | { 183 | // Ajax submit 184 | if ($this->ajax_helper->qr_is_ajax_submit()) 185 | { 186 | $post_data = $event['post_data']; 187 | $error = $event['error']; 188 | $lastclick = $this->request->variable('lastclick', time()); 189 | 190 | $refresh_token = $this->ajax_helper->check_form_token($error, $post_data); 191 | $this->ajax_helper->check_errors($error); 192 | $event['error'] = $error; 193 | 194 | // New form token is always sent if needed. 195 | if ($this->helper->post_needs_review($lastclick, $post_data)) 196 | { 197 | $forum_id = (int) $post_data['forum_id']; 198 | $topic_id = (int) $post_data['topic_id']; 199 | $this->ajax_helper->send_next_post_url($forum_id, $topic_id, $lastclick); 200 | } 201 | else if ($refresh_token) 202 | { 203 | // Send only the new form token as a response. 204 | $this->ajax_helper->send_form_token(); 205 | } 206 | } 207 | } 208 | 209 | /** 210 | * Ajax submit - error messages and preview 211 | * 212 | * @param object $event The event object 213 | */ 214 | public function ajax_preview($event) 215 | { 216 | // Ajax submit 217 | if ($this->ajax_helper->qr_is_ajax_submit() && $this->request->is_set_post('preview')) 218 | { 219 | $this->ajax_helper->ajax_preview_helper->check_preview_error($event, $this->img_status, $this->flash_status, $this->quote_status); 220 | $this->ajax_helper->ajax_preview_helper->ajax_preview($event, $this->img_status, $this->flash_status, $this->quote_status); 221 | } 222 | } 223 | 224 | /** 225 | * Check Ajax submit 226 | * 227 | * @param object $event The event object 228 | */ 229 | public function ajax_submit($event) 230 | { 231 | if ($this->ajax_helper->qr_is_ajax_submit()) 232 | { 233 | $this->ajax_helper->ajax_submit($event); 234 | } 235 | } 236 | } 237 | -------------------------------------------------------------------------------- /event/listener_cp.php: -------------------------------------------------------------------------------- 1 | template = $template; 38 | $this->user = $user; 39 | $this->cp_helper = $cp_helper; 40 | } 41 | 42 | /** 43 | * Assign functions defined in this class to event listeners in the core 44 | * 45 | * @return array 46 | */ 47 | static public function getSubscribedEvents() 48 | { 49 | // We set lower priority for some events for the case if another extension wants to use those events. 50 | return [ 51 | 'core.ucp_prefs_view_data' => 'ucp_prefs_get_data', 52 | 'core.ucp_prefs_view_update_data' => 'ucp_prefs_set_data', 53 | 'core.acp_users_prefs_modify_data' => 'acp_prefs_get_data', 54 | 'core.acp_users_prefs_modify_template_data' => 'acp_prefs_template_data', 55 | 'core.acp_users_prefs_modify_sql' => 'ucp_prefs_set_data', // For the ACP. 56 | 'core.acp_manage_forums_request_data' => 'acp_manage_forums_get_data', 57 | 'core.acp_manage_forums_display_form' => 'acp_manage_forums_template_data', 58 | 'core.acp_manage_forums_initialise_data' => 'acp_manage_forums_initialise_data', 59 | 'core.permissions' => 'add_permission', 60 | ]; 61 | } 62 | 63 | /** 64 | * Get user's options and display them in UCP Prefs View page 65 | * 66 | * @param object $event The event object 67 | */ 68 | public function ucp_prefs_get_data($event) 69 | { 70 | $data = $event['data']; 71 | 72 | // Request the user option vars and add them to the data array 73 | $data = array_merge($data, $this->cp_helper->qr_get_user_prefs_data($this->user->data)); 74 | 75 | // Output the data vars to the template 76 | $this->user->add_lang_ext('boardtools/quickreply', 'quickreply_ucp'); 77 | $this->template->assign_vars($this->cp_helper->qr_user_prefs_data($data)); 78 | 79 | $event['data'] = $data; 80 | } 81 | 82 | /** 83 | * Add user options' state into the sql_array 84 | * 85 | * @param object $event The event object 86 | */ 87 | public function ucp_prefs_set_data($event) 88 | { 89 | $event['sql_ary'] = array_merge($event['sql_ary'], $this->cp_helper->qr_set_user_prefs_data($event['data'])); 90 | } 91 | 92 | /** 93 | * Get user's options and display them in ACP Prefs View page 94 | * 95 | * @param object $event The event object 96 | */ 97 | public function acp_prefs_get_data($event) 98 | { 99 | $data = $event['data']; 100 | $user_row = $event['user_row']; 101 | $data = array_merge($data, $this->cp_helper->qr_get_user_prefs_data($user_row)); 102 | $event['data'] = $data; 103 | } 104 | 105 | /** 106 | * Assign template data in the ACP 107 | * 108 | * @param object $event The event object 109 | */ 110 | public function acp_prefs_template_data($event) 111 | { 112 | $this->user->add_lang_ext('boardtools/quickreply', 'quickreply_ucp'); 113 | $data = $event['data']; 114 | $user_prefs_data = $event['user_prefs_data']; 115 | $user_prefs_data = array_merge($user_prefs_data, $this->cp_helper->qr_user_prefs_data($data)); 116 | $event['user_prefs_data'] = $user_prefs_data; 117 | } 118 | 119 | /** 120 | * Get forum's options and display them in ACP Forums page 121 | * 122 | * @param object $event The event object 123 | */ 124 | public function acp_manage_forums_get_data($event) 125 | { 126 | $forum_data = $event['forum_data']; 127 | $forum_data = array_merge($forum_data, $this->cp_helper->qr_get_forums_data()); 128 | $event['forum_data'] = $forum_data; 129 | } 130 | 131 | /** 132 | * Assign template data in the ACP 133 | * 134 | * @param object $event The event object 135 | */ 136 | public function acp_manage_forums_template_data($event) 137 | { 138 | $this->user->add_lang_ext('boardtools/quickreply', 'info_acp_quickreply'); 139 | $template_data = $event['template_data']; 140 | $forum_data = $event['forum_data']; 141 | $template_data = array_merge($template_data, $this->cp_helper->qr_forums_data($forum_data)); 142 | $event['template_data'] = $template_data; 143 | } 144 | 145 | /** 146 | * Initialise forum data 147 | * 148 | * @param object $event The event object 149 | */ 150 | public function acp_manage_forums_initialise_data($event) 151 | { 152 | $forum_data = $event['forum_data']; 153 | $forum_data = array_merge($forum_data, $this->cp_helper->qr_init_forums_data($forum_data)); 154 | $event['forum_data'] = $forum_data; 155 | } 156 | 157 | /** 158 | * Add permissions 159 | * 160 | * @param object $event The event object 161 | */ 162 | public function add_permission($event) 163 | { 164 | $permissions = $event['permissions']; 165 | $permissions['a_quickreply'] = ['lang' => 'ACL_A_QUICKREPLY', 'cat' => 'misc']; 166 | $permissions['f_qr_change_subject'] = ['lang' => 'ACL_F_QR_CHANGE_SUBJECT', 'cat' => 'post']; 167 | $permissions['f_qr_full_quote'] =['lang' => 'ACL_F_QR_FULL_QUOTE', 'cat' => 'post']; 168 | $event['permissions'] = $permissions; 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /ext.php: -------------------------------------------------------------------------------- 1 | container->get('notification_manager'); 41 | $phpbb_notifications->$notify_method('boardtools.quickreply.notification.type.quicknick'); 42 | return 'notifications'; 43 | } 44 | else 45 | { 46 | // Run parent step method 47 | return parent::$func_name($old_state); 48 | } 49 | } 50 | 51 | /** 52 | * Overwrite enable_step to enable notifications 53 | * before any included migrations are installed. 54 | * 55 | * @param mixed $old_state State returned by previous call of this method 56 | * @return mixed Returns false after last step, otherwise temporary state 57 | */ 58 | public function enable_step($old_state) 59 | { 60 | return $this->steps($old_state, 'enable_notifications', 'enable_step'); 61 | } 62 | 63 | /** 64 | * Overwrite disable_step to disable notifications 65 | * before the extension is disabled. 66 | * 67 | * @param mixed $old_state State returned by previous call of this method 68 | * @return mixed Returns false after last step, otherwise temporary state 69 | */ 70 | public function disable_step($old_state) 71 | { 72 | return $this->steps($old_state, 'disable_notifications', 'disable_step'); 73 | } 74 | 75 | /** 76 | * Overwrite purge_step to purge notifications before 77 | * any included and installed migrations are reverted. 78 | * 79 | * @param mixed $old_state State returned by previous call of this method 80 | * @return mixed Returns false after last step, otherwise temporary state 81 | */ 82 | public function purge_step($old_state) 83 | { 84 | return $this->steps($old_state, 'purge_notifications', 'purge_step'); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /functions/ajax_preview_helper.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 44 | $this->config = $config; 45 | $this->user = $user; 46 | $this->request = $request; 47 | } 48 | 49 | /** 50 | * Checks whether this is an ajax request and handles ajax preview 51 | * 52 | * @param object $event The event object 53 | * @param bool img_status Image BBCode status 54 | * @param bool flash_status Flash BBCode status 55 | * @param bool quote_status Quote BBCode status 56 | */ 57 | public function ajax_preview($event, $img_status, $flash_status, $quote_status) 58 | { 59 | $post_data = $event['post_data']; 60 | $forum_id = (int) $post_data['forum_id']; 61 | /** @var \parse_message $message_parser */ 62 | $message_parser = $event['message_parser']; 63 | 64 | /*$message_parser->message = $this->request->variable('message', '', true); 65 | if (!empty($message_parser->message)) 66 | { 67 | $message_parser->parse($post_data['enable_bbcode'], ($this->config['allow_post_links']) ? $post_data['enable_urls'] : false, $post_data['enable_smilies'], $img_status, $flash_status, $quote_status, $this->config['allow_post_links']); 68 | }*/ 69 | $this->preview_message = $message_parser->format_display($post_data['enable_bbcode'], $post_data['enable_urls'], $post_data['enable_smilies'], false); 70 | 71 | // Attachment Preview 72 | $this->preview_attachments($message_parser, $forum_id); 73 | 74 | ajax_helper::send_json([ 75 | 'status' => 'preview', 76 | 'PREVIEW_TITLE' => $this->user->lang['PREVIEW'], 77 | 'PREVIEW_TEXT' => $this->preview_message, 78 | 'PREVIEW_ATTACH' => $this->preview_attachments, 79 | ]); 80 | } 81 | 82 | /** 83 | * Attachments preview 84 | * 85 | * @param \parse_message $message_parser Message parser object 86 | * @param int $forum_id Forum ID 87 | */ 88 | public function preview_attachments($message_parser, $forum_id) 89 | { 90 | if (sizeof($message_parser->attachment_data)) 91 | { 92 | $update_count = []; 93 | $attachment_data = $message_parser->attachment_data; 94 | 95 | parse_attachments($forum_id, $this->preview_message, $attachment_data, $update_count, true); 96 | $this->build_attach_box($attachment_data); 97 | 98 | unset($attachment_data); 99 | } 100 | } 101 | 102 | /** 103 | * Build attach box for not-inline attachments 104 | * 105 | * @param array $attachment_data 106 | */ 107 | public function build_attach_box($attachment_data) 108 | { 109 | $this->preview_attachments = ''; 110 | foreach ($attachment_data as $i => $attachment) 111 | { 112 | $this->preview_attachments .= '
' . $attachment . '
'; 113 | } 114 | if (!empty($this->preview_attachments)) 115 | { 116 | $this->preview_attachments = '
' . $this->user->lang['ATTACHMENTS'] . '
' . $this->preview_attachments . '
'; 117 | } 118 | } 119 | 120 | // 121 | public function check_preview_error($event, $img_status, $flash_status, $quote_status) 122 | { 123 | $message_parser = $event['message_parser']; 124 | $error = $event['error']; 125 | $post_data = $event['post_data']; 126 | 127 | // check form 128 | if (!check_form_key('posting')) 129 | { 130 | $error[] = $this->user->lang['FORM_INVALID']; 131 | } 132 | 133 | /** 134 | * Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR. 135 | * Using their Numeric Character Reference's Hexadecimal notation. 136 | * Check the permissions for posting Emojis first. 137 | */ 138 | 139 | if (!$this->auth->acl_get('u_emoji')) 140 | { 141 | /** 142 | * Check for out-of-bounds characters that are currently 143 | * not supported by utf8_bin in MySQL 144 | */ 145 | if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $post_data['post_subject'], $matches)) 146 | { 147 | $character_list = implode('
', $matches[0]); 148 | 149 | $error[] = $this->user->lang('UNSUPPORTED_CHARACTERS_SUBJECT', $character_list); 150 | } 151 | } 152 | 153 | $message_parser->message = $this->request->variable('message', '', true); 154 | if (!empty($message_parser->message)) 155 | { 156 | $message_parser->parse($post_data['enable_bbcode'], ($this->config['allow_post_links']) ? $post_data['enable_urls'] : false, $post_data['enable_smilies'], $img_status, $flash_status, $quote_status, $this->config['allow_post_links']); 157 | } 158 | 159 | if (count($message_parser->warn_msg)) 160 | { 161 | $error[] = implode('
', $message_parser->warn_msg); 162 | $message_parser->warn_msg = array(); 163 | $event['message_parser'] = $message_parser; 164 | } 165 | 166 | if (sizeof($error)) 167 | { 168 | ajax_helper::send_json([ 169 | 'status' => 'preview', 170 | 'error' => true, 171 | 'title' => $this->user->lang['INFORMATION'], 172 | 'message' => implode('
', $error), 173 | ]); 174 | } 175 | 176 | $event['message_parser'] = $message_parser; 177 | } 178 | } 179 | -------------------------------------------------------------------------------- /functions/captcha_helper.php: -------------------------------------------------------------------------------- 1 | config = $config; 37 | $this->template = $template; 38 | $this->request = $request; 39 | $this->captcha = $captcha; 40 | } 41 | 42 | /** 43 | * Initialize captcha instance 44 | * 45 | * @param bool $set_hidden_fields Whether we need to assign hidden fields to the template 46 | */ 47 | public function set_captcha($set_hidden_fields = true) 48 | { 49 | $captcha = $this->captcha->get_instance($this->config['captcha_plugin']); 50 | $captcha->init(CONFIRM_POST); 51 | 52 | if ($captcha->is_solved() === false) 53 | { 54 | $this->template->assign_vars([ 55 | 'S_CONFIRM_CODE' => true, 56 | 'CAPTCHA_TEMPLATE' => $captcha->get_template(), 57 | ]); 58 | } 59 | 60 | // Add the confirm id/code pair to the hidden fields, else an error is displayed on next submit/preview 61 | if ($set_hidden_fields && $captcha->is_solved() !== false) 62 | { 63 | $this->template->append_var('QR_HIDDEN_FIELDS', build_hidden_fields($captcha->get_hidden_fields())); 64 | } 65 | } 66 | 67 | /** 68 | * Sends refreshed CAPTCHA if needed 69 | */ 70 | public function check_captcha_refresh() 71 | { 72 | if ($this->request->is_ajax() && $this->request->is_set('qr_captcha_refresh')) 73 | { 74 | if ($this->config['enable_post_confirm']) 75 | { 76 | $this->set_captcha(false); 77 | } 78 | $json_response = new \phpbb\json_response; 79 | $json_response->send([ 80 | 'captcha_refreshed' => true, 81 | 'captcha_result' => $this->template->assign_display('@boardtools_quickreply/quickreply_captcha_template.html', '', true), 82 | ]); 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /functions/cp_helper.php: -------------------------------------------------------------------------------- 1 | config = $config; 29 | $this->request = $request; 30 | } 31 | 32 | /** 33 | * Returns array of template variables for user settings in the ACP 34 | * 35 | * @param array $data Array with users preferences data 36 | * @return array 37 | */ 38 | public function qr_user_prefs_data($data) 39 | { 40 | return [ 41 | 'S_AJAX_PAGINATION' => $this->config['qr_ajax_pagination'], 42 | 'S_ENABLE_AJAX_PAGINATION' => $data['ajax_pagination'], 43 | 'S_QR_ENABLE_SCROLL' => $data['qr_enable_scroll'], 44 | 'S_QR_ALLOW_SOFT_SCROLL' => !!$this->config['qr_scroll_time'], 45 | 'S_QR_SOFT_SCROLL' => $data['qr_soft_scroll'], 46 | 'S_QUICKNICK_CHANGE_TYPE' => $this->config['qr_quicknick'] && !$this->config['qr_quicknick_string'], 47 | 'S_QR_QUICKNICK_USERTYPE' => $data['qr_quicknick_string'], 48 | 'S_QR_ENABLE_WARNING' => $data['qr_enable_warning'], 49 | 'S_QR_FIX_EMPTY_FORM' => $data['qr_fix_empty_form'], 50 | ]; 51 | } 52 | 53 | /** 54 | * Returns quick reply related user settings data 55 | * 56 | * @param array $user_row User data array 57 | * @return array 58 | */ 59 | public function qr_get_user_prefs_data($user_row) 60 | { 61 | return [ 62 | 'ajax_pagination' => $this->request->variable('ajax_pagination', (int) $user_row['ajax_pagination']), 63 | 'qr_enable_scroll' => $this->request->variable('qr_enable_scroll', (int) $user_row['qr_enable_scroll']), 64 | 'qr_soft_scroll' => $this->request->variable('qr_soft_scroll', (int) $user_row['qr_soft_scroll']), 65 | 'qr_quicknick_string' => $this->request->variable('qr_quicknick_string', (int) $user_row['qr_quicknick_string']), 66 | 'qr_enable_warning' => $this->request->variable('qr_enable_warning', (int) $user_row['qr_enable_warning']), 67 | 'qr_fix_empty_form' => $this->request->variable('qr_fix_empty_form', (int) $user_row['qr_fix_empty_form']), 68 | ]; 69 | } 70 | 71 | /** 72 | * Returns array of SQL variables for user settings 73 | * 74 | * @param array $data Array with users preferences data 75 | * @return array 76 | */ 77 | public function qr_set_user_prefs_data($data) 78 | { 79 | return [ 80 | 'ajax_pagination' => $data['ajax_pagination'], 81 | 'qr_enable_scroll' => $data['qr_enable_scroll'], 82 | 'qr_soft_scroll' => $data['qr_soft_scroll'], 83 | 'qr_quicknick_string' => $data['qr_quicknick_string'], 84 | 'qr_enable_warning' => $data['qr_enable_warning'], 85 | 'qr_fix_empty_form' => $data['qr_fix_empty_form'], 86 | ]; 87 | } 88 | 89 | /** 90 | * Returns array of template variables for forum settings in the ACP 91 | * 92 | * @param array $forum_data Forum data array 93 | * @return array 94 | */ 95 | public function qr_forums_data($forum_data) 96 | { 97 | return [ 98 | 'S_QR_AJAX_SUBMIT' => $this->config['qr_ajax_submit'], 99 | 'S_ENABLE_QR_AJAX_SUBMIT' => $forum_data['qr_ajax_submit'], 100 | 'S_QR_FORM_TYPE' => $forum_data['qr_form_type'], 101 | ]; 102 | } 103 | 104 | /** 105 | * Returns array of forum settings updated by user's request 106 | * 107 | * @return array 108 | */ 109 | public function qr_get_forums_data() 110 | { 111 | return [ 112 | 'qr_ajax_submit' => $this->request->variable('qr_ajax_submit', false), 113 | 'qr_form_type' => $this->request->variable('qr_form_type', 0), 114 | ]; 115 | } 116 | 117 | /** 118 | * Returns array of initialised forum settings 119 | * 120 | * @param array $forum_data Forum data array 121 | * @return array 122 | */ 123 | public function qr_init_forums_data($forum_data) 124 | { 125 | return [ 126 | 'qr_ajax_submit' => $forum_data['qr_ajax_submit'] ?? 0, 127 | 'qr_form_type' => $forum_data['qr_form_type'] ?? 0, 128 | ]; 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /functions/notifications_helper.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 36 | $this->user = $user; 37 | $this->notification_manager = $notification_manager; 38 | $this->type_notification = 'boardtools.quickreply.notification.type.quicknick'; 39 | } 40 | 41 | /** 42 | * Marks QuickReply notifications read in the specified posts 43 | * for current user. 44 | * 45 | * @param array $post_list Array of post IDs 46 | */ 47 | public function mark_qr_notifications_read($post_list) 48 | { 49 | $this->notification_manager->mark_notifications_read($this->type_notification, $post_list, $this->user->data['user_id']); 50 | } 51 | 52 | /** 53 | * Adds or updates QuickReply notifications. 54 | * 55 | * @param object $event The event object 56 | */ 57 | public function add_qr_notifications($event) 58 | { 59 | $data = $event['data']; 60 | 61 | if ($this->auth->acl_get('f_noapprove', $data['forum_id'])) 62 | { 63 | $mode = $event['mode']; 64 | $subject = $event['subject']; 65 | $username = $event['username']; 66 | 67 | $notification_data = $this->get_notification_data($data, $subject, $username); 68 | $this->set_notification_data($mode, $notification_data); 69 | } 70 | } 71 | 72 | /** 73 | * Returns array of data for notifications 74 | * 75 | * @param array $data Current notifications' data object 76 | * @param string $subject Post's subject 77 | * @param string $username Username of the post author 78 | * @return array 79 | */ 80 | private function get_notification_data($data, $subject, $username) 81 | { 82 | return array_merge($data, [ 83 | 'topic_title' => $data['topic_title'] ?? $subject, 84 | 'post_username' => $username, 85 | 'post_text' => $data['message'], 86 | 'post_time' => time(), 87 | 'post_subject' => $subject, 88 | ]); 89 | } 90 | 91 | /** 92 | * Handles (adds/updates) notifications 93 | * 94 | * @param string $mode Current posting mode 95 | * @param array $notification_data Array with notifications' data 96 | */ 97 | private function set_notification_data($mode, $notification_data) 98 | { 99 | if ($this->case_to_add($mode)) 100 | { 101 | $this->notification_manager->add_notifications($this->type_notification, $notification_data); 102 | } 103 | else if ($this->case_to_update($mode)) 104 | { 105 | $this->notification_manager->update_notifications($this->type_notification, $notification_data); 106 | } 107 | } 108 | 109 | /** 110 | * Returns whether we need to add a notification 111 | * 112 | * @param string $mode Current posting mode 113 | * @return bool 114 | */ 115 | private function case_to_add($mode) 116 | { 117 | return in_array($mode, ['post', 'reply', 'quote']); 118 | } 119 | 120 | /** 121 | * Returns whether we need to update an existing notification 122 | * 123 | * @param string $mode Current posting mode 124 | * @return bool 125 | */ 126 | private function case_to_update($mode) 127 | { 128 | return in_array($mode, ['edit_topic', 'edit_first_post', 'edit', 'edit_last_post']); 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /functions/plugins_helper.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 37 | $this->config = $config; 38 | $this->user = $user; 39 | $this->phpbb_extension_manager = $phpbb_extension_manager; 40 | } 41 | 42 | /** 43 | * Returns whether posts merging is allowed in current topic. 44 | * Used only when PostsMerging extension is enabled. 45 | * 46 | * @param int $forum_id Current forum ID 47 | * @param int $topic_id Current topic ID 48 | * @return bool 49 | */ 50 | private function posts_merging_allowed($forum_id, $topic_id) 51 | { 52 | return $this->auth->acl_get('u_postsmerging') && 53 | $this->auth->acl_get('u_postsmerging_ignore') && 54 | $this->auth->acl_get('f_noapprove', $forum_id) && 55 | !$this->excluded_from_merge($forum_id, $topic_id); 56 | } 57 | 58 | /** 59 | * Returns whether the current topic is excluded from posts merging. 60 | * Used only when PostsMerging extension is enabled. 61 | * 62 | * @param int $forum_id Current forum ID 63 | * @param int $topic_id Current topic ID 64 | * @return bool 65 | */ 66 | private function excluded_from_merge($forum_id, $topic_id) 67 | { 68 | return (in_array($forum_id, explode(',', $this->config['merge_no_forums'])) 69 | || in_array($topic_id, explode(',', $this->config['merge_no_topics']))); 70 | } 71 | 72 | /** 73 | * Returns template variables for supported extensions for quick reply. 74 | * 75 | * @param int $forum_id Current forum ID 76 | * @param int $topic_id Current topic ID 77 | * @return array 78 | */ 79 | public function template_variables_for_extensions($forum_id, $topic_id) 80 | { 81 | $template_variables = []; 82 | if ( 83 | $this->phpbb_extension_manager->is_enabled('rxu/PostsMerging') && 84 | $this->posts_merging_allowed($forum_id, $topic_id) && 85 | $this->user->data['is_registered'] && 86 | $this->config['merge_interval'] 87 | ) 88 | { 89 | // Always show the checkbox if PostsMerging extension is installed and 90 | // the user has the permission to use this option in current topic. 91 | $this->user->add_lang_ext('rxu/PostsMerging', 'posts_merging'); 92 | $template_variables += ['POSTS_MERGING_OPTION' => true]; 93 | } 94 | 95 | // ABBC3 96 | $template_variables += ['S_ABBC3_QUICKREPLY' => $this->phpbb_extension_manager->is_enabled('vse/abbc3') && $this->config['abbc3_qr_bbcodes']]; 97 | 98 | return $template_variables; 99 | } 100 | 101 | /** 102 | * Returns template variables for QuickReply built-in plugins. 103 | * 104 | * @param int $forum_id Current forum ID 105 | * @return array 106 | */ 107 | public function template_variables_for_plugins($forum_id) 108 | { 109 | return [ 110 | 'S_QR_NOT_CHANGE_SUBJECT' => !$this->auth->acl_get('f_qr_change_subject', $forum_id), 111 | 112 | // begin mod CapsLock Transfer 113 | 'S_QR_CAPS_ENABLE' => $this->config['qr_capslock_transfer'], 114 | // end mod CapsLock Transfer 115 | 116 | // begin mod Translit 117 | 'S_QR_SHOW_BUTTON_TRANSLIT' => $this->config['qr_show_button_translit'], 118 | // end mod Translit 119 | ]; 120 | } 121 | 122 | /** 123 | * Checks whether $data array contains post_id and topic_first_post_id keys. 124 | * These keys can be absent in custom calls of submit_post() function. 125 | * 126 | * @param array $data The array for checking 127 | * @return bool 128 | */ 129 | public function post_id_in_array($data) 130 | { 131 | return isset($data['topic_first_post_id']) && isset($data['post_id']); 132 | } 133 | 134 | /** 135 | * Returns whether the user cannot change post subject. 136 | * 137 | * @param int $forum_id Forum ID 138 | * @param string $mode Mode 139 | * @param int $topic_first_post_id ID of the first post in the topic 140 | * @param int $post_id ID of the current post 141 | * @return bool 142 | */ 143 | public function cannot_change_subject($forum_id, $mode, &$topic_first_post_id, $post_id) 144 | { 145 | return ( 146 | !$this->auth->acl_get('f_qr_change_subject', $forum_id) 147 | && $mode != 'post' 148 | && ($topic_first_post_id != $post_id || $mode == 'quote') 149 | ); 150 | } 151 | 152 | /** 153 | * Returns whether the full quote is disabled for the user. 154 | * 155 | * @param array $topic_data Array with topic data 156 | * @param int $post_id Current post ID 157 | * @return bool 158 | */ 159 | public function full_quote_disabled($topic_data, $post_id) 160 | { 161 | return ( 162 | !$this->auth->acl_get('f_qr_full_quote', $topic_data['forum_id']) || ( 163 | !$this->config['qr_last_quote'] && 164 | $topic_data['topic_last_post_id'] === $post_id 165 | ) 166 | ); 167 | } 168 | 169 | /** 170 | * Returns whether the quote button should be hidden from the user. 171 | * 172 | * @param array $topic_data Array with topic data 173 | * @param int $post_id Current post ID 174 | * @return bool 175 | */ 176 | public function quote_button_disabled($topic_data, $post_id) 177 | { 178 | return !$this->config['qr_quickquote_button'] && $this->full_quote_disabled($topic_data, $post_id); 179 | } 180 | 181 | /** 182 | * Checks whether the user does not have the full quote permission. 183 | * 184 | * @param object $event The event object 185 | * @return bool 186 | */ 187 | public function check_full_quote_permission($event) 188 | { 189 | return ($event['mode'] == 'quote' && !$event['submit'] && !$event['preview'] && !$event['refresh'] && 190 | $this->full_quote_disabled($event['post_data'], $event['post_id'])); 191 | } 192 | } 193 | -------------------------------------------------------------------------------- /language/README.md: -------------------------------------------------------------------------------- 1 | ## Language packages 2 | * Arabic - Bassel Taha Alhitary (www.alhitary.net) 3 | * English - original by William Jacoby (bonelifer), maintained by LavIgor 4 | * French - Galixte (http://www.galixte.com) 5 | * German - Philip Gisella 6 | * Hungarian - aszi77 7 | * Polish - FalconTech 8 | * Russian - original by Татьяна5, maintained by LavIgor 9 | * Spanish - Raul Arroyo Monzo 10 | * Swedish - Tage Strandell 11 | * Turkish - Edip Dincer 12 | 13 | ## Contributing 14 | If you want to help with translations, send a request to join [the localization project on Transifex](https://www.transifex.com/boardtools/quickreply/). 15 | -------------------------------------------------------------------------------- /language/ar/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Topic reply notification - "{TOPIC_TITLE}" 2 | 3 | Hello {USERNAME}, 4 | 5 | You are receiving this notification because "{AUTHOR_NAME}" mentioned you in the topic "{TOPIC_TITLE}" at "{SITENAME}". You can use the following link to view the reply made. 6 | 7 | If you want to view the post, click the following link: 8 | {U_VIEW_POST} 9 | 10 | If you want to view the topic, click the following link: 11 | {U_TOPIC} 12 | 13 | If you want to view the forum, click the following link: 14 | {U_FORUM} 15 | 16 | If you no longer wish to receive updates about replies mentioning you, please update your notification settings here: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/ar/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'الرد السريع', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'الإعدادات', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'يستطيع تعديل إعدادات الرد السريع', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'يستطيع تعديل عنوان المُشاركة', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Can use full quote in topics
It will be suggested to use quick quote if the user does not have this permission and quick quote feature is enabled.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/ar/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'اقتباس هذا النص في الرد السريع', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'الذهاب إلى الملف الشخصي', 46 | 'QR_QUICKNICK' => 'الإشارة إلى الإسم', 47 | 'QR_QUICKNICK_TITLE' => 'ادخال اسم العضو في الرد السريع', 48 | 'QR_REPLY_IN_PM' => 'الرد برسالة خاصة', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | 'QR_READ_NEXT' => 'Read next', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Translit', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'إلى الروسية', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'أنقر هُنا لمُشاهدة الترجمة باللغة الروسية', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'حرف صغير', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'حرف كبير', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'حرف عكسي', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/ar/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'You have been mentioned in the message', 30 | 31 | 'QR_BBPOST' => 'مصدر المشاركة', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/ar/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Switch dropdown menu when you click on the nickname to link “Refer by username” under avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'عدم تحديث الرد السريع عند تحريك الموضوع ', 26 | 'QR_ENABLE_SCROLL' => 'تفعيل التمرير التلقائي عند تحريك الموضوع ', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'تفعيل التأثيرات المُتحركة عند تحريك الموضوع بعد إضافة الرد السريع ', 28 | 'QR_ENABLE_WARNING' => 'Warn if the entered quick reply can be lost', 29 | 'QR_FIX_EMPTY_FORM' => 'Allow to fix quick reply form when it is empty', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/de/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Beitrags Antwort Benachrichtigung - "{TOPIC_TITLE}" 2 | 3 | Hallo {USERNAME}, 4 | 5 | Du erhälst diese Benachrichtigung weil "{AUTHOR_NAME}" dich im Thema "{TOPIC_TITLE}" im "{SITENAME}" erwähnt hat. Du kannst die folgenden Links nutzen um die Antwort zu sehen. 6 | 7 | If you want to view the post, click the following link: 8 | {U_VIEW_POST} 9 | 10 | If you want to view the topic, click the following link: 11 | {U_TOPIC} 12 | 13 | If you want to view the forum, click the following link: 14 | {U_FORUM} 15 | 16 | If you no longer wish to receive updates about replies mentioning you, please update your notification settings here: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/de/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Schnellantwort', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Schnellantwort Einstellungen', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Kann die Einstellungen von den Schnellantworten ändern', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Kann den Titel des Beitrags ändern', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Can use full quote in topics
It will be suggested to use quick quote if the user does not have this permission and quick quote feature is enabled.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/de/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'Füge als Zitat in das Schnellantwort Formular ein', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'Gehe zum Benutzerprofil', 46 | 'QR_QUICKNICK' => 'Verweis durch Benutzernamen', 47 | 'QR_QUICKNICK_TITLE' => 'Füge Benutzernamen in das Schnellantwort Formular ein', 48 | 'QR_REPLY_IN_PM' => 'Antworte als Private Nachricht', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | // begin mod Translit 52 | 'QR_TRANSLIT_TEXT' => 'Translit', 53 | 'QR_TRANSLIT_TEXT_TO_RU' => 'ins russische', // can be changed to your language here and below 54 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'Für Schnellansicht in Russisch klicke den Knopf', 55 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 56 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 57 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 58 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 59 | 'QR_READ_NEXT' => 'Read next', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'kleinbuchstaben', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'GROßBUCHSTABEN', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'iNVERTIERE gROß/kLEINSCHREIBUNG', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/de/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'Du wurdest erwähnt in der Nachricht ', 30 | 31 | 'QR_BBPOST' => 'Ursprung des Beitrags', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/de/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Switch dropdown menu when you click on the nickname to link “Refer by username” under avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Lade das Schnellantwort Formular nicht neu wenn im Thema navigiert wird', 26 | 'QR_ENABLE_SCROLL' => 'Aktiviere das Auto Scroll Feature wenn in einem Thema navigiert wird', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Aktiviere sanftes Scrollen und Animationen wenn ein Thema navigiert wird oder nach einer Schnellantwort', 28 | 'QR_ENABLE_WARNING' => 'Warn if the entered quick reply can be lost', 29 | 'QR_FIX_EMPTY_FORM' => 'Allow to fix quick reply form when it is empty', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/en/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Topic reply notification - "{TOPIC_TITLE}" 2 | 3 | Hello {USERNAME}, 4 | 5 | You are receiving this notification because "{AUTHOR_NAME}" mentioned you in the topic "{TOPIC_TITLE}" at "{SITENAME}". You can use the following link to view the reply made. 6 | 7 | If you want to view the post, click the following link: 8 | {U_VIEW_POST} 9 | 10 | If you want to view the topic, click the following link: 11 | {U_TOPIC} 12 | 13 | If you want to view the forum, click the following link: 14 | {U_FORUM} 15 | 16 | If you no longer wish to receive updates about replies mentioning you, please update your notification settings here: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} 21 | -------------------------------------------------------------------------------- /language/en/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Quick Reply', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Quick Reply Settings', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Can change the settings of the Quick Reply', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Can modify the Post subject', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Can use full quote in topics
It will be suggested to use quick quote if the user does not have this permission and quick quote feature is enabled.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/en/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'Insert quote in the Quick Reply form', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'Go to profile', 46 | 'QR_QUICKNICK' => 'Refer by username', 47 | 'QR_QUICKNICK_TITLE' => 'Insert username in the Quick Reply form', 48 | 'QR_REPLY_IN_PM' => 'Reply in PM', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | 'QR_READ_NEXT' => 'Read next', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Translit', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'to russian', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'For instant view in Russian click the button', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'lower case', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'UPPER CASE', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'iNVERT cASE', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/en/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'You have been mentioned in the message', 30 | 31 | 'QR_BBPOST' => 'Source of the post', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/en/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Switch dropdown menu when you click on the nickname to link “Refer by username” under avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Do not refresh quick reply form when navigating the topic', 26 | 'QR_ENABLE_SCROLL' => 'Enable auto scroll when navigating the topic', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Enable soft scroll and animations when navigating the topic and after quick reply', 28 | 'QR_ENABLE_WARNING' => 'Warn if the entered quick reply can be lost', 29 | 'QR_FIX_EMPTY_FORM' => 'Allow to fix quick reply form when it is empty', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/es/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Notificación de respuesta del tema - "{TOPIC_TITLE}" 2 | 3 | Hola {USERNAME}, 4 | 5 | Recibió esta notificación porque "{AUTHOR_NAME}" le mencionó en el tema "{TOPIC_TITLE}" en "{SITENAME}". Puede utilizar el siguiente enlace para ver dicha respuesta. 6 | 7 | Si desea ver el mensaje, haga clic en el siguiente enlace: 8 | {U_VIEW_POST} 9 | 10 | Si desea ver el tema, haga clic en el siguiente enlace: 11 | {U_TOPIC} 12 | 13 | Si desea ver el foro, haga clic en el siguiente enlace: 14 | {U_FORUM} 15 | 16 | Si ya no desea recibir actualizaciones sobre las respuestas que le mencionan, actualice la configuración de notificaciones aquí: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/es/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Respuesta Rápida', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Ajustes de Respuesta Rápida', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Puede gestionar los ajustes de la Respuesta Rápida', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Puede modificar el Asunto del mensaje', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Puede usar la cita completa en los temas
Se sugiere usar cita rápida si el usuario no tiene este permiso y la característica de cita rápida está habilitada.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/es/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'Insertar cita en el formulario de Respuesta Rápida', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'Ir al Perfil', 46 | 'QR_QUICKNICK' => 'Referir el nombre de usuario', 47 | 'QR_QUICKNICK_TITLE' => 'Insertar nombre de usuario en el formulario de Respuesta Rápida', 48 | 'QR_REPLY_IN_PM' => 'Responder en MP', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | 'QR_READ_NEXT' => 'Read next', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Translit', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'a Ruso', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'Para visión instantánea en Ruso haga clic en el botón', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'minúscula', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'MAYÚSCULAS', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'cSASO iNVERTIDO', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/es/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'Usted ha sido mencionado en el mensaje', 30 | 31 | 'QR_BBPOST' => 'Fuente del mensaje', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/es/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Cambiar menú desplegable al hacer clic en el apodo para vincular "Referir por nombre de usuario" en avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'No refrescar el formulario de Respuesta Rápida cuando se navega en el tema', 26 | 'QR_ENABLE_SCROLL' => 'Habilitar desplazamiento automático al navegar en el tema', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Habilitar desplazamiento suave y animaciones al navegar por el tema, y después de la Respuesta Rápida', 28 | 'QR_ENABLE_WARNING' => 'Avisar si se puede perder la respuesta rápida introducida', 29 | 'QR_FIX_EMPTY_FORM' => 'Permitir para fijar el formulario de respuesta rápida cuando está vacío', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/fr/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Notification de nouveau message dans le sujet - « {TOPIC_TITLE} » 2 | 3 | Bonjour {USERNAME}, 4 | 5 | Vous recevez cette notification car vous avez été mentionné par « {AUTHOR_NAME} » dans le sujet « {TOPIC_TITLE} » sur « {SITENAME} ». Vous pouvez utiliser le lien suivant pour consulter le message. 6 | 7 | Pour consulter le message, cliquez sur le lien suivant : 8 | {U_VIEW_POST} 9 | 10 | Pour consulter le sujet dans son ensemble, cliquez sur le lien suivant : 11 | {U_TOPIC} 12 | 13 | Pour visiter le forum, cliquez sur le lien suivant : 14 | {U_FORUM} 15 | 16 | Si vous ne souhaitez plus recevoir de notifications concernant les messages vous mentionnant, vous pouvez cliquer sur le lien suivant pour modifier vos paramètres de notification : 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/fr/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Réponse rapide', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Paramètres de la réponse rapide', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Peut modifier les paramètres de la réponse rapide.', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Peut modifier le sujet du message.', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Peut utiliser la citation complète dans les sujets.
Si la citation rapide est activée, celle-ci sera suggérée si l’utilisateur n’a pas les permissions sur la citation complète.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/fr/quickreply.php: -------------------------------------------------------------------------------- 1 | 'Cette réponse contient au moins un fichier joint.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Annuler l’envoi', 27 | 'QR_CTRL_ENTER' => 'Il est aussi possible d’envoyer la réponse au moyen de la combinaison des touches du clavier « Ctrl » + « Entrée ».', 28 | 'QR_FORM_HIDE' => 'Masquer le formulaire de la réponse rapide', 29 | 'QR_FULLSCREEN' => 'Éditeur de texte complet', 30 | 'QR_FULLSCREEN_EXIT' => 'Sortir du mode plein écran', 31 | 'QR_INSERT_TEXT' => 'Insérer une citation dans le formulaire de la réponse rapide', 32 | 'QR_QUICKQUOTE' => 'Citation rapide', 33 | 'QR_QUICKQUOTE_TITLE' => 'Répondre avec la citation rapide', 34 | 'QR_LOADING' => 'Chargement en cours…', 35 | 'QR_LOADING_ATTACHMENTS' => 'Chargement en cours des fichiers joints sur le serveur…', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'Le session du formulaire était expirée et a été mise à jour.
Merci d’envoyer le formulaire à nouveau.', 37 | 'QR_LOADING_NEW_POSTS' => 'Au moins une nouvelle réponse a été publiée dans le sujet.
Votre réponse n’a pas été envoyée pour vous permettre de modifier celle-ci.
Récupération des nouvelles réponses en cours…', 38 | 'QR_LOADING_PREVIEW' => 'Affichage du l’aperçu en cours…', 39 | 'QR_LOADING_SUBMITTED' => 'Votre message a été envoyé avec succès.
Affichage du résultat en cours…', 40 | 'QR_LOADING_SUBMITTING' => 'Envoi en cours de la réponse…', 41 | 'QR_LOADING_WAIT' => 'En attente de la réponse du serveur…', 42 | 'QR_MORE' => 'Actions supplémentaires', 43 | 'QR_NO_FULL_QUOTE' => 'Merci de sélectionner une partie du message afin de citer celui-ci.', 44 | 'QR_PREVIEW_CLOSE' => 'Fermer l’aperçu', 45 | 'QR_PROFILE' => 'Voir le profil', 46 | 'QR_QUICKNICK' => 'Se référer au nom d’utilisateur', 47 | 'QR_QUICKNICK_TITLE' => 'Insérer le nom d’utilisateur dans le formulaire de la réponse rapide', 48 | 'QR_REPLY_IN_PM' => 'Répondre dans un MP', 49 | 'QR_TYPE_REPLY' => 'Merci de saisir le texte de votre réponse ici…', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Le texte de votre réponse saisi n’a pas été envoyé et semble avoir été perdu !', 51 | 'QR_READ_NEXT' => 'Read next', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Translittérer', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'en russe', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'Pour modifier le texte en russe cliquer sur le bouton', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Modifier la casse du texte', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Appuyer sur un bouton pour modifier la casse du texte sélectionné', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'minuscules', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'MAJUSCULES', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'iNVERSER lA cASSE', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/fr/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentionné par %1$s dans le message :', 27 | 2 => 'Mentionné par %1$s dans le message :', 28 | ], 29 | 30 | 'NOTIFICATION_TYPE_QUICKNICK' => 'Vous avez été mentionné dans le message', 31 | 32 | 'QR_BBPOST' => 'Source du message', 33 | ]); 34 | -------------------------------------------------------------------------------- /language/fr/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Afficher sur un menu déroulant lorsque l’on clique sur le nom d’utilisateur situé sous l’avatar pour insérer le lien « Se référer au nom d’utilisateur »', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Ne pas recharger le formulaire de la réponse rapide lors de la navigation sur le sujet', 26 | 'QR_ENABLE_SCROLL' => 'Activer le défilement automatique lors de la navigation sur le sujet', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Activer le défilement léger et les animations lors de la navigation sur le sujet, après avoir utilisé la réponse rapide', 28 | 'QR_ENABLE_WARNING' => 'Avertir lorsque le contenu saisi dans la réponse rapide peut être perdu.', 29 | 'QR_FIX_EMPTY_FORM' => 'Permettre de corriger le formulaire de la réponse rapide lorsque celui-ci est vide', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/hu/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Topic reply notification - "{TOPIC_TITLE}" 2 | 3 | Hello {USERNAME}, 4 | 5 | You are receiving this notification because "{AUTHOR_NAME}" mentioned you in the topic "{TOPIC_TITLE}" at "{SITENAME}". You can use the following link to view the reply made. 6 | 7 | If you want to view the post, click the following link: 8 | {U_VIEW_POST} 9 | 10 | If you want to view the topic, click the following link: 11 | {U_TOPIC} 12 | 13 | If you want to view the forum, click the following link: 14 | {U_FORUM} 15 | 16 | If you no longer wish to receive updates about replies mentioning you, please update your notification settings here: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/hu/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Gyors válasz', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Gyors válasz beállításai', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Megváltoztathatja Gyors válasz beállításait', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Módosíthatja a hozzászólás tárgyát', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Can use full quote in topics
It will be suggested to use quick quote if the user does not have this permission and quick quote feature is enabled.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/hu/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'Idézet beszúrása a Gyors válasz űrlapra', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'Profil megtekintése', 46 | 'QR_QUICKNICK' => 'Hivatkozás felhasználónévvel', 47 | 'QR_QUICKNICK_TITLE' => 'Felhasználónév beszúrása a Gyors válasz űrlapra', 48 | 'QR_REPLY_IN_PM' => 'Válasz PÜ-ben', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | 'QR_READ_NEXT' => 'Read next', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Translit', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'orosz nyelvre', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'Kattints a gombra orosz nyelvű előnézethez', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'kisbetű', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'NAGYBETŰ', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'kIS/nAGYBETŰ cSERE', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/hu/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'You have been mentioned in the message', 30 | 31 | 'QR_BBPOST' => 'Source of the post', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/hu/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Switch dropdown menu when you click on the nickname to link “Refer by username” under avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Ne frissítse a Gyors válasz űrlapot a témában való navigálás során', 26 | 'QR_ENABLE_SCROLL' => 'Automatikus görgetés a témában való navigálás során', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Finom görgetés és animálás a témában való navigáláskor és gyors válasz után', 28 | 'QR_ENABLE_WARNING' => 'Warn if the entered quick reply can be lost', 29 | 'QR_FIX_EMPTY_FORM' => 'Allow to fix quick reply form when it is empty', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/pl/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Topic reply notification - "{TOPIC_TITLE}" 2 | 3 | Hello {USERNAME}, 4 | 5 | You are receiving this notification because "{AUTHOR_NAME}" mentioned you in the topic "{TOPIC_TITLE}" at "{SITENAME}". You can use the following link to view the reply made. 6 | 7 | If you want to view the post, click the following link: 8 | {U_VIEW_POST} 9 | 10 | If you want to view the topic, click the following link: 11 | {U_TOPIC} 12 | 13 | If you want to view the forum, click the following link: 14 | {U_FORUM} 15 | 16 | If you no longer wish to receive updates about replies mentioning you, please update your notification settings here: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/pl/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Quick Reply', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Quick Reply Ustawienia', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Może zmienić ustawienia szybkiej odpowiedzi', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Może modyfikować temat posta', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Can use full quote in topics
It will be suggested to use quick quote if the user does not have this permission and quick quote feature is enabled.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/pl/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'Wstaw cytat w pole szybkiej odpowiedzi', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'Przejdź do profilu', 46 | 'QR_QUICKNICK' => 'Cytuj nazwe użytkownika', 47 | 'QR_QUICKNICK_TITLE' => 'Wstaw ten nick w pole szybkiej odpowiedzi', 48 | 'QR_REPLY_IN_PM' => 'Odpowiedz przez PW', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | 'QR_READ_NEXT' => 'Read next', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Translit', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'na rosyjski', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'Natychmiastowy wyidok rozysjski - kliknij tutaj', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'małe litery', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'DRUKOWANE LITERY', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'oDWRÓĆ Znaki', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/pl/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'You have been mentioned in the message', 30 | 31 | 'QR_BBPOST' => 'Source of the post', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/pl/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Switch dropdown menu when you click on the nickname to link “Refer by username” under avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Nie odświeżaj szybkiej odpowiedzi kiedy poruszasz się po tematach', 26 | 'QR_ENABLE_SCROLL' => 'Włącz automatyczne przewijanie gdy przechodzisz między stronami tematu.', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Włącz delikatne przewijanie i animację kiedy przechodzisz między stronami tematu i gdy wyślesz szybką odpowiedź.', 28 | 'QR_ENABLE_WARNING' => 'Warn if the entered quick reply can be lost', 29 | 'QR_FIX_EMPTY_FORM' => 'Allow to fix quick reply form when it is empty', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/ru/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Уведомление об ответе — «{TOPIC_TITLE}» 2 | 3 | Здравствуйте, {USERNAME}! 4 | 5 | Вы получили это уведомление потому, что пользователь «{AUTHOR_NAME}» обратился к вам в теме «{TOPIC_TITLE}» на конференции «{SITENAME}». Вы можете перейти по ссылке, чтобы просмотреть сообщение. 6 | 7 | Если вы хотите просмотреть сообщение, перейдите по следующей ссылке: 8 | {U_VIEW_POST} 9 | 10 | Если вы хотите просмотреть тему, перейдите по следующей ссылке: 11 | {U_TOPIC} 12 | 13 | Если вы хотите просмотреть форум, перейдите по следующей ссылке: 14 | {U_FORUM} 15 | 16 | Если вы больше не хотите получать уведомления об ответах, в которых к вам обратились, измените настройки уведомлений: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/ru/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Быстрый ответ', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Настройки быстрого ответа', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Может изменять настройки быстрого ответа', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Может изменять заголовок сообщения', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Может использовать полную цитату в темах
При отсутствии данного права пользователю будет показано сообщение с предложением использовать быструю цитату, если эта возможность включена.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/ru/quickreply.php: -------------------------------------------------------------------------------- 1 | 'К этому ответу прикреплено по крайней мере одно вложение.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Отменить отправку', 27 | 'QR_CTRL_ENTER' => 'Вы также можете отправить свой ответ, одновременно нажав клавиши Ctrl и Enter на клавиатуре.', 28 | 'QR_FORM_HIDE' => 'Свернуть форму быстрого ответа', 29 | 'QR_FULLSCREEN' => 'Полноэкранный редактор', 30 | 'QR_FULLSCREEN_EXIT' => 'Выйти из полноэкранного режима', 31 | 'QR_INSERT_TEXT' => 'Вставить цитату в окно ответа', 32 | 'QR_QUICKQUOTE' => 'Быстрая цитата', 33 | 'QR_QUICKQUOTE_TITLE' => 'Ответить с быстрой цитатой', 34 | 'QR_LOADING' => 'Загрузка', 35 | 'QR_LOADING_ATTACHMENTS' => 'Ожидание окончания загрузки вложений...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'Временная метка формы устарела и была обновлена.
Повторная отправка формы...', 37 | 'QR_LOADING_NEW_POSTS' => 'В тему было добавлено как минимум одно новое сообщение.
Ваше сообщение не было отправлено, потому что, возможно, вы захотите изменить его текст.
Получение новых сообщений...', 38 | 'QR_LOADING_PREVIEW' => 'Обработка предпросмотра...', 39 | 'QR_LOADING_SUBMITTED' => 'Ваше сообщение было успешно отправлено.
Обработка результата...', 40 | 'QR_LOADING_SUBMITTING' => 'Отправка вашего ответа...', 41 | 'QR_LOADING_WAIT' => 'Ожидание ответа сервера...', 42 | 'QR_MORE' => 'Другие действия', 43 | 'QR_NO_FULL_QUOTE' => 'Пожалуйста, выделите часть сообщения, которую хотите процитировать.', 44 | 'QR_PREVIEW_CLOSE' => 'Закрыть блок предпросмотра', 45 | 'QR_PROFILE' => 'Перейти в профиль', 46 | 'QR_QUICKNICK' => 'Обратиться по никнейму', 47 | 'QR_QUICKNICK_TITLE' => 'Вставить имя пользователя в окно быстрого ответа', 48 | 'QR_REPLY_IN_PM' => 'Ответить в ЛС', 49 | 'QR_TYPE_REPLY' => 'Введите свой ответ здесь...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Введённый вами ответ не был отправлен и может быть потерян!', 51 | 'QR_READ_NEXT' => 'Читать далее', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Транслит', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'на русский', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'Для мгновенного отображения на русском языке нажмите на кнопку', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Изменение регистра текста', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Для изменения регистра выделите часть текста и нажмите нужную кнопку', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ абв', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ АБВ', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ аБВ', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'нижний регистр', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'ВЕРХНИЙ РЕГИСТР', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'иНВЕРСИЯ рЕГИСТРА', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/ru/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Обращение по никнейму от пользователя %1$s в сообщении:', 27 | 2 => 'Обращение по никнейму от пользователей %1$s в сообщении:', 28 | 3 => 'Обращение по никнейму от пользователей %1$s в сообщении:', 29 | ], 30 | 31 | 'NOTIFICATION_TYPE_QUICKNICK' => 'К вам обратились по никнейму в сообщении', 32 | 33 | 'QR_BBPOST' => 'Источник цитаты', 34 | ]); 35 | -------------------------------------------------------------------------------- /language/ru/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Переключить всплывающее меню при клике по нику на строку «Обратиться по нику» под аватаром', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Не очищать форму быстрого ответа при просмотре темы', 26 | 'QR_ENABLE_SCROLL' => 'Включить автоматическую прокрутку страницы при просмотре темы', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Включить плавную прокрутку страницы и анимацию при просмотре темы и после быстрого ответа', 28 | 'QR_ENABLE_WARNING' => 'Предупреждать, если введённый быстрый ответ может быть потерян', 29 | 'QR_FIX_EMPTY_FORM' => 'Разрешить фиксировать форму быстрого ответа, когда она пустая', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/sv/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Topic reply notification - "{TOPIC_TITLE}" 2 | 3 | Hello {USERNAME}, 4 | 5 | You are receiving this notification because "{AUTHOR_NAME}" mentioned you in the topic "{TOPIC_TITLE}" at "{SITENAME}". You can use the following link to view the reply made. 6 | 7 | If you want to view the post, click the following link: 8 | {U_VIEW_POST} 9 | 10 | If you want to view the topic, click the following link: 11 | {U_TOPIC} 12 | 13 | If you want to view the forum, click the following link: 14 | {U_FORUM} 15 | 16 | If you no longer wish to receive updates about replies mentioning you, please update your notification settings here: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/sv/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Snabbsvar', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Snabbsvar - Inställningar', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Inställningarna för “Snabbsvar” kan ändras', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => '“Ämnesrubriken” kan ändras', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Can use full quote in topics
It will be suggested to use quick quote if the user does not have this permission and quick quote feature is enabled.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/sv/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'Lägg in ett citat i “Snabbsvarsformuläret”', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'Gå till profil', 46 | 'QR_QUICKNICK' => 'Användarnamnsreferens', 47 | 'QR_QUICKNICK_TITLE' => 'Lägg in användarnamn i “Snabbsvarsformuläret”', 48 | 'QR_REPLY_IN_PM' => 'Svara med PM', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | 'QR_READ_NEXT' => 'Read next', 52 | // begin mod Translit 53 | 'QR_TRANSLIT_TEXT' => 'Translit', 54 | 'QR_TRANSLIT_TEXT_TO_RU' => 'Ryska alfabetet', // can be changed to your language here and below 55 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'Klicka på knappen för att direkt visa med Ryska alfabetet', 56 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 57 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 58 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 59 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'små bokstäver', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'STORA BOKSTÄVER', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'iNVERTERAD tYPFORM', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/sv/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'You have been mentioned in the message', 30 | 31 | 'QR_BBPOST' => 'Source of the post', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/sv/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Switch dropdown menu when you click on the nickname to link “Refer by username” under avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Uppdatera inte “Snabbsvarsformuläret” vid navigering inom ämnet', 26 | 'QR_ENABLE_SCROLL' => 'Aktivera autoskroll vid navigering inom ämnet', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Aktivera mjuk skrollning och animering vid navigering inom ämnet och efter snabbsvar', 28 | 'QR_ENABLE_WARNING' => 'Warn if the entered quick reply can be lost', 29 | 'QR_FIX_EMPTY_FORM' => 'Allow to fix quick reply form when it is empty', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/tr/email/quicknick.txt: -------------------------------------------------------------------------------- 1 | Subject: Topic reply notification - "{TOPIC_TITLE}" 2 | 3 | Hello {USERNAME}, 4 | 5 | You are receiving this notification because "{AUTHOR_NAME}" mentioned you in the topic "{TOPIC_TITLE}" at "{SITENAME}". You can use the following link to view the reply made. 6 | 7 | If you want to view the post, click the following link: 8 | {U_VIEW_POST} 9 | 10 | If you want to view the topic, click the following link: 11 | {U_TOPIC} 12 | 13 | If you want to view the forum, click the following link: 14 | {U_FORUM} 15 | 16 | If you no longer wish to receive updates about replies mentioning you, please update your notification settings here: 17 | 18 | {U_NOTIFICATION_SETTINGS} 19 | 20 | {EMAIL_SIG} -------------------------------------------------------------------------------- /language/tr/permissions_quickreply.php: -------------------------------------------------------------------------------- 1 | 'Quick Reply', 25 | 'ACP_QUICKREPLY_EXPLAIN' => 'Quick Reply Ayarları', 26 | // 27 | 'ACL_A_QUICKREPLY' => 'Quick Reply (Hızlı Cevap) için ayarları değiştirebilirsiniz', 28 | 'ACL_F_QR_CHANGE_SUBJECT' => 'Gönderi konu başlığını değiştirebilirsiniz', 29 | 'ACL_F_QR_FULL_QUOTE' => 'Can use full quote in topics
It will be suggested to use quick quote if the user does not have this permission and quick quote feature is enabled.', 30 | ]); 31 | -------------------------------------------------------------------------------- /language/tr/quickreply.php: -------------------------------------------------------------------------------- 1 | 'This reply contains at least one attachment.', 25 | 'QR_BBCODE' => 'BBCode', 26 | 'QR_CANCEL_SUBMISSION' => 'Cancel submission', 27 | 'QR_CTRL_ENTER' => 'You may also submit your reply by simultaneous pressing Ctrl and Enter keys on your keyboard.', 28 | 'QR_FORM_HIDE' => 'Collapse quick reply form', 29 | 'QR_FULLSCREEN' => 'Fullscreen editor', 30 | 'QR_FULLSCREEN_EXIT' => 'Exit fullscreen mode', 31 | 'QR_INSERT_TEXT' => 'Hızlı Cevap formuna Alıntı ekle', 32 | 'QR_QUICKQUOTE' => 'Quick quote', 33 | 'QR_QUICKQUOTE_TITLE' => 'Reply with quick quote', 34 | 'QR_LOADING' => 'Loading', 35 | 'QR_LOADING_ATTACHMENTS' => 'Waiting for the finish of attachments uploading...', 36 | 'QR_LOADING_NEW_FORM_TOKEN' => 'The form token was outdated and has been updated.
Submitting the form again...', 37 | 'QR_LOADING_NEW_POSTS' => 'At least one new post has been added to the topic.
Your reply has not been submitted because you will probably want to update it.
Fetching new posts...', 38 | 'QR_LOADING_PREVIEW' => 'Fetching the preview...', 39 | 'QR_LOADING_SUBMITTED' => 'Your post has been submitted successfully.
Fetching the result...', 40 | 'QR_LOADING_SUBMITTING' => 'Submitting your reply...', 41 | 'QR_LOADING_WAIT' => 'Waiting for server response...', 42 | 'QR_MORE' => 'More actions', 43 | 'QR_NO_FULL_QUOTE' => 'Please select a part of the message to be able to quote it.', 44 | 'QR_PREVIEW_CLOSE' => 'Close preview block', 45 | 'QR_PROFILE' => 'Profile git', 46 | 'QR_QUICKNICK' => 'Kullanıcı adından bahset', 47 | 'QR_QUICKNICK_TITLE' => 'Kullanıcı adını Hızlı Cevap formuna aktar', 48 | 'QR_REPLY_IN_PM' => 'ÖM ile cevapla', 49 | 'QR_TYPE_REPLY' => 'Type your reply here...', 50 | 'QR_WARN_BEFORE_UNLOAD' => 'Your entered reply has not been submitted and may be lost!', 51 | // begin mod Translit 52 | 'QR_TRANSLIT_TEXT' => 'Translit', 53 | 'QR_TRANSLIT_TEXT_TO_RU' => 'to russian', // can be changed to your language here and below 54 | 'QR_TRANSLIT_TEXT_TOOLTIP' => 'For instant view in Russian click the button', 55 | 'QR_TRANSLIT_FROM' => 'je,jo,ayu,ay,aj,oju,oje,oja,oj,uj,yi,ya,ja,ju,yu,ja,y,zh,i\',shch,sch,ch,sh,ea,a,b,v,w,g,d,e,z,i,k,l,m,n,o,p,r,s,t,u,f,x,c,\'e,\',`,j,h', // language specific adaptation required (do not use spaces or line breaks), use commas as separators here and below 56 | 'QR_TRANSLIT_TO' => 'э,ё,aю,ай,ай,ою,ое,оя,ой,уй,ый,я,я,ю,ю,я,ы,ж,й,щ,щ,ч,ш,э,а,б,в,в,г,д,е,з,и,к,л,м,н,о,п,р,с,т,у,ф,х,ц,э,ь,ъ,й,х', 57 | 'QR_TRANSLIT_FROM_CAPS' => 'Yo,Jo,Ey,Je,Ay,Oy,Oj,Uy,Uj,Ya,Ja,Ju,Yu,Ja,Y,Zh,I\',Sch,Ch,Sh,Ea,Tz,A,B,V,W,G,D,E,Z,I,K,L,M,N,O,P,R,S,T,U,F,X,C,EA,J,H', 58 | 'QR_TRANSLIT_TO_CAPS' => 'Ё,Ё,Ей,Э,Ай,Ой,Ой,Уй,Уй,Я,Я,Ю,Ю,Я,Ы,Ж,Й,Щ,Ч,Ш,Э,Ц,А,Б,В,В,Г,Д,Е,З,И,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Э,Й,Х', 59 | 'QR_READ_NEXT' => 'Read next', 60 | // end mod Translit 61 | // begin mod CapsLock Transform 62 | 'QR_TRANSFORM_TEXT' => 'Change Text Case', 63 | 'QR_TRANSFORM_TEXT_TOOLTIP' => 'Press a button to change the case of the selected text', 64 | 'QR_TRANSFORM_TEXT_LOWER' => '▼ abc', 65 | 'QR_TRANSFORM_TEXT_UPPER' => '▲ ABC', 66 | 'QR_TRANSFORM_TEXT_INVERS' => '▼▲ aBC', 67 | 'QR_TRANSFORM_TEXT_LOWER_TOOLTIP' => 'küçük harf', 68 | 'QR_TRANSFORM_TEXT_UPPER_TOOLTIP' => 'BÜYÜK HARF', 69 | 'QR_TRANSFORM_TEXT_INVERS_TOOLTIP' => 'kÜÇÜK/bÜYÜK hARF dEĞİŞTİR', 70 | // end mod CapsLock Transform 71 | ]); 72 | -------------------------------------------------------------------------------- /language/tr/quickreply_notification.php: -------------------------------------------------------------------------------- 1 | [ 26 | 1 => 'Mentioned by %1$s in the message:', 27 | ], 28 | 29 | 'NOTIFICATION_TYPE_QUICKNICK' => 'You have been mentioned in the message', 30 | 31 | 'QR_BBPOST' => 'Gönderinin Kaynağı', 32 | ]); 33 | -------------------------------------------------------------------------------- /language/tr/quickreply_ucp.php: -------------------------------------------------------------------------------- 1 | 'Switch dropdown menu when you click on the nickname to link “Refer by username” under avatar', 25 | 'QR_ENABLE_AJAX_PAGINATION' => 'Başlıkta gezinirken hızlı cevap formunu yeniden yükleme', 26 | 'QR_ENABLE_SCROLL' => 'Başlıkta gezinirken otomatik kaydırmayı etkinleştir', 27 | 'QR_ENABLE_SOFT_SCROLL' => 'Başlıkta gezinirken ve hızlı cevaptan sonra yumuşak kaydırma ve animasyonları etkinleştir', 28 | 'QR_ENABLE_WARNING' => 'Warn if the entered quick reply can be lost', 29 | 'QR_FIX_EMPTY_FORM' => 'Allow to fix quick reply form when it is empty', 30 | ]); 31 | -------------------------------------------------------------------------------- /migrations/v0xx/v_0_0_1.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '0.0.1', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\phpbb\db\migration\data\v310\dev']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Add configs 28 | ['config.add', ['qr_bbcode', '1']], 29 | ['config.add', ['qr_comma', '1']], 30 | ['config.add', ['qr_quicknick', '1']], 31 | ['config.add', ['qr_quickquote', '1']], 32 | ['config.add', ['qr_smilies', '1']], 33 | ['config.add', ['qr_enable_re', '0']], 34 | ['config.add', ['qr_ctrlenter', '1']], 35 | 36 | // Current version 37 | ['config.add', ['qr_version', '0.0.1']], 38 | 39 | // Add ACP modules 40 | ['module.add', ['acp', 'ACP_CAT_DOT_MODS', 'ACP_QUICKREPLY']], 41 | ['module.add', ['acp', 'ACP_QUICKREPLY', [ 42 | 'module_basename' => '\boardtools\quickreply\acp\quickreply_module', 43 | 'module_langname' => 'ACP_QUICKREPLY_EXPLAIN', 44 | 'module_mode' => 'config_quickreply', 45 | 'module_auth' => 'ext_boardtools/quickreply && acl_a_quickreply', 46 | ]]], 47 | 48 | // Add permissions 49 | ['permission.add', ['a_quickreply', true]], 50 | ['permission.add', ['f_qr_change_subject', false]], 51 | 52 | // Set permissions 53 | ['permission.permission_set', ['ROLE_ADMIN_FULL', 'a_quickreply']], 54 | ['permission.permission_set', ['ROLE_ADMIN_STANDARD', 'a_quickreply']], 55 | ['permission.permission_set', ['ROLE_FORUM_FULL', 'f_qr_change_subject']], 56 | ]; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /migrations/v0xx/v_0_1_0.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '0.1.0', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v0xx\v_0_0_1']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Add configs 28 | ['config.add', ['qr_capslock_transfer', '1']], 29 | ['config.add', ['qr_ajax_submit', '1']], 30 | 31 | // Update existing configs 32 | ['config.update', ['qr_version', '0.1.0']], 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /migrations/v0xx/v_0_1_1.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '0.1.1', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v0xx\v_0_1_0']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Update existing configs 28 | ['config.update', ['qr_version', '0.1.1']], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /migrations/v0xx/v_0_1_2.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '0.1.2', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v0xx\v_0_1_1']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Add configs 28 | ['config.add', ['qr_source_post', '1']], 29 | 30 | // Update existing configs 31 | ['config.update', ['qr_version', '0.1.2']], 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /migrations/v0xx/v_0_1_3.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '0.1.3', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v0xx\v_0_1_2']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | ['custom', [[$this, 'install_bbcode_for_qr']]], 28 | 29 | // Add configs 30 | ['config.add', ['qr_attach', '1']], 31 | ['config.add', ['qr_show_subjects', '0']], 32 | ['config.add', ['qr_color_nickname', '1']], 33 | ['config.add', ['qr_show_button_translit', '0']], 34 | 35 | // Update existing configs 36 | ['config.update', ['qr_version', '0.1.3']], 37 | ]; 38 | } 39 | 40 | public function install_bbcode_for_qr() 41 | { 42 | // Load the acp_bbcode class 43 | $bbcode_tool = $this->load_class(); 44 | 45 | $bbcode_data = $this->get_bbcode_data(); 46 | 47 | foreach ($bbcode_data as $bbcode_name => $bbcode_array) 48 | { 49 | // Build the BBCodes 50 | $data = $bbcode_tool->build_regexp($bbcode_array['bbcode_match'], $bbcode_array['bbcode_tpl']); 51 | $bbcode_array += $this->build_bbcode_array($data); 52 | 53 | $row_exists = $this->exist_bbcode($bbcode_name, $bbcode_array); 54 | $this->add_bbcode($row_exists, $bbcode_array); 55 | } 56 | } 57 | 58 | public function load_class() 59 | { 60 | if (!class_exists('acp_bbcodes')) 61 | { 62 | include($this->phpbb_root_path . 'includes/acp/acp_bbcodes.' . $this->php_ext); 63 | } 64 | return new \acp_bbcodes(); 65 | } 66 | 67 | public function get_bbcode_data() 68 | { 69 | return [ 70 | 'ref' => [ 71 | 'bbcode_helpline' => 'BBCode for QuickReply extension', 72 | 'bbcode_match' => '[ref]{TEXT}[/ref]', 73 | 'bbcode_tpl' => '{TEXT}', 74 | 'display_on_posting'=> 0, 75 | ], 76 | 'ref=' => [ 77 | 'bbcode_helpline' => 'BBCode for QuickReply extension', 78 | 'bbcode_match' => '[ref={COLOR}]{TEXT}[/ref]', 79 | 'bbcode_tpl' => '{TEXT}', 80 | 'display_on_posting'=> 0, 81 | ], 82 | 'post' => [ 83 | 'bbcode_helpline' => 'BBCode for QuickReply extension', 84 | 'bbcode_match' => '[post]{NUMBER}[/post]', 85 | 'bbcode_tpl' => '{L_QR_BBPOST}', 86 | 'display_on_posting'=> 0, 87 | ], 88 | ]; 89 | } 90 | 91 | public function build_bbcode_array($data) 92 | { 93 | return [ 94 | 'bbcode_tag' => $data['bbcode_tag'], 95 | 'first_pass_match' => $data['first_pass_match'], 96 | 'first_pass_replace' => $data['first_pass_replace'], 97 | 'second_pass_match' => $data['second_pass_match'], 98 | 'second_pass_replace' => $data['second_pass_replace'] 99 | ]; 100 | } 101 | 102 | public function exist_bbcode($bbcode_name, $bbcode_array) 103 | { 104 | $sql = 'SELECT bbcode_id 105 | FROM ' . $this->table_prefix . "bbcodes 106 | WHERE LOWER(bbcode_tag) = '" . strtolower($bbcode_name) . "' 107 | OR LOWER(bbcode_tag) = '" . strtolower($bbcode_array['bbcode_tag']) . "'"; 108 | $result = $this->db->sql_query($sql); 109 | $row_exists = $this->db->sql_fetchrow($result); 110 | $this->db->sql_freeresult($result); 111 | 112 | return $row_exists; 113 | } 114 | 115 | public function add_bbcode($row_exists, $bbcode_array) 116 | { 117 | if ($row_exists) 118 | { 119 | // Update existing BBCode 120 | $this->update_bbcode($row_exists['bbcode_id'], $bbcode_array); 121 | } 122 | else 123 | { 124 | // Create new BBCode 125 | $this->insert_bbcode($bbcode_array); 126 | } 127 | } 128 | 129 | public function update_bbcode($bbcode_id, $bbcode_array) 130 | { 131 | $sql = 'UPDATE ' . $this->table_prefix . 'bbcodes 132 | SET ' . $this->db->sql_build_array('UPDATE', $bbcode_array) . ' 133 | WHERE bbcode_id = ' . (int) $bbcode_id; 134 | $this->db->sql_query($sql); 135 | } 136 | 137 | public function insert_bbcode($bbcode_array) 138 | { 139 | $bbcode_id = $this->get_next_bbcode_id(); 140 | 141 | if ($bbcode_id <= BBCODE_LIMIT) 142 | { 143 | $bbcode_array['bbcode_id'] = (int) $bbcode_id; 144 | 145 | $this->db->sql_query('INSERT INTO ' . $this->table_prefix . 'bbcodes ' . $this->db->sql_build_array('INSERT', $bbcode_array)); 146 | } 147 | } 148 | 149 | public function get_next_bbcode_id() 150 | { 151 | $sql = 'SELECT MAX(bbcode_id) AS max_bbcode_id 152 | FROM ' . $this->table_prefix . 'bbcodes'; 153 | $result = $this->db->sql_query($sql); 154 | $row = $this->db->sql_fetchrow($result); 155 | $this->db->sql_freeresult($result); 156 | 157 | return $this->check_next_bbcode_id($row); 158 | } 159 | 160 | public function check_next_bbcode_id($row) 161 | { 162 | if ($row) 163 | { 164 | $bbcode_id = $row['max_bbcode_id'] + 1; 165 | 166 | // Make sure it is greater than the core BBCode ids... 167 | if ($bbcode_id <= NUM_CORE_BBCODES) 168 | { 169 | $bbcode_id = NUM_CORE_BBCODES + 1; 170 | } 171 | } 172 | else 173 | { 174 | $bbcode_id = NUM_CORE_BBCODES + 1; 175 | } 176 | 177 | return $bbcode_id; 178 | } 179 | } 180 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_0.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.0', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_0_beta5']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Update existing configs 28 | ['config.update', ['qr_version', '1.0.0']], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_0_beta.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.0-beta', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v0xx\v_0_1_3']; 22 | } 23 | 24 | public function update_schema() 25 | { 26 | return [ 27 | 'add_columns' => [ 28 | $this->table_prefix . 'users' => [ 29 | 'ajax_pagination' => ['BOOL', 1], 30 | ], 31 | ], 32 | ]; 33 | } 34 | 35 | public function revert_schema() 36 | { 37 | return [ 38 | 'drop_columns' => [ 39 | $this->table_prefix . 'users' => ['ajax_pagination'], 40 | ], 41 | ]; 42 | } 43 | 44 | public function update_data() 45 | { 46 | return [ 47 | // Add configs 48 | ['config.add', ['qr_ajax_pagination', '1']], 49 | 50 | // Update existing configs 51 | ['config.update', ['qr_version', '1.0.0-beta']], 52 | ]; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_0_beta2.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.0-beta2', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_0_beta']; 22 | } 23 | 24 | public function update_schema() 25 | { 26 | return [ 27 | 'add_columns' => [ 28 | $this->table_prefix . 'users' => [ 29 | 'qr_soft_scroll' => ['BOOL', 1], 30 | ], 31 | ], 32 | ]; 33 | } 34 | 35 | public function revert_schema() 36 | { 37 | return [ 38 | 'drop_columns' => [ 39 | $this->table_prefix . 'users' => ['qr_soft_scroll'], 40 | ], 41 | ]; 42 | } 43 | 44 | public function update_data() 45 | { 46 | return [ 47 | // Update existing configs 48 | ['config.update', ['qr_version', '1.0.0-beta2']], 49 | ]; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_0_beta3.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.0-beta3', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_0_beta2']; 22 | } 23 | 24 | public function update_schema() 25 | { 26 | return [ 27 | 'add_columns' => [ 28 | $this->table_prefix . 'users' => [ 29 | 'qr_enable_scroll' => ['BOOL', 1], 30 | ], 31 | ], 32 | ]; 33 | } 34 | 35 | public function revert_schema() 36 | { 37 | return [ 38 | 'drop_columns' => [ 39 | $this->table_prefix . 'users' => ['qr_enable_scroll'], 40 | ], 41 | ]; 42 | } 43 | 44 | public function update_data() 45 | { 46 | return [ 47 | // Add configs 48 | ['config.add', ['qr_scroll_time', 500]], 49 | 50 | // Update existing configs 51 | ['config.update', ['qr_version', '1.0.0-beta3']], 52 | ]; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_0_beta4.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.0-beta4', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_0_beta3']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Add configs 28 | ['config.add', ['qr_allow_for_guests', 0]], 29 | 30 | // Update existing configs 31 | ['config.update', ['qr_version', '1.0.0-beta4']], 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_0_beta5.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.0-beta5', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_0_beta4']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Add configs 28 | ['config.add', ['qr_quicknick_ref', 1]], 29 | ['config.add', ['qr_quicknick_pm', 1]], 30 | ['config.add', ['qr_quickquote_link', 0]], 31 | ['config.add', ['qr_full_quote', 1]], 32 | ['config.add', ['qr_show_subjects_in_search', 1]], 33 | 34 | // Update existing configs 35 | ['config.update', ['qr_version', '1.0.0-beta5']], 36 | ]; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_1.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.1', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_0']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Add configs 28 | ['config.add', ['qr_hide_subject_box', 1]], 29 | 30 | // Update existing configs 31 | ['config.update', ['qr_version', '1.0.1']], 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_0_2.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.0.2', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_1']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Update existing configs 28 | ['config.update', ['qr_version', '1.0.2']], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_1_0_alpha.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.1.0-alpha', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_1_0_dev']; 22 | } 23 | 24 | public function update_schema() 25 | { 26 | return [ 27 | 'add_columns' => [ 28 | $this->table_prefix . 'forums' => [ 29 | 'qr_ajax_submit' => ['BOOL', 1], 30 | ], 31 | ], 32 | ]; 33 | } 34 | 35 | public function revert_schema() 36 | { 37 | return [ 38 | 'drop_columns' => [ 39 | $this->table_prefix . 'forums' => ['qr_ajax_submit'], 40 | ], 41 | ]; 42 | } 43 | 44 | public function update_data() 45 | { 46 | return [ 47 | // Update existing configs 48 | ['config.update', ['qr_version', '1.1.0-alpha']], 49 | 50 | // Add ACP modules 51 | ['module.add', ['acp', 'ACP_QUICKREPLY', [ 52 | 'module_basename' => '\boardtools\quickreply\acp\quickreply_qn_module', 53 | 'module_langname' => 'ACP_QUICKREPLY_QN_EXPLAIN', 54 | 'module_mode' => 'config_quickreply_qn', 55 | 'module_auth' => 'ext_boardtools/quickreply && acl_a_quickreply', 56 | ]]], 57 | ['module.add', ['acp', 'ACP_QUICKREPLY', [ 58 | 'module_basename' => '\boardtools\quickreply\acp\quickreply_plugins_module', 59 | 'module_langname' => 'ACP_QUICKREPLY_PLUGINS_EXPLAIN', 60 | 'module_mode' => 'config_quickreply_plugins', 61 | 'module_auth' => 'ext_boardtools/quickreply && acl_a_quickreply', 62 | ]]], 63 | ]; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_1_0_alpha2.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.1.0-alpha2', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_1_0_alpha']; 22 | } 23 | 24 | public function update_schema() 25 | { 26 | return [ 27 | 'add_columns' => [ 28 | $this->table_prefix . 'forums' => [ 29 | 'qr_form_type' => ['TINT:2', 1], 30 | ], 31 | ], 32 | ]; 33 | } 34 | 35 | public function revert_schema() 36 | { 37 | return [ 38 | 'drop_columns' => [ 39 | $this->table_prefix . 'forums' => ['qr_form_type'], 40 | ], 41 | ]; 42 | } 43 | 44 | public function update_data() 45 | { 46 | return [ 47 | // Add configs 48 | ['config.add', ['qr_quickquote_button', 1]], 49 | ['config.add', ['qr_last_quote', 1]], 50 | 51 | // Update existing configs 52 | ['config.update', ['qr_version', '1.1.0-alpha2']], 53 | 54 | // Add permissions 55 | ['permission.add', ['f_qr_full_quote', false]], 56 | 57 | // Set permissions 58 | ['permission.permission_set', ['ROLE_FORUM_FULL', 'f_qr_full_quote']], 59 | ['permission.permission_set', ['ROLE_FORUM_POLLS', 'f_qr_full_quote']], 60 | ['permission.permission_set', ['ROLE_FORUM_STANDARD', 'f_qr_full_quote']], 61 | ['permission.permission_set', ['ROLE_FORUM_NEW_MEMBER', 'f_qr_full_quote', 'role', false]], 62 | ]; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_1_0_beta1.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.1.0-beta1', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_1_0_alpha2']; 22 | } 23 | 24 | public function update_schema() 25 | { 26 | return [ 27 | 'add_columns' => [ 28 | $this->table_prefix . 'users' => [ 29 | 'qr_enable_warning' => ['BOOL', 1], 30 | 'qr_fix_empty_form' => ['BOOL', 1], 31 | ], 32 | ], 33 | ]; 34 | } 35 | 36 | public function revert_schema() 37 | { 38 | return [ 39 | 'drop_columns' => [ 40 | $this->table_prefix . 'users' => ['qr_enable_warning', 'qr_fix_empty_form'], 41 | ], 42 | ]; 43 | } 44 | 45 | public function update_data() 46 | { 47 | return [ 48 | // Update existing configs 49 | ['config.update', ['qr_version', '1.1.0-beta1']], 50 | ]; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_1_0_dev.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.1.0-dev', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_0_2']; 22 | } 23 | 24 | public function update_schema() 25 | { 26 | return [ 27 | 'add_columns' => [ 28 | $this->table_prefix . 'users' => [ 29 | 'qr_quicknick_string' => ['BOOL', 0], 30 | ], 31 | ], 32 | ]; 33 | } 34 | 35 | public function revert_schema() 36 | { 37 | return [ 38 | 'drop_columns' => [ 39 | $this->table_prefix . 'users' => ['qr_quicknick_string'], 40 | ], 41 | ]; 42 | } 43 | 44 | public function update_data() 45 | { 46 | return [ 47 | // Update existing configs 48 | ['config.update', ['qr_version', '1.1.0-dev']], 49 | 50 | // Add configs 51 | ['config.add', ['qr_quicknick_string', '0']], 52 | ]; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_1_0_rc1.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.1.0-RC1', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_1_0_beta1']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Update existing configs 28 | ['config.update', ['qr_version', '1.1.0-RC1']], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /migrations/v1xx/v_1_1_0_rc2.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '1.1.0-RC2', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_1_0_rc1']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Update existing configs 28 | ['config.update', ['qr_version', '1.1.0-RC2']], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /migrations/v2xx/v_2_0_0_alpha.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '2.0.0-alpha', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v2xx\v_2_0_0_dev2']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Update existing configs 28 | ['config.update', ['qr_version', '2.0.0-alpha']], 29 | 30 | ['custom', [[$this, 'update_bbcode_ref']]], 31 | ]; 32 | } 33 | 34 | public function update_bbcode_ref() 35 | { 36 | if (!class_exists('boardtools\quickreply\migrations\v0xx\v_0_1_3')) 37 | { 38 | include($this->phpbb_root_path . 'ext/boardtools/quickreply/migrations/v0xx/v_0_1_3.' . $this->php_ext); 39 | } 40 | $bbcode_funcs = new \boardtools\quickreply\migrations\v0xx\v_0_1_3($this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix); 41 | 42 | // Load the acp_bbcode class 43 | $bbcode_tool = $bbcode_funcs->load_class(); 44 | 45 | $bbcode_data = $this->get_bbcode_data(); 46 | 47 | foreach ($bbcode_data as $bbcode_name => $bbcode_array) 48 | { 49 | // Build the BBCodes 50 | $data = $bbcode_tool->build_regexp($bbcode_array['bbcode_match'], $bbcode_array['bbcode_tpl']); 51 | $bbcode_array += $bbcode_funcs->build_bbcode_array($data); 52 | 53 | $row_exists = $bbcode_funcs->exist_bbcode($bbcode_name, $bbcode_array); 54 | if ($row_exists) 55 | { 56 | // Update existing BBCode 57 | $bbcode_funcs->update_bbcode($row_exists['bbcode_id'], $bbcode_array); 58 | } 59 | } 60 | 61 | // Delete the ref BBCode as ref= covers both cases now 62 | $sql = 'DELETE FROM ' . $this->table_prefix . "bbcodes 63 | WHERE bbcode_tag = 'ref'"; 64 | $this->db->sql_query($sql); 65 | } 66 | 67 | private function get_bbcode_data() 68 | { 69 | return [ 70 | 'ref=' => [ 71 | 'bbcode_helpline' => 'BBCode for QuickReply extension', 72 | 'bbcode_match' => '[ref={COLOR;optional}]{TEXT}[/ref]', 73 | 'bbcode_tpl' => ' 74 | 75 | 76 | {TEXT} 77 | 78 | 79 | {TEXT} 80 | 81 | ', 82 | 'display_on_posting'=> 0, 83 | ], 84 | ]; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /migrations/v2xx/v_2_0_0_beta.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '2.0.0-beta', '>='); 20 | } 21 | 22 | static public function depends_on() 23 | { 24 | return ['\boardtools\quickreply\migrations\v2xx\v_2_0_0_alpha']; 25 | } 26 | 27 | public function update_data() 28 | { 29 | return [ 30 | // Update existing configs 31 | ['config.update', ['qr_version', '2.0.0-beta']], 32 | 33 | ['custom', [[$this, 'reparse_posts']]], 34 | ]; 35 | } 36 | 37 | public function reparse_posts() 38 | { 39 | /** @var manager $reparser_manager */ 40 | $reparser_manager = $this->container->get('text_reparser.manager'); 41 | 42 | // Reparse only posts in topics and PMs - ref BBCode should not be used anywhere else. 43 | $reparsers_list = [ 44 | 'text_reparser.pm_text', 45 | 'text_reparser.post_text', 46 | ]; 47 | 48 | // Re-initialize reparsers. 49 | foreach ($reparsers_list as $name) 50 | { 51 | /** @var reparser_interface $reparser */ 52 | $reparser = $this->container->get($name); 53 | 54 | $reparser_manager->update_resume_data($name, 1, $reparser->get_max_id(), 100); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /migrations/v2xx/v_2_0_0_beta2.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '2.0.0-beta2', '>='); 20 | } 21 | 22 | static public function depends_on() 23 | { 24 | return ['\boardtools\quickreply\migrations\v2xx\v_2_0_0_beta']; 25 | } 26 | 27 | public function update_data() 28 | { 29 | return [ 30 | // Update existing configs 31 | ['config.update', ['qr_version', '2.0.0-beta2']], 32 | 33 | ['custom', [[$this, 'update_bbcode_ref']]], 34 | ]; 35 | } 36 | 37 | public function update_bbcode_ref() 38 | { 39 | if (!class_exists('boardtools\quickreply\migrations\v0xx\v_0_1_3')) 40 | { 41 | include($this->phpbb_root_path . 'ext/boardtools/quickreply/migrations/v0xx/v_0_1_3.' . $this->php_ext); 42 | } 43 | $bbcode_funcs = new \boardtools\quickreply\migrations\v0xx\v_0_1_3($this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix); 44 | 45 | // Load the acp_bbcode class 46 | $bbcode_tool = $bbcode_funcs->load_class(); 47 | 48 | $bbcode_data = $this->get_bbcode_data(); 49 | 50 | foreach ($bbcode_data as $bbcode_name => $bbcode_array) 51 | { 52 | // Build the BBCodes 53 | $data = $bbcode_tool->build_regexp($bbcode_array['bbcode_match'], $bbcode_array['bbcode_tpl']); 54 | $bbcode_array += $bbcode_funcs->build_bbcode_array($data); 55 | 56 | $row_exists = $bbcode_funcs->exist_bbcode($bbcode_name, $bbcode_array); 57 | 58 | // Update or Add BBCode 59 | $bbcode_funcs->add_bbcode($row_exists, $bbcode_array); 60 | } 61 | } 62 | 63 | private function get_bbcode_data() 64 | { 65 | return [ 66 | 'ref=' => [ 67 | 'bbcode_helpline' => 'BBCode for QuickReply extension', 68 | 'bbcode_match' => '[ref={COLOR;optional}]{TEXT}[/ref]', 69 | 'bbcode_tpl' => ' 70 | 71 | 72 | {TEXT} 73 | 74 | 75 | {TEXT} 76 | 77 | ', 78 | 'display_on_posting'=> 0, 79 | ], 80 | ]; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /migrations/v2xx/v_2_0_0_dev2.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '2.0.0-dev', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v1xx\v_1_1_0_beta1']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | ['custom', [[$this, 'update_bbcode_post']]], 28 | 29 | // Update existing configs 30 | ['config.update', ['qr_version', '2.0.0-dev2']], 31 | 32 | // Remove configs 33 | ['config.remove', ['qr_source_post']], 34 | ['config.remove', ['qr_quickquote_link']], 35 | ]; 36 | } 37 | 38 | public function update_bbcode_post() 39 | { 40 | if (!class_exists('boardtools\quickreply\migrations\v0xx\v_0_1_3')) 41 | { 42 | include($this->phpbb_root_path . 'ext/boardtools/quickreply/migrations/v0xx/v_0_1_3.' . $this->php_ext); 43 | } 44 | $bbcode_funcs = new \boardtools\quickreply\migrations\v0xx\v_0_1_3($this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix); 45 | 46 | // Load the acp_bbcode class 47 | $bbcode_tool = $bbcode_funcs->load_class(); 48 | 49 | $bbcode_data = $this->get_bbcode_data(); 50 | 51 | foreach ($bbcode_data as $bbcode_name => $bbcode_array) 52 | { 53 | // Build the BBCodes 54 | $data = $bbcode_tool->build_regexp($bbcode_array['bbcode_match'], $bbcode_array['bbcode_tpl']); 55 | $bbcode_array += $bbcode_funcs->build_bbcode_array($data); 56 | 57 | $row_exists = $bbcode_funcs->exist_bbcode($bbcode_name, $bbcode_array); 58 | if ($row_exists) 59 | { 60 | // Update existing BBCode 61 | $bbcode_funcs->update_bbcode($row_exists['bbcode_id'], $bbcode_array); 62 | } 63 | } 64 | } 65 | 66 | private function get_bbcode_data() 67 | { 68 | return [ 69 | 'post' => [ 70 | 'bbcode_helpline' => 'BBCode for QuickReply extension', 71 | 'bbcode_match' => '[post]{NUMBER}[/post]', 72 | 'bbcode_tpl' => '', 73 | 'display_on_posting'=> 0, 74 | ], 75 | ]; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /migrations/v2xx/v_2_1_0_alpha.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '2.1.0-alpha', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v2xx\v_2_0_0_beta2']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Update existing configs 28 | ['config.update', ['qr_version', '2.1.0-alpha']], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /migrations/v2xx/v_2_1_0_beta.php: -------------------------------------------------------------------------------- 1 | config['qr_version']) && version_compare($this->config['qr_version'], '2.1.0-beta', '>='); 17 | } 18 | 19 | static public function depends_on() 20 | { 21 | return ['\boardtools\quickreply\migrations\v2xx\v_2_1_0_alpha']; 22 | } 23 | 24 | public function update_data() 25 | { 26 | return [ 27 | // Add configs 28 | ['config.add', ['qr_read_next', '1']], 29 | 30 | // Update existing configs 31 | ['config.update', ['qr_version', '2.1.0-beta']], 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /notification/quicknick.php: -------------------------------------------------------------------------------- 1 | 'NOTIFICATION_TYPE_QUICKNICK', 39 | 'group' => 'NOTIFICATION_GROUP_POSTING', 40 | ]; 41 | 42 | /** 43 | * Is available 44 | */ 45 | public function is_available() 46 | { 47 | return true; 48 | } 49 | 50 | /** 51 | * Get a list of mentioned users 52 | * 53 | * @param string $xml Parsed text 54 | * @return string[] List of users 55 | */ 56 | private function get_mentioned_users($xml) 57 | { 58 | $usernames = []; 59 | if (!preg_match('/]/', $xml)) 60 | { 61 | return $usernames; 62 | } 63 | 64 | $dom = new \DOMDocument; 65 | $dom->loadXML($xml); 66 | $xpath = new \DOMXPath($dom); 67 | foreach ($xpath->query('//REF') as $username) 68 | { 69 | preg_match('#^\[ref(.*?)\](.+)\[\/ref\]$#ui', $username->textContent, $matches); 70 | $usernames[] = $matches[2]; 71 | } 72 | 73 | return $usernames; 74 | } 75 | 76 | /** 77 | * Find the users who want to receive notifications 78 | * 79 | * @param array $post Data from submit_post 80 | * @param array $options Options for finding users for notification 81 | * 82 | * @return array 83 | */ 84 | public function find_users_for_notification($post, $options = []) 85 | { 86 | $options = array_merge([ 87 | 'ignore_users' => [], 88 | ], $options); 89 | 90 | $usernames = $this->get_mentioned_users($post['post_text']); 91 | 92 | if (empty($usernames)) 93 | { 94 | return []; 95 | } 96 | 97 | $usernames = array_unique($usernames); 98 | 99 | $usernames = array_map('utf8_clean_string', $usernames); 100 | 101 | $users = $this->get_ids_of_usernames($usernames, $post['poster_id']); 102 | 103 | return $this->get_authorised_recipients($users, $post['forum_id'], $options, true); 104 | } 105 | 106 | /** 107 | * Get an array of users' IDs from an array of their usernames 108 | * 109 | * @param array $usernames Array of usernames 110 | * @param int $poster_id User ID of current post author (that should not be notified) 111 | * @return int[] 112 | */ 113 | protected function get_ids_of_usernames($usernames, $poster_id) 114 | { 115 | $users = []; 116 | 117 | $sql = 'SELECT user_id 118 | FROM ' . USERS_TABLE . ' 119 | WHERE ' . $this->db->sql_in_set('username_clean', $usernames) . ' 120 | AND user_id <> ' . (int) $poster_id; 121 | $result = $this->db->sql_query($sql); 122 | while ($row = $this->db->sql_fetchrow($result)) 123 | { 124 | $users[] = (int) $row['user_id']; 125 | } 126 | $this->db->sql_freeresult($result); 127 | 128 | return $users; 129 | } 130 | 131 | /** 132 | * Get email template 133 | * 134 | * @return string|bool 135 | */ 136 | public function get_email_template() 137 | { 138 | return '@boardtools_quickreply/quicknick'; 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /styles/all/template/event/overall_header_head_append.html: -------------------------------------------------------------------------------- 1 | {% if S_VIEWTOPIC %} 2 | {% INCLUDECSS '@boardtools_quickreply/quickreply_main.css' %} 3 | {% INCLUDECSS '@boardtools_quickreply/quickreply.css' %} 4 | {% elseif S_IN_POSTING %} 5 | {% INCLUDECSS '@boardtools_quickreply/quickreply.css' %} 6 | {% endif %} 7 | -------------------------------------------------------------------------------- /styles/all/template/event/posting_editor_subject_after.html: -------------------------------------------------------------------------------- 1 | {% if S_IN_POSTING %} 2 | 19 | {% INCLUDEJS '@boardtools_quickreply/quickreply_posting.js' %} 20 | {% endif %} 21 | -------------------------------------------------------------------------------- /styles/all/template/event/quickreply_editor_panel_after.html: -------------------------------------------------------------------------------- 1 | {% if S_QR_SHOW_ATTACH_BOX %} 2 |
{{ lang('QR_ATTACH_NOTICE') }}
3 | {% include 'posting_attach_body.html' %} 4 | {% endif %} -------------------------------------------------------------------------------- /styles/all/template/event/search_results_header_after.html: -------------------------------------------------------------------------------- 1 | {% if (loops.searchresults and QR_HIDE_POSTS_SUBJECT) %} 2 | {% INCLUDEJS '@boardtools_quickreply/quickreply_searchresults.js' %} 3 | {% endif %} 4 | -------------------------------------------------------------------------------- /styles/all/template/event/search_results_post_before.html: -------------------------------------------------------------------------------- 1 | {% if searchresults.QR_NOT_FIRST_POST %}{% endif %} -------------------------------------------------------------------------------- /styles/all/template/event/viewtopic_body_footer_before.html: -------------------------------------------------------------------------------- 1 | {% include '@boardtools_quickreply/quickreply_init.html' %} 2 | -------------------------------------------------------------------------------- /styles/all/template/event/viewtopic_body_post_author_after.html: -------------------------------------------------------------------------------- 1 | {% if (S_QR_QUICKNICK_STRING or (S_QR_QUICKNICK_ENABLE and S_QR_QUICKNICK_USERTYPE)) %} 2 |
{{ lang('QR_QUICKNICK') }} 3 | {% endif %} -------------------------------------------------------------------------------- /styles/all/template/event/viewtopic_body_postrow_post_after.html: -------------------------------------------------------------------------------- 1 | {% if (S_QR_QUICKQUOTE_ENABLE or S_QR_FULL_QUOTE and S_QR_FULL_QUOTE_ALLOWED) %} 2 | 3 | {% endif %} 4 | 5 | {% if S_QR_FULL_QUOTE and postrow.DECODED_MESSAGE != '' %} 6 | 7 | {% endif %} 8 | {# /.post-container #} 9 | {% if (postrow.S_LAST_ROW and not S_QUICKREPLY_REQUEST) %} 10 | 11 | 12 | {% endif %} 13 | 14 | {% if S_QR_READ_NEXT and postrow.S_LAST_ROW %} 15 |
16 | {% for page in pagination %} 17 | {% if page.S_IS_NEXT %} 18 | 19 | {% endif %} 20 | {% endfor %} 21 |
22 | {% endif %} 23 | -------------------------------------------------------------------------------- /styles/all/template/event/viewtopic_body_postrow_post_before.html: -------------------------------------------------------------------------------- 1 | {% if (postrow.S_FIRST_ROW and not S_QUICKREPLY_REQUEST) %} 2 |
3 | {% endif %} 4 |
5 | -------------------------------------------------------------------------------- /styles/all/template/quickreply_captcha_template.html: -------------------------------------------------------------------------------- 1 | {% if (CAPTCHA_TEMPLATE and S_CONFIRM_CODE) %} 2 | 3 | {% include CAPTCHA_TEMPLATE %} 4 | {% endif %} 5 | -------------------------------------------------------------------------------- /styles/all/template/quickreply_form_buttons.html: -------------------------------------------------------------------------------- 1 | {% if S_QR_FORM_TYPE > 0 %} 2 | 14 | 21 | {% endif %} 22 | -------------------------------------------------------------------------------- /styles/all/template/quickreply_posting.js: -------------------------------------------------------------------------------- 1 | /* global phpbb, addquote:true, quickreply */ 2 | ;(function($, window, document) { 3 | // do stuff here and use $, window and document safely 4 | // https://www.phpbb.com/community/viewtopic.php?p=13589106#p13589106 5 | 'use strict'; 6 | 7 | /*****************************/ 8 | /* Not Change Subject Plugin */ 9 | /*****************************/ 10 | if (quickreply.posting.settings.unchangedSubject) { 11 | if (quickreply.posting.settings.hideSubjectBox) { 12 | $("#subject").closest("dl").hide(); 13 | } else { 14 | $('#subject').prop("readonly", true); 15 | } 16 | } 17 | 18 | /*********************/ 19 | /* Full Quote Plugin */ 20 | /*********************/ 21 | var postsContainer = $('#topicreview'), quickQuoteButtons = false, alertTimeout = null; 22 | 23 | /** 24 | * Gets user selection. 25 | * 26 | * @returns string 27 | */ 28 | function getSelection() { 29 | var theSelection = '', 30 | clientPC = navigator.userAgent.toLowerCase(), // Get client info 31 | isIE = ((clientPC.indexOf('msie') !== -1) && (clientPC.indexOf('opera') === -1)); 32 | 33 | // Get text selection - not only the post content :( 34 | // IE9 must use the document.selection method but has the *.getSelection so we just force no IE 35 | if (window.getSelection && !isIE && !window.opera) { 36 | theSelection = window.getSelection().toString(); 37 | } else if (document.getSelection && !isIE) { 38 | theSelection = document.getSelection(); 39 | } else if (document.selection) { 40 | theSelection = document.selection.createRange().text; 41 | } 42 | 43 | return theSelection; 44 | } 45 | 46 | /** 47 | * Prevents full quotes for the specified quote buttons. 48 | * 49 | * @param {jQuery} element jQuery element for quote buttons 50 | */ 51 | function preventFullQuote(element) { 52 | element.each(function() { 53 | var $this = $(this), addQuoteFunction = addquote, processClick = false; 54 | 55 | $this.addClass('qr-quickquote').mousedown(function() { 56 | if (!getSelection()) { 57 | processClick = true; 58 | addquote = function() { 59 | }; 60 | } 61 | }).click(function(e) { 62 | if (!processClick) { 63 | // User selected some text - process quote as usual. 64 | return; 65 | } 66 | 67 | e.preventDefault(); 68 | e.stopPropagation(); 69 | 70 | // Cancel animation. 71 | $('html,body').stop(); 72 | 73 | // Remove previous timeouts. 74 | if (alertTimeout !== null) { 75 | clearTimeout(alertTimeout); 76 | } 77 | 78 | var alert = phpbb.alert(quickreply.posting.language.ERROR, quickreply.posting.language.NO_FULL_QUOTE); 79 | alertTimeout = setTimeout(function() { 80 | $('#darkenwrapper').fadeOut(phpbb.alertTime, function() { 81 | alert.hide(); 82 | }); 83 | }, 5000); 84 | 85 | processClick = false; 86 | addquote = addQuoteFunction; 87 | }); 88 | }); 89 | } 90 | 91 | if (!quickreply.posting.settings.fullQuoteAllowed) { 92 | quickQuoteButtons = postsContainer.find('.post-buttons .fa-quote-left').parent('a'); 93 | } else if (!quickreply.posting.settings.lastQuote) { 94 | quickQuoteButtons = postsContainer.find('.post:first-of-type .post-buttons .fa-quote-left').parent('a'); 95 | } 96 | 97 | if (quickQuoteButtons && quickQuoteButtons.length) { 98 | $(document).ready(function() { 99 | preventFullQuote(quickQuoteButtons); 100 | }); 101 | } 102 | })(jQuery, window, document); 103 | -------------------------------------------------------------------------------- /styles/all/template/quickreply_searchresults.js: -------------------------------------------------------------------------------- 1 | ; (function ($, window, document) { 2 | // do stuff here and use $, window and document safely 3 | // https://www.phpbb.com/community/viewtopic.php?p=13589106#p13589106 4 | // Hide Subject Plugin 5 | $('#page-body').find('.not_first_post').each(function() { 6 | $(this).next('div.search').find('div.postbody h3:first').css('display', 'none'); 7 | }); 8 | })(jQuery, window, document); 9 | -------------------------------------------------------------------------------- /styles/all/template/quickreply_special.js: -------------------------------------------------------------------------------- 1 | /* global quickreply */ 2 | ; (function ($, window, document) { 3 | // do stuff here and use $, window and document safely 4 | // https://www.phpbb.com/community/viewtopic.php?p=13589106#p13589106 5 | /** 6 | * Hides subjects of the posts within the specified elements (if needed). 7 | * 8 | * @param {jQuery} elements 9 | */ 10 | quickreply.special.functions.qr_hide_subject = function (elements) { 11 | if (quickreply.special.hideSubject) { 12 | elements.find('div.post').each(function () { 13 | var qr_post_subject = $(this).find('.postbody div h3:first').not('.first'); 14 | if (qr_post_subject.length) { 15 | qr_post_subject.css('display', 'none'); 16 | $(this).addClass('hidden_subject'); 17 | } 18 | }); 19 | } 20 | }; 21 | quickreply.special.functions.qr_hide_subject($('#qr_posts')); 22 | })(jQuery, window, document); 23 | -------------------------------------------------------------------------------- /styles/all/template/translit.js: -------------------------------------------------------------------------------- 1 | /* global quickreply, form_name, text_name */ 2 | /** 3 | * Функция перевода транслита в нормальный русский язык добавлена 01/01/2002 Андреем Мазлиным 4 | * Updated in 2015 and 2017. 5 | */ 6 | function translit() { 7 | 'use strict'; 8 | 9 | var buf = '', selection = null, txtarea = document.forms[form_name].elements[text_name], i, start = 0, end = 0; 10 | 11 | if (document.selection) { 12 | selection = document.selection.createRange(); 13 | buf = selection.text; 14 | } else if (typeof (txtarea.selectionStart) === "number") { 15 | start = txtarea.selectionStart; 16 | end = txtarea.selectionEnd; 17 | if (start !== end) { 18 | buf = txtarea.value.substr(start, end - start); 19 | } else { 20 | buf = txtarea.value; 21 | } 22 | } else { 23 | buf = txtarea.value; 24 | } 25 | 26 | for (i = 0; i < quickreply.translit.langFromCaps.length; i++) { 27 | buf = buf.replace(new RegExp(quickreply.translit.langFromCaps[i], 'g'), quickreply.translit.langToCaps[i]); 28 | } 29 | 30 | for (i = 0; i < quickreply.translit.langFrom.length; i++) { 31 | buf = buf.replace(new RegExp(quickreply.translit.langFrom[i], 'g'), quickreply.translit.langTo[i]); 32 | } 33 | 34 | if (selection) { 35 | selection.text = buf; 36 | } else { 37 | if (start !== end) { 38 | txtarea.value = txtarea.value.substr(0, start) + buf + txtarea.value.substr(end); 39 | } else { 40 | txtarea.value = buf; 41 | } 42 | } 43 | txtarea.focus(); 44 | } 45 | -------------------------------------------------------------------------------- /styles/all/theme/quickreply.css: -------------------------------------------------------------------------------- 1 | /* This file is style-specific and can be modified in other styles. */ 2 | /* Styling for some features of QuickReply Reloaded. */ 3 | .qr_dropdown { 4 | display: block; 5 | } 6 | 7 | .qr_dropdown a { 8 | font-size: 11px !important; 9 | } 10 | 11 | .post.hidden_subject .postbody p.author { 12 | padding-top: 10px; 13 | padding-bottom: 5px; 14 | } 15 | 16 | .button.qr-quickquote .icon { 17 | color: #0A8ED0; 18 | } 19 | 20 | .pagination_next { 21 | text-align: center; 22 | } 23 | 24 | .pagination_next a.button { 25 | background: #ECEDEE; 26 | border-color: #B4BAC0; 27 | box-shadow: none; 28 | text-shadow: none; 29 | float: none; 30 | padding: 5px 0; 31 | margin: 0; 32 | margin-bottom: 4px; 33 | width: 100%; 34 | width: (100% - 2px); 35 | font-size: 1.5em; 36 | } 37 | 38 | .pagination_next a.button:hover { 39 | border-color: #0A8ED0; 40 | } 41 | 42 | /* Fixed form style. */ 43 | 44 | /* Compact form style. */ 45 | 46 | /* Fullscreen form style. */ 47 | -------------------------------------------------------------------------------- /styles/all/theme/quickreply_main.css: -------------------------------------------------------------------------------- 1 | /* This file is common and should be inherited by all styles. */ 2 | /* Styling for some features of QuickReply Reloaded. */ 3 | .qr_quickquote, .qr_quicknick_trigger { 4 | cursor: pointer; 5 | } 6 | 7 | .qr_quickquote { 8 | -webkit-touch-callout: none; 9 | -webkit-user-select: none; 10 | -khtml-user-select: none; 11 | -moz-user-select: none; 12 | -ms-user-select: none; 13 | user-select: none; 14 | } 15 | 16 | #preview { 17 | position: relative; 18 | } 19 | 20 | #preview_close { 21 | position: absolute; 22 | top: 10px; 23 | right: 10px; 24 | font-size: 1.2em; 25 | cursor: pointer; 26 | z-index: 50; 27 | } 28 | 29 | #preview_close:hover { 30 | opacity: 0.5; 31 | } 32 | 33 | #qr_loading_text { 34 | display: none; 35 | position: fixed; 36 | top: 50%; 37 | left: 0; 38 | width: 100%; 39 | text-align: center; 40 | margin-top: -30px; 41 | color: #FFF; 42 | z-index: 50; 43 | } 44 | 45 | #qr_loading_text > i { 46 | display: inline-block; 47 | font-size: 36px; 48 | vertical-align: top; 49 | } 50 | 51 | #qr_loading_text > span { 52 | display: inline-block; 53 | font-size: 24px; 54 | font-weight: bold; 55 | margin: 3px 20px 0; 56 | } 57 | 58 | #qr_loading_text > div { 59 | margin: 10px 15px 0; 60 | font-size: 18px; 61 | font-style: italic; 62 | } 63 | 64 | #qr_loading_explain, #qr_loading_cancel { 65 | display: none; 66 | } 67 | 68 | #qr_loading_text #qr_loading_cancel span { 69 | padding: 5px 15px; 70 | margin-top: 15px; 71 | font-size: 16px; 72 | border: 1px solid #FFF; 73 | border-radius: 10px; 74 | cursor: pointer; 75 | } 76 | 77 | #qr_loading_cancel span:hover { 78 | background-color: rgba(255, 255, 255, 0.5); 79 | } 80 | 81 | #qr_attach_notice { 82 | display: none; 83 | font-style: italic; 84 | text-align: center; 85 | padding: 5px 0; 86 | font-size: 16px; 87 | cursor: pointer; 88 | background-color: #ffffff; 89 | } 90 | 91 | #qr_postform.no_transition * { 92 | transition: none !important; 93 | } 94 | 95 | #qr_postform textarea::-webkit-input-placeholder { 96 | opacity: 0.55; 97 | } 98 | 99 | #qr_postform textarea::-moz-placeholder { 100 | opacity: 0.55; 101 | } 102 | 103 | #qr_postform textarea:-moz-placeholder { 104 | opacity: 0.55; 105 | } 106 | 107 | #qr_postform textarea:-ms-input-placeholder { 108 | opacity: 0.55; 109 | } 110 | 111 | 112 | /* Fixed form style. */ 113 | .qr_fixed_form { 114 | position: fixed; 115 | bottom: 0; 116 | left: 0; 117 | right: 0; 118 | z-index: 41; 119 | background-color: transparent; 120 | max-height: 50%; 121 | overflow-y: auto; 122 | overflow-x: hidden; 123 | box-shadow: 0 -8px 15px -10px #CCC; 124 | margin: 0 auto; 125 | } 126 | 127 | #qr_postform.qr_fixed_form #message-box { 128 | box-sizing: border-box; 129 | padding-left: 35px; 130 | width: 100%; 131 | transition: width 0.5s ease; 132 | } 133 | 134 | #qr_postform.qr_extended_form #message-box { 135 | transition: width 0s; 136 | } 137 | 138 | #qr_postform.qr_fixed_form.with_smileys #message-box { 139 | width: 80%; 140 | } 141 | 142 | #qr_postform.qr_fixed_form #message-box textarea { 143 | padding-right: 45px; 144 | width: 100%; 145 | box-sizing: border-box; 146 | overflow-y: scroll; 147 | resize: none; 148 | } 149 | 150 | #qr_postform.qr_fixed_form #message-box textarea.qr_fixed_textarea { 151 | height: 115px !important; 152 | min-height: 0; 153 | transition: height 0.5s ease; 154 | } 155 | 156 | .qr_fixed_form #attach-panel, 157 | .qr_fixed_form #format-buttons, 158 | .qr_fixed_form #abbc3_buttons, 159 | .qr_fixed_form #register-and-translit, 160 | .qr_fixed_form #qr_captcha_container, 161 | .qr_fixed_form .quickreply-title, 162 | .qr_fixed_form .additional-element { 163 | display: none; 164 | min-height: 0; 165 | } 166 | 167 | #qr_text_action_box { 168 | display: block; 169 | width: 30px; 170 | float: left; 171 | } 172 | 173 | #qr_text_action_box i, 174 | #qr_action_box i, 175 | #qr_show_fixed_form i { 176 | box-sizing: content-box; 177 | font-size: 16px; 178 | border: 1px solid; 179 | border-radius: 100%; 180 | padding: 0.35em 0.2em; 181 | margin-top: 7px; 182 | cursor: pointer; 183 | } 184 | 185 | #qr_text_action_box i:hover, 186 | #qr_action_box i:hover { 187 | opacity: 0.7; 188 | } 189 | 190 | #qr_action_box { 191 | display: block; 192 | position: relative; 193 | width: 100%; 194 | z-index: 5; 195 | height: 0; 196 | } 197 | 198 | #qr_action_box_container { 199 | position: absolute; 200 | right: 25px; 201 | width: 30px; 202 | } 203 | 204 | #qr_show_fixed_form { 205 | display: inline-block; 206 | position: fixed; 207 | bottom: 0; 208 | left: 0; 209 | z-index: 41; 210 | font-size: 16px; 211 | font-weight: bold; 212 | color: #1f4e79; 213 | background-color: #FFF; 214 | box-shadow: 0 0 15px -3px #CCC; 215 | border-radius: 0 16px 0 0; 216 | border: 3px solid #FFF; 217 | transition: all 0.3s ease; 218 | cursor: pointer; 219 | overflow: hidden; 220 | width: auto; 221 | } 222 | 223 | #qr_show_fixed_form i { 224 | float: left; 225 | margin: 1px; 226 | } 227 | 228 | #qr_show_fixed_form span { 229 | display: block; 230 | float: left; 231 | margin: 4px -1000px 0 50px; 232 | transition: all 0.3s ease; 233 | } 234 | 235 | #qr_show_fixed_form:hover span { 236 | margin: 4px 5px 0 5px; 237 | } 238 | 239 | .qr_fixed_form #smiley-box { 240 | position: absolute; 241 | right: -1000px; 242 | z-index: 31; 243 | overflow-y: auto; 244 | width: 20%; 245 | max-height: 115px; 246 | } 247 | 248 | .qr_fixed_form #format-buttons, 249 | .qr_fixed_form #abbc3_buttons { 250 | margin-top: 0; 251 | } 252 | 253 | .qr_fixed_form > div { 254 | margin-bottom: 0; 255 | } 256 | 257 | @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { 258 | .qr_fixed_form #smiley-box { 259 | display: none; 260 | position: static; 261 | right: auto !important; 262 | width: 100%; 263 | max-height: none; 264 | } 265 | 266 | #qr_postform.qr_fixed_form.with_smileys #message-box { 267 | width: 100%; 268 | } 269 | } 270 | 271 | /* Compact form style. */ 272 | .qr_compact_form { 273 | overflow-y: hidden; 274 | } 275 | 276 | #qr_postform.qr_compact_form #message-box textarea.qr_fixed_textarea { 277 | height: 48px !important; 278 | } 279 | 280 | .qr_compact_form #qr_text_action_box, 281 | .qr_compact_form .qr_attach_button { 282 | display: none; 283 | } 284 | 285 | #qr_postform.qr_fixed_form.qr_compact_form #message-box { 286 | padding: 0; 287 | } 288 | 289 | /* Fullscreen form style. */ 290 | .qr_fullscreen_form.qr_compact_form { 291 | overflow-y: auto; 292 | } 293 | 294 | #qr_postform.qr_fullscreen_form { 295 | background-color: #ffffff; 296 | } 297 | 298 | #qr_postform.qr_fullscreen_form #message-box textarea { 299 | min-height: 115px; 300 | max-height: 50%; 301 | transition: height 0.5s ease; 302 | resize: vertical; 303 | } 304 | 305 | #qr_postform.qr_fixed_form.qr_fullscreen_form #smiley-box { 306 | max-height: none; 307 | margin: 0; 308 | } 309 | 310 | #qr_postform.qr_fixed_form.qr_fullscreen_form #message-box { 311 | padding-left: 0; 312 | } 313 | 314 | .qr_fullscreen_form #qr_text_action_box { 315 | display: none; 316 | } 317 | 318 | .qr_fullscreen_form #qr_action_box .qr_attach_button { 319 | display: none; 320 | } 321 | -------------------------------------------------------------------------------- /styles/prosilver/template/event/ucp_prefs_view_radio_buttons_append.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 |
7 |
8 |
9 |
10 |
11 | 12 | 13 |
14 |
15 | {% if S_QR_ALLOW_SOFT_SCROLL %} 16 |
17 |
18 |
19 | 20 | 21 |
22 |
23 | {% endif %} 24 |
25 |
26 |
27 | 28 | 29 |
30 |
31 |
32 |
33 |
34 | 35 | 36 |
37 |
38 | {% if S_QUICKNICK_CHANGE_TYPE %} 39 |
40 |
41 |
42 | 43 | 44 |
45 |
46 | {% endif %} 47 | --------------------------------------------------------------------------------