diff options
32 files changed, 234 insertions, 141 deletions
diff --git a/phpBB/adm/style/acp_board.html b/phpBB/adm/style/acp_board.html index 1a09c4eee6..64592a5de2 100644 --- a/phpBB/adm/style/acp_board.html +++ b/phpBB/adm/style/acp_board.html @@ -33,9 +33,12 @@ <!-- END options --> <!-- IF S_AUTH --> + </fieldset> <!-- BEGIN auth_tpl --> <!-- INCLUDE {auth_tpl.TEMPLATE_FILE} --> <!-- END auth_tpl --> + <fieldset> + <legend>{L_ACP_SUBMIT_CHANGES}</legend> <!-- ENDIF --> <p class="submit-buttons"> diff --git a/phpBB/adm/style/acp_groups.html b/phpBB/adm/style/acp_groups.html index 72f4f2b239..cf189f979f 100644 --- a/phpBB/adm/style/acp_groups.html +++ b/phpBB/adm/style/acp_groups.html @@ -114,10 +114,10 @@ </dl> <dl> <dt><label>{L_AVATAR_TYPE}{L_COLON}</label></dt> - <dd><select name="avatar_driver" id="avatar_driver"> + <dd><select name="avatar_driver" id="avatar_driver" data-togglable-settings="true"> <option value="">{L_NO_AVATAR_CATEGORY}</option> <!-- BEGIN avatar_drivers --> - <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option> + <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF --> data-toggle-setting="#avatar_option_{avatar_drivers.DRIVER}">{avatar_drivers.L_TITLE}</option> <!-- END avatar_drivers --> </select></dd> </dl> @@ -139,8 +139,6 @@ </fieldset> </form> - <!-- INCLUDEJS avatars.js --> - <!-- ELSEIF S_LIST --> <a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a> diff --git a/phpBB/adm/style/acp_search.html b/phpBB/adm/style/acp_search.html index 496a8b2675..1cde52acf3 100644 --- a/phpBB/adm/style/acp_search.html +++ b/phpBB/adm/style/acp_search.html @@ -46,13 +46,13 @@ <legend>{L_SEARCH_TYPE}</legend> <dl> <dt><label for="search_type">{L_SEARCH_TYPE}{L_COLON}</label><br /><span>{L_SEARCH_TYPE_EXPLAIN}</span></dt> - <dd><select id="search_type" name="config[search_type]">{S_SEARCH_TYPES}</select></dd> + <dd><select id="search_type" name="config[search_type]" data-togglable-settings="true">{S_SEARCH_TYPES}</select></dd> </dl> </fieldset> <!-- BEGIN backend --> - <fieldset> + <fieldset id="search_{backend.IDENTIFIER}_settings"> <legend>{backend.NAME}</legend> {backend.SETTINGS} </fieldset> diff --git a/phpBB/adm/style/acp_users_avatar.html b/phpBB/adm/style/acp_users_avatar.html index 0a72bb0b62..0d06d088e8 100644 --- a/phpBB/adm/style/acp_users_avatar.html +++ b/phpBB/adm/style/acp_users_avatar.html @@ -13,10 +13,10 @@ <legend>{L_AVATAR_SELECT}</legend> <dl> <dt><label>{L_AVATAR_TYPE}</label></dt> - <dd><select name="avatar_driver" id="avatar_driver"> + <dd><select name="avatar_driver" id="avatar_driver" data-togglable-settings="true"> <option value="">{L_NO_AVATAR_CATEGORY}</option> <!-- BEGIN avatar_drivers --> - <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option> + <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF --> data-toggle-setting="#avatar_option_{avatar_drivers.DRIVER}">{avatar_drivers.L_TITLE}</option> <!-- END avatar_drivers --> </select></dd> </dl> @@ -35,5 +35,3 @@ {S_FORM_TOKEN} </fieldset> </form> - - <!-- INCLUDEJS avatars.js --> diff --git a/phpBB/adm/style/auth_provider_ldap.html b/phpBB/adm/style/auth_provider_ldap.html index 81afa44373..9e0567dfed 100644 --- a/phpBB/adm/style/auth_provider_ldap.html +++ b/phpBB/adm/style/auth_provider_ldap.html @@ -1,32 +1,35 @@ -<dl> - <dt><label for="ldap_server">{L_LDAP_SERVER}{L_COLON}</label><br /><span>{L_LDAP_SERVER_EXPLAIN}</span></dt> - <dd><input type="text" id="ldap_server" size="40" name="config[ldap_server]" value="{AUTH_LDAP_SERVER}" /></dd> -</dl> -<dl> - <dt><label for="ldap_port">{L_LDAP_PORT}{L_COLON}</label><br /><span>{L_LDAP_PORT_EXPLAIN}</span></dt> - <dd><input type="text" id="ldap_port" size="40" name="config[ldap_port]" value="{AUTH_LDAP_PORT}" /></dd> -</dl> -<dl> - <dt><label for="ldap_dn">{L_LDAP_DN}{L_COLON}</label><br /><span>{L_LDAP_DN_EXPLAIN}</span></dt> - <dd><input type="text" id="ldap_dn" size="40" name="config[ldap_base_dn]" value="{AUTH_LDAP_BASE_DN}" /></dd> -</dl> -<dl> - <dt><label for="ldap_uid">{L_LDAP_UID}{L_COLON}</label><br /><span>{L_LDAP_UID_EXPLAIN}</span></dt> - <dd><input type="text" id="ldap_uid" size="40" name="config[ldap_uid]" value="{AUTH_LDAP_UID}" /></dd> -</dl> -<dl> - <dt><label for="ldap_user_filter">{L_LDAP_USER_FILTER}{L_COLON}</label><br /><span>{L_LDAP_USER_FILTER_EXPLAIN}</span></dt> - <dd><input type="text" id="ldap_user_filter" size="40" name="config[ldap_user_filter]" value="{AUTH_LDAP_USER_FILTER}" /></dd> -</dl> -<dl> - <dt><label for="ldap_email">{L_LDAP_EMAIL}{L_COLON}</label><br /><span>{L_LDAP_EMAIL_EXPLAIN}</span></dt> - <dd><input type="email" id="ldap_email" size="40" name="config[ldap_email]" value="{AUTH_LDAP_EMAIL}" /></dd> -</dl> -<dl> - <dt><label for="ldap_user">{L_LDAP_USER}{L_COLON}</label><br /><span>{L_LDAP_USER_EXPLAIN}</span></dt> - <dd><input type="text" id="ldap_user" size="40" name="config[ldap_user]" value="{AUTH_LDAP_USER}" /></dd> -</dl> -<dl> - <dt><label for="ldap_password">{L_LDAP_PASSWORD}{L_COLON}</label><br /><span>{L_LDAP_PASSWORD_EXPLAIN}</span></dt> - <dd><input type="password" id="ldap_password" size="40" name="config[ldap_password]" value="{AUTH_LDAP_PASSWORD}" autocomplete="off" /></dd> -</dl> +<fieldset id="auth_ldap_settings"> + <legend>{L_LDAP}</legend> + <dl> + <dt><label for="ldap_server">{L_LDAP_SERVER}{L_COLON}</label><br /><span>{L_LDAP_SERVER_EXPLAIN}</span></dt> + <dd><input type="text" id="ldap_server" size="40" name="config[ldap_server]" value="{AUTH_LDAP_SERVER}" /></dd> + </dl> + <dl> + <dt><label for="ldap_port">{L_LDAP_PORT}{L_COLON}</label><br /><span>{L_LDAP_PORT_EXPLAIN}</span></dt> + <dd><input type="text" id="ldap_port" size="40" name="config[ldap_port]" value="{AUTH_LDAP_PORT}" /></dd> + </dl> + <dl> + <dt><label for="ldap_dn">{L_LDAP_DN}{L_COLON}</label><br /><span>{L_LDAP_DN_EXPLAIN}</span></dt> + <dd><input type="text" id="ldap_dn" size="40" name="config[ldap_base_dn]" value="{AUTH_LDAP_BASE_DN}" /></dd> + </dl> + <dl> + <dt><label for="ldap_uid">{L_LDAP_UID}{L_COLON}</label><br /><span>{L_LDAP_UID_EXPLAIN}</span></dt> + <dd><input type="text" id="ldap_uid" size="40" name="config[ldap_uid]" value="{AUTH_LDAP_UID}" /></dd> + </dl> + <dl> + <dt><label for="ldap_user_filter">{L_LDAP_USER_FILTER}{L_COLON}</label><br /><span>{L_LDAP_USER_FILTER_EXPLAIN}</span></dt> + <dd><input type="text" id="ldap_user_filter" size="40" name="config[ldap_user_filter]" value="{AUTH_LDAP_USER_FILTER}" /></dd> + </dl> + <dl> + <dt><label for="ldap_email">{L_LDAP_EMAIL}{L_COLON}</label><br /><span>{L_LDAP_EMAIL_EXPLAIN}</span></dt> + <dd><input type="email" id="ldap_email" size="40" name="config[ldap_email]" value="{AUTH_LDAP_EMAIL}" /></dd> + </dl> + <dl> + <dt><label for="ldap_user">{L_LDAP_USER}{L_COLON}</label><br /><span>{L_LDAP_USER_EXPLAIN}</span></dt> + <dd><input type="text" id="ldap_user" size="40" name="config[ldap_user]" value="{AUTH_LDAP_USER}" /></dd> + </dl> + <dl> + <dt><label for="ldap_password">{L_LDAP_PASSWORD}{L_COLON}</label><br /><span>{L_LDAP_PASSWORD_EXPLAIN}</span></dt> + <dd><input type="password" id="ldap_password" size="40" name="config[ldap_password]" value="{AUTH_LDAP_PASSWORD}" autocomplete="off" /></dd> + </dl> +</fieldset> diff --git a/phpBB/adm/style/auth_provider_oauth.html b/phpBB/adm/style/auth_provider_oauth.html index 25e40ff596..4c8ff4d36c 100644 --- a/phpBB/adm/style/auth_provider_oauth.html +++ b/phpBB/adm/style/auth_provider_oauth.html @@ -1,17 +1,18 @@ -<h2>{L_AUTH_PROVIDER_OAUTH_TITLE}</h2> -<p>{L_AUTH_PROVIDER_OAUTH_EXPLAIN}</p> +<div id="auth_oauth_settings"> + <p>{L_AUTH_PROVIDER_OAUTH_EXPLAIN}</p> -<!-- BEGIN oauth_services --> -<fieldset> - <legend>{oauth_services.ACTUAL_NAME}</legend> - <dl> - <dt><label for="oauth_service_{oauth_services.NAME}_key">{L_AUTH_PROVIDER_OAUTH_KEY}{L_COLON}</label></dt> - <dd><input type="text" id="oauth_service_{oauth_services.NAME}_key" size="40" name="config[auth_oauth_{oauth_services.NAME}_key]" value="{oauth_services.KEY}" /></dd> - </dl> - <dl> - <dt><label for="oauth_service_{oauth_services.NAME}_secret">{L_AUTH_PROVIDER_OAUTH_SECRET}{L_COLON}</label></dt> - <dd><input type="text" id="oauth_service_{oauth_services.NAME}_secret" size="40" name="config[auth_oauth_{oauth_services.NAME}_secret]" value="{oauth_services.SECRET}" /></dd> - </dl> -</fieldset> -<!-- END oauth_services --> + <!-- BEGIN oauth_services --> + <fieldset> + <legend>{oauth_services.ACTUAL_NAME}</legend> + <dl> + <dt><label for="oauth_service_{oauth_services.NAME}_key">{L_AUTH_PROVIDER_OAUTH_KEY}{L_COLON}</label></dt> + <dd><input type="text" id="oauth_service_{oauth_services.NAME}_key" size="40" name="config[auth_oauth_{oauth_services.NAME}_key]" value="{oauth_services.KEY}" /></dd> + </dl> + <dl> + <dt><label for="oauth_service_{oauth_services.NAME}_secret">{L_AUTH_PROVIDER_OAUTH_SECRET}{L_COLON}</label></dt> + <dd><input type="text" id="oauth_service_{oauth_services.NAME}_secret" size="40" name="config[auth_oauth_{oauth_services.NAME}_secret]" value="{oauth_services.SECRET}" /></dd> + </dl> + </fieldset> + <!-- END oauth_services --> +</div> diff --git a/phpBB/adm/style/avatars.js b/phpBB/adm/style/avatars.js deleted file mode 100644 index 26ea24c0db..0000000000 --- a/phpBB/adm/style/avatars.js +++ /dev/null @@ -1,15 +0,0 @@ -(function($) { // Avoid conflicts with other libraries - -"use strict"; - -function avatarHide() { - $('#avatar_options > div').hide(); - - var selected = $('#avatar_driver').val(); - $('#avatar_option_' + selected).show(); -} - -avatarHide(); -$('#avatar_driver').bind('change', avatarHide); - -})(jQuery); // Avoid conflicts with other libraries diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js index ae8583ddbf..cd633ed2ae 100644 --- a/phpBB/assets/javascript/core.js +++ b/phpBB/assets/javascript/core.js @@ -1476,6 +1476,21 @@ phpbb.toggleDisplay = function(id, action, type) { } /** +* Toggle additional settings based on the selected +* option of select element. +* +* @param jQuery el jQuery select element object. +* @return undefined +*/ +phpbb.toggleSelectSettings = function(el) { + el.children().each(function() { + var option = $(this), + setting = $(option.data('toggle-setting')); + setting.toggle(option.is(':selected')); + }); +}; + +/** * Get function from name. * Based on http://stackoverflow.com/a/359910 * @@ -1516,6 +1531,16 @@ $(document).ready(function() { // Update browser history URL to point to specific post in viewtopic.php // when using view=unread#unread link. phpbb.history.replaceUrl($('#unread[data-url]').data('url')); + + // Hide settings that are not selected via select element. + $('select[data-togglable-settings]').each(function() { + var select = $(this); + + select.change(function() { + phpbb.toggleSelectSettings(select); + }); + phpbb.toggleSelectSettings(select); + }); }); })(jQuery); // Avoid conflicts with other libraries diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml index fdd8a33135..4de47f750f 100644 --- a/phpBB/config/services.yml +++ b/phpBB/config/services.yml @@ -104,6 +104,7 @@ services: arguments: - @user - @service_container + - %core.root_path% - @template controller.provider: diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 66b558a665..4a6a1895dd 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -601,6 +601,22 @@ search_results_postprofile_before * Since: 3.1.0-b3 * Purpose: Add content directly before the post author in search results (posts view mode) +search_results_topic_after +=== +* Locations: + + styles/prosilver/template/search_results.html + + styles/subsilver2/template/search_results.html +* Since: 3.1.0-b4 +* Purpose: Add data after search result topics + +search_results_topic_before +=== +* Locations: + + styles/prosilver/template/search_results.html + + styles/subsilver2/template/search_results.html +* Since: 3.1.0-b4 +* Purpose: Add data before search result topics + simple_footer_after === * Locations: diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index cf0f23a16e..f054e82de3 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -363,7 +363,7 @@ class acp_board 'title' => 'ACP_AUTH_SETTINGS', 'vars' => array( 'legend1' => 'ACP_AUTH_SETTINGS', - 'auth_method' => array('lang' => 'AUTH_METHOD', 'validate' => 'string', 'type' => 'select', 'method' => 'select_auth_method', 'explain' => false), + 'auth_method' => array('lang' => 'AUTH_METHOD', 'validate' => 'string', 'type' => 'select:1:toggable', 'method' => 'select_auth_method', 'explain' => false), ) ); break; @@ -715,7 +715,7 @@ class acp_board foreach ($auth_plugins as $method) { $selected = ($selected_method == $method) ? ' selected="selected"' : ''; - $auth_select .= '<option value="' . $method . '"' . $selected . '>' . ucfirst($method) . '</option>'; + $auth_select .= "<option value=\"$method\"$selected data-toggle-setting=\"#auth_{$method}_settings\">" . ucfirst($method) . '</option>'; } return $auth_select; diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index 11a2511aee..ce1e4afa9b 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -79,7 +79,8 @@ class acp_search $name = $search->get_name(); $selected = ($config['search_type'] == $type) ? ' selected="selected"' : ''; - $search_options .= '<option value="' . $type . '"' . $selected . '>' . $name . '</option>'; + $identifier = substr($type, strrpos($type, '\\') + 1); + $search_options .= "<option value=\"$type\"$selected data-toggle-setting=\"#search_{$identifier}_settings\">$name</option>"; if (method_exists($search, 'acp')) { @@ -88,9 +89,10 @@ class acp_search if (!$submit) { $template->assign_block_vars('backend', array( - 'NAME' => $name, - 'SETTINGS' => $vars['tpl']) - ); + 'NAME' => $name, + 'SETTINGS' => $vars['tpl'], + 'IDENTIFIER' => $identifier, + )); } else if (is_array($vars['config'])) { diff --git a/phpBB/includes/functions_acp.php b/phpBB/includes/functions_acp.php index 2c66f6009c..1c4d6966da 100644 --- a/phpBB/includes/functions_acp.php +++ b/phpBB/includes/functions_acp.php @@ -364,8 +364,9 @@ function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars) if ($tpl_type[0] == 'select') { $size = (isset($tpl_type[1])) ? (int) $tpl_type[1] : 1; + $data_toggle = (!empty($tpl_type[2])) ? ' data-togglable-settings="true"' : ''; - $tpl = '<select id="' . $key . '" name="' . $name . '"' . (($size > 1) ? ' size="' . $size . '"' : '') . '>' . $return . '</select>'; + $tpl = '<select id="' . $key . '" name="' . $name . '"' . (($size > 1) ? ' size="' . $size . '"' : '') . $data_toggle . '>' . $return . '</select>'; } else { diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php index 5681b83212..e73ef2b78f 100644 --- a/phpBB/includes/mcp/mcp_reports.php +++ b/phpBB/includes/mcp/mcp_reports.php @@ -143,6 +143,13 @@ class mcp_reports } $post_unread = (isset($topic_tracking_info[$post_info['topic_id']]) && $post_info['post_time'] > $topic_tracking_info[$post_info['topic_id']]) ? true : false; + $message = generate_text_for_display( + $report['reported_post_text'], + $report['reported_post_uid'], + $report['reported_post_bitfield'], + $parse_post_flags, + false + ); $report['report_text'] = make_clickable(bbcode_nl2br($report['report_text'])); @@ -152,6 +159,7 @@ class mcp_reports FROM ' . ATTACHMENTS_TABLE . ' WHERE post_msg_id = ' . $post_id . ' AND in_message = 0 + AND filetime <= ' . (int) $report['report_time'] . ' ORDER BY filetime DESC'; $result = $db->sql_query($sql); @@ -164,7 +172,7 @@ class mcp_reports if (sizeof($attachments)) { $update_count = array(); - parse_attachments($post_info['forum_id'], $report['reported_post_text'], $attachments, $update_count); + parse_attachments($post_info['forum_id'], $message, $attachments, $update_count); } // Display not already displayed Attachments for this post, we already parsed them. ;) @@ -224,7 +232,7 @@ class mcp_reports 'REPORTER_NAME' => get_username_string('username', $report['user_id'], $report['username'], $report['user_colour']), 'U_VIEW_REPORTER_PROFILE' => get_username_string('profile', $report['user_id'], $report['username'], $report['user_colour']), - 'POST_PREVIEW' => generate_text_for_display($report['reported_post_text'], $report['reported_post_uid'], $report['reported_post_bitfield'], $parse_post_flags, false), + 'POST_PREVIEW' => $message, 'POST_SUBJECT' => ($post_info['post_subject']) ? $post_info['post_subject'] : $user->lang['NO_SUBJECT'], 'POST_DATE' => $user->format_date($post_info['post_time']), 'POST_IP' => $post_info['poster_ip'], diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 16b3ca8573..3a3343f199 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -492,7 +492,7 @@ function compose_pm($id, $mode, $action, $user_folders = array()) if ($message_attachment && !$submit && !$refresh && !$preview && $action == 'edit') { // Do not change to SELECT * - $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename + $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename, filesize FROM ' . ATTACHMENTS_TABLE . " WHERE post_msg_id = $msg_id AND in_message = 1 diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index 505709d513..b796206261 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -406,6 +406,7 @@ $lang = array_merge($lang, array( 'APACHE_SETUP_BEFORE_USE' => 'You have to setup apache authentication before you switch phpBB to this authentication method. Keep in mind that the username you use for apache authentication has to be the same as your phpBB username. Apache authentication can only be used with mod_php (not with a CGI version) and safe_mode disabled.', + 'LDAP' => 'LDAP', 'LDAP_DN' => 'LDAP base <var>dn</var>', 'LDAP_DN_EXPLAIN' => 'This is the Distinguished Name, locating the user information, e.g. <samp>o=My Company,c=US</samp>.', 'LDAP_EMAIL' => 'LDAP email attribute', diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 7faa46daf3..7026e60911 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -751,6 +751,7 @@ $lang = array_merge($lang, array( 1 => '%d private message in total', 2 => '%d private messages in total', ), + 'TOPIC_POLL' => 'This topic has a poll.', 'TOTAL_POSTS' => 'Total posts', 'TOTAL_POSTS_COUNT' => array( 2 => 'Total posts <strong>%d</strong>', diff --git a/phpBB/phpbb/controller/resolver.php b/phpBB/phpbb/controller/resolver.php index 233179e343..3010901024 100644 --- a/phpBB/phpbb/controller/resolver.php +++ b/phpBB/phpbb/controller/resolver.php @@ -33,28 +33,36 @@ class resolver implements ControllerResolverInterface /** * phpbb\template\template object - * @var phpbb\template\template + * @var \phpbb\template\template */ protected $template; /** + * phpBB root path + * @var string + */ + protected $phpbb_root_path; + + /** * Construct method * * @param \phpbb\user $user User Object * @param ContainerInterface $container ContainerInterface object + * @param string $phpbb_root_path Relative path to phpBB root * @param \phpbb\template\template $template */ - public function __construct(\phpbb\user $user, ContainerInterface $container, \phpbb\template\template $template = null) + public function __construct(\phpbb\user $user, ContainerInterface $container, $phpbb_root_path, \phpbb\template\template $template = null) { $this->user = $user; $this->container = $container; $this->template = $template; + $this->phpbb_root_path = $phpbb_root_path; } /** * Load a controller callable * - * @param Symfony\Component\HttpFoundation\Request $request Symfony Request object + * @param \Symfony\Component\HttpFoundation\Request $request Symfony Request object * @return bool|Callable Callable or false * @throws \phpbb\controller\exception */ @@ -94,7 +102,7 @@ class resolver implements ControllerResolverInterface { $controller_style_dir = 'ext/' . $controller_dir[0] . '/' . $controller_dir[1] . '/styles'; - if (is_dir($controller_style_dir)) + if (is_dir($this->phpbb_root_path . $controller_style_dir)) { $this->template->set_style(array($controller_style_dir, 'styles')); } @@ -109,7 +117,7 @@ class resolver implements ControllerResolverInterface * and should match the parameters of the method you are using as your * controller. * - * @param Symfony\Component\HttpFoundation\Request $request Symfony Request object + * @param \Symfony\Component\HttpFoundation\Request $request Symfony Request object * @param mixed $controller A callable (controller class, method) * @return bool False * @throws \phpbb\controller\exception diff --git a/phpBB/posting.php b/phpBB/posting.php index 054f6edb50..d48157dcd6 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1491,8 +1491,8 @@ $form_enctype = (@ini_get('file_uploads') == '0' || strtolower(@ini_get('file_up add_form_key('posting'); -// Start assigning vars for main posting page ... -$template->assign_vars(array( +// Build array of variables for main posting page +$page_data = array( 'L_POST_A' => $page_title, 'L_ICON' => ($mode == 'reply' || $mode == 'quote' || ($mode == 'edit' && $post_id != $post_data['topic_first_post_id'])) ? $user->lang['POST_ICON'] : $user->lang['TOPIC_ICON'], 'L_MESSAGE_BODY_EXPLAIN' => $user->lang('MESSAGE_BODY_EXPLAIN', (int) $config['max_post_chars']), @@ -1560,24 +1560,46 @@ $template->assign_vars(array( 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_ATTACH_DATA' => json_encode($message_parser->attachment_data), 'S_IN_POSTING' => true, -)); +); /** * This event allows you to modify template variables for the posting screen * * @event core.posting_modify_template_vars -* @var array post_data Array with post data -* @var array moderators Array with forum moderators -* @var string mode What action to take if the form is submitted -* post|reply|quote|edit|delete|bump|smilies|popup -* @var string page_title Title of the mode page +* @var array post_data Array with post data +* @var array moderators Array with forum moderators +* @var string mode What action to take if the form is submitted +* post|reply|quote|edit|delete|bump|smilies|popup +* @var string page_title Title of the mode page * @var bool s_topic_icons Whether or not to show the topic icons -* @var string form_enctype If attachments are allowed for this form the value of -* this is "multipart/form-data" else it is the empty string -* @var string s_action The URL to submit the POST data to -* @var string s_hidden_fields The concatenated input tags of the form's hidden fields +* @var string form_enctype If attachments are allowed for this form +* "multipart/form-data" or empty string +* @var string s_action The URL to submit the POST data to +* @var string s_hidden_fields Concatenated hidden input tags of posting form +* @var int post_id ID of the post +* @var int topic_id ID of the topic +* @var int forum_id ID of the forum +* @var bool submit Whether or not the form has been submitted +* @var bool preview Whether or not the post is being previewed +* @var bool save Whether or not a draft is being saved +* @var bool load Whether or not a draft is being loaded +* @var bool delete Whether or not the post is being deleted +* @var bool cancel Whether or not to cancel the form (returns to +* viewtopic or viewforum depending on if the user +* is posting a new topic or editing a post) +* @var array error Any error strings; a non-empty array aborts +* form submission. +* NOTE: Should be actual language strings, NOT +* language keys. +* @var bool refresh Whether or not to retain previously submitted data +* @var array page_data Posting page data that should be passed to the +* posting page via $template->assign_vars() +* @var object message_parser The message parser object * @since 3.1.0-a1 -* @change 3.1.0-b3 Added vars post_data, moderators, mode, page_title, s_topic_icons, form_enctype, s_action, s_hidden_fields +* @change 3.1.0-b3 Added vars post_data, moderators, mode, page_title, +* s_topic_icons, form_enctype, s_action, s_hidden_fields, +* post_id, topic_id, forum_id, submit, preview, save, load, +* delete, cancel, refresh, error, page_data, message_parser */ $vars = array( 'post_data', @@ -1588,9 +1610,25 @@ $vars = array( 'form_enctype', 's_action', 's_hidden_fields', + 'post_id', + 'topic_id', + 'forum_id', + 'submit', + 'preview', + 'save', + 'load', + 'delete', + 'cancel', + 'refresh', + 'error', + 'page_data', + 'message_parser', ); extract($phpbb_dispatcher->trigger_event('core.posting_modify_template_vars', compact($vars))); +// Start assigning vars for main posting page ... +$template->assign_vars($page_data); + // Build custom bbcodes array display_custom_bbcodes(); diff --git a/phpBB/search.php b/phpBB/search.php index a34c0a4e5a..3a1e911195 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -613,6 +613,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) 'REPORTED_IMG' => $user->img('icon_topic_reported', 'TOPIC_REPORTED'), 'UNAPPROVED_IMG' => $user->img('icon_topic_unapproved', 'TOPIC_UNAPPROVED'), 'DELETED_IMG' => $user->img('icon_topic_deleted', 'TOPIC_DELETED'), + 'POLL_IMG' => $user->img('icon_topic_poll', 'TOPIC_POLL'), 'LAST_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_LATEST_POST'), 'U_SEARCH_WORDS' => $u_search, @@ -911,6 +912,30 @@ if ($keywords || $author || $author_id || $search_id || $submit) $hilit = implode('|', $hilit_array); } + /** + * Modify the rowset data + * + * @event core.search_modify_rowset + * @var array attachments Array with posts attachments data + * @var string hilit String to highlight + * @var array rowset Array with the search results data + * @var array topic_tracking_info Array with the topics tracking data + * @var string u_hilit Highlight string to be injected into URL + * @var string view Search results view mode + * @var array zebra Array with zebra data for the current user + * @since 3.1.0-b4 + */ + $vars = array( + 'attachments', + 'hilit', + 'rowset', + 'topic_tracking_info', + 'u_hilit', + 'view', + 'zebra', + ); + extract($phpbb_dispatcher->trigger_event('core.search_modify_rowset', compact($vars))); + foreach ($rowset as $row) { $forum_id = $row['forum_id']; @@ -973,6 +998,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) 'S_TOPIC_UNAPPROVED' => $topic_unapproved, 'S_POSTS_UNAPPROVED' => $posts_unapproved, 'S_TOPIC_DELETED' => $topic_deleted, + 'S_HAS_POLL' => ($row['poll_start']) ? true : false, 'U_LAST_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params . '&p=' . $row['topic_last_post_id']) . '#p' . $row['topic_last_post_id'], 'U_LAST_POST_AUTHOR' => get_username_string('profile', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']), diff --git a/phpBB/styles/prosilver/template/avatars.js b/phpBB/styles/prosilver/template/avatars.js deleted file mode 100644 index 26ea24c0db..0000000000 --- a/phpBB/styles/prosilver/template/avatars.js +++ /dev/null @@ -1,15 +0,0 @@ -(function($) { // Avoid conflicts with other libraries - -"use strict"; - -function avatarHide() { - $('#avatar_options > div').hide(); - - var selected = $('#avatar_driver').val(); - $('#avatar_option_' + selected).show(); -} - -avatarHide(); -$('#avatar_driver').bind('change', avatarHide); - -})(jQuery); // Avoid conflicts with other libraries diff --git a/phpBB/styles/prosilver/template/search_results.html b/phpBB/styles/prosilver/template/search_results.html index fe0b0362ce..0043da4507 100644 --- a/phpBB/styles/prosilver/template/search_results.html +++ b/phpBB/styles/prosilver/template/search_results.html @@ -58,6 +58,7 @@ <ul class="topiclist topics"> <!-- BEGIN searchresults --> + <!-- EVENT search_results_topic_before --> <li class="row<!-- IF searchresults.S_ROW_COUNT is even --> bg1<!-- ELSE --> bg2<!-- ENDIF -->"> <dl class="icon {searchresults.TOPIC_IMG_STYLE}"> <dt <!-- IF searchresults.TOPIC_ICON_IMG -->style="background-image: url({T_ICONS_PATH}{searchresults.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF --> title="{searchresults.TOPIC_FOLDER_IMG_ALT}"> @@ -84,6 +85,7 @@ </ul> </div> <!-- ENDIF --> + <!-- IF searchresults.S_HAS_POLL -->{POLL_IMG} <!-- ENDIF --> {L_POST_BY_AUTHOR} {searchresults.TOPIC_AUTHOR_FULL} » {searchresults.FIRST_POST_TIME} » {L_IN} <a href="{searchresults.U_VIEW_FORUM}">{searchresults.FORUM_TITLE}</a> <!-- EVENT topiclist_row_append --> @@ -97,6 +99,7 @@ </dd> </dl> </li> + <!-- EVENT search_results_topic_after --> <!-- END searchresults --> </ul> diff --git a/phpBB/styles/prosilver/template/ucp_avatar_options.html b/phpBB/styles/prosilver/template/ucp_avatar_options.html index 072f235eb1..4b4581a59c 100644 --- a/phpBB/styles/prosilver/template/ucp_avatar_options.html +++ b/phpBB/styles/prosilver/template/ucp_avatar_options.html @@ -16,10 +16,10 @@ <fieldset> <dl> <dt><label>{L_AVATAR_TYPE}{L_COLON}</label></dt> - <dd><select name="avatar_driver" id="avatar_driver"> + <dd><select name="avatar_driver" id="avatar_driver" data-togglable-settings="true"> <option value="">{L_NO_AVATAR_CATEGORY}</option> <!-- BEGIN avatar_drivers --> - <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option> + <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF --> data-toggle-setting="#avatar_option_{avatar_drivers.DRIVER}">{avatar_drivers.L_TITLE}</option> <!-- END avatar_drivers --> </select></dd> </dl> @@ -46,5 +46,3 @@ <!-- ENDIF --> </div> </div> - -<!-- INCLUDEJS avatars.js --> diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index 6646f40f01..7a0ebaafcf 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -163,6 +163,7 @@ </div> <!-- ENDIF --> <div class="responsive-hide"> + <!-- IF topicrow.S_HAS_POLL -->{POLL_IMG} <!-- ENDIF --> <!-- IF topicrow.ATTACH_ICON_IMG -->{topicrow.ATTACH_ICON_IMG} <!-- ENDIF --> {L_POST_BY_AUTHOR} {topicrow.TOPIC_AUTHOR_FULL} » {topicrow.FIRST_POST_TIME} <!-- IF topicrow.S_POST_GLOBAL and FORUM_ID != topicrow.FORUM_ID --> » {L_IN} <a href="{topicrow.U_VIEW_FORUM}">{topicrow.FORUM_NAME}</a><!-- ENDIF --> diff --git a/phpBB/styles/prosilver/theme/images/icon_topic_poll.gif b/phpBB/styles/prosilver/theme/images/icon_topic_poll.gif Binary files differnew file mode 100644 index 0000000000..1c80ec87c1 --- /dev/null +++ b/phpBB/styles/prosilver/theme/images/icon_topic_poll.gif diff --git a/phpBB/styles/prosilver/theme/imageset.css b/phpBB/styles/prosilver/theme/imageset.css index 6bc345889e..8e3348a99d 100644 --- a/phpBB/styles/prosilver/theme/imageset.css +++ b/phpBB/styles/prosilver/theme/imageset.css @@ -350,6 +350,11 @@ span.imageset { padding-left: 16px; padding-top: 14px; } +.imageset.icon_topic_poll { + background-image: url("./images/icon_topic_poll.gif"); + padding-left: 11px; + padding-top: 10px; +} .imageset.icon_user_warn { background-image: url("./images/icon_user_warn.gif"); padding-left: 20px; diff --git a/phpBB/styles/subsilver2/template/avatars.js b/phpBB/styles/subsilver2/template/avatars.js deleted file mode 100644 index 146aca94d3..0000000000 --- a/phpBB/styles/subsilver2/template/avatars.js +++ /dev/null @@ -1,15 +0,0 @@ -(function($) { // Avoid conflicts with other libraries - -"use strict"; - -function avatarHide() { - $('.[class^="avatar_option_"]').hide(); - - var selected = $('#avatar_driver').val(); - $('.avatar_option_' + selected).show(); -} - -avatarHide(); -$('#avatar_driver').bind('change', avatarHide); - -})(jQuery); // Avoid conflicts with other libraries diff --git a/phpBB/styles/subsilver2/template/search_results.html b/phpBB/styles/subsilver2/template/search_results.html index ff34055b29..319e37d710 100644 --- a/phpBB/styles/subsilver2/template/search_results.html +++ b/phpBB/styles/subsilver2/template/search_results.html @@ -26,6 +26,7 @@ <th nowrap="nowrap"> {L_LAST_POST} </th> </tr> <!-- BEGIN searchresults --> + <!-- EVENT search_results_topic_before --> <tr valign="middle"> <td class="row1" width="25" align="center">{searchresults.TOPIC_FOLDER_IMG}</td> <td class="row1" width="25" align="center"> @@ -71,6 +72,7 @@ </p> </td> </tr> + <!-- EVENT search_results_topic_after --> <!-- BEGINELSE --> <tr valign="middle"> <td colspan="7" class="row3" align="center">{L_NO_SEARCH_RESULTS}</td> diff --git a/phpBB/styles/subsilver2/template/ucp_profile_avatar.html b/phpBB/styles/subsilver2/template/ucp_profile_avatar.html index 60a816d00a..07b3edb498 100644 --- a/phpBB/styles/subsilver2/template/ucp_profile_avatar.html +++ b/phpBB/styles/subsilver2/template/ucp_profile_avatar.html @@ -27,10 +27,10 @@ <tr> <td class="row1" width="35%"><b class="genmed">{L_AVATAR_TYPE}{L_COLON}</b></td> <td class="row2"> - <select name="avatar_driver" id="avatar_driver"> + <select name="avatar_driver" id="avatar_driver" data-togglable-settings="true"> <option value="">{L_NO_AVATAR_CATEGORY}</option> <!-- BEGIN avatar_drivers --> - <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option> + <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF --> data-toggle-setting=".avatar_option_{avatar_drivers.DRIVER}">{avatar_drivers.L_TITLE}</option> <!-- END avatar_drivers --> </select></td> </tr> @@ -48,6 +48,4 @@ </tr> </table> -<!-- INCLUDEJS avatars.js --> - <!-- INCLUDE ucp_footer.html --> diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php index 8da8a0cdcc..f1b0b4df5b 100644 --- a/phpBB/viewforum.php +++ b/phpBB/viewforum.php @@ -336,6 +336,7 @@ $template->assign_vars(array( 'REPORTED_IMG' => $user->img('icon_topic_reported', 'TOPIC_REPORTED'), 'UNAPPROVED_IMG' => $user->img('icon_topic_unapproved', 'TOPIC_UNAPPROVED'), 'DELETED_IMG' => $user->img('icon_topic_deleted', 'TOPIC_DELETED'), + 'POLL_IMG' => $user->img('icon_topic_poll', 'TOPIC_POLL'), 'GOTO_PAGE_IMG' => $user->img('icon_post_target', 'GOTO_PAGE'), 'L_NO_TOPICS' => ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->lang['POST_FORUM_LOCKED'] : $user->lang['NO_TOPICS'], diff --git a/tests/acp_board/select_auth_method_test.php b/tests/acp_board/select_auth_method_test.php index b943554564..1eb442bb3d 100644 --- a/tests/acp_board/select_auth_method_test.php +++ b/tests/acp_board/select_auth_method_test.php @@ -18,8 +18,8 @@ class phpbb_acp_board_select_auth_method_test extends phpbb_test_case public static function select_auth_method_data() { return array( - array('acp_board_valid', '<option value="acp_board_valid" selected="selected">Acp_board_valid</option>'), - array('acp_board_invalid', '<option value="acp_board_valid">Acp_board_valid</option>'), + array('acp_board_valid', '<option value="acp_board_valid" selected="selected" data-toggle-setting="#auth_acp_board_valid_settings">Acp_board_valid</option>'), + array('acp_board_invalid', '<option value="acp_board_valid" data-toggle-setting="#auth_acp_board_valid_settings">Acp_board_valid</option>'), ); } diff --git a/tests/controller/controller_test.php b/tests/controller/controller_test.php index 7b8b78dd22..e0564f0a11 100644 --- a/tests/controller/controller_test.php +++ b/tests/controller/controller_test.php @@ -68,7 +68,7 @@ class phpbb_controller_controller_test extends phpbb_test_case include(__DIR__.'/phpbb/controller/foo.php'); } - $resolver = new \phpbb\controller\resolver(new \phpbb\user, $container); + $resolver = new \phpbb\controller\resolver(new \phpbb\user, $container, dirname(__FILE__) . '/'); $symfony_request = new Request(); $symfony_request->attributes->set('_controller', 'foo.controller:handle'); |