1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-06 15:45:34 +02:00

[ticket/10786] Javascript toggle member search panel in memberlist.php

Search functions on the memberlist.php page are now rendered by default and displayed via javascript.  If javascript is disabled the page still works as it previously did.

PHPBB3-10786
This commit is contained in:
David Colón 2012-06-26 00:37:48 -04:00 committed by Nathan Guse
parent de541ac13b
commit babe07caef
6 changed files with 22 additions and 85 deletions

View File

@ -1025,7 +1025,7 @@ switch ($mode)
// We validate form and field here, only id/class allowed
$form = (!preg_match('/^[a-z0-9_-]+$/i', $form)) ? '' : $form;
$field = (!preg_match('/^[a-z0-9_-]+$/i', $field)) ? '' : $field;
if ((in_array($mode, array('', 'searchuser')) || sizeof(array_intersect($request->variable_names(phpbb_request_interface::GET), $search_params)) > 0) && ($config['load_search'] || $auth->acl_get('a_')))
if ((($mode == '' || $mode == 'searchuser') || sizeof(array_intersect($request->variable_names(phpbb_request_interface::GET), $search_params)) > 0) && ($config['load_search'] || $auth->acl_get('a_')))
{
$username = request_var('username', '', true);
$email = strtolower(request_var('email', ''));
@ -1377,7 +1377,7 @@ switch ($mode)
}
// Some search user specific data
if (in_array($mode, array('', 'searchuser')) && ($config['load_search'] || $auth->acl_get('a_')))
if (($mode == '' || $mode == 'searchuser') && ($config['load_search'] || $auth->acl_get('a_')))
{
$group_selected = request_var('search_group_id', 0);
$s_group_select = '<option value="0"' . ((!$group_selected) ? ' selected="selected"' : '') . '>&nbsp;</option>';
@ -1447,7 +1447,7 @@ switch ($mode)
'S_IP_SEARCH_ALLOWED' => ($auth->acl_getf_global('m_info')) ? true : false,
'S_EMAIL_SEARCH_ALLOWED'=> ($auth->acl_get('a_user')) ? true : false,
'S_IN_SEARCH_POPUP' => ($form && $field) ? true : false,
'S_SEARCH_USER' => ($mode == 'searchuser' || ($mode == '' && $submit)) ? true : false,
'S_SEARCH_USER' => ($mode == 'searchuser' || ($mode == '' && $submit)),
'S_FORM_NAME' => $form,
'S_FIELD_NAME' => $field,
'S_SELECT_SINGLE' => $select_single,

View File

@ -192,6 +192,17 @@ $('#quick-mod-select').change(function () {
$('#quickmodform').submit();
});
/**
* Toggle the member search panel in memberlist.php.
*/
$('#member_search').click(function () {
$('#memberlist_search').slideToggle('fast');
phpbb.ajax_callbacks['alt_text'].call(this);
//Focus on the username textbox if it's available and displayed
if ($('#username').length > 0 && $('#memberlist_search').is(':visible')) {
$('#username').focus();
}
return false;
});
})(jQuery); // Avoid conflicts with other libraries

View File

@ -433,43 +433,6 @@ function apply_onkeypress_event()
}
}
/**
* Toggle a section's visibility status
*/
function toggle_section(link, panel_id, expand_text, collapse_text)
{
if (jquery_present)
{
var panel = jQuery('#' + panel_id);
if (panel.is(':visible'))
{
jQuery(link).text(expand_text);
panel.slideUp('fast');
}
else
{
jQuery(link).text(collapse_text);
panel.slideDown('fast');
}
}
else
{
var panel = document.getElementById(panel_id);
if (panel.style.display == 'none')
{
link.innerHTML = collapse_text;
panel.style.display = '';
}
else
{
link.innerHTML = expand_text;
panel.style.display = 'none';
}
}
return false;
}
/**
* Detect JQuery existance. We currently do not deliver it, but some styles do, so why not benefit from it. ;)
*/

View File

@ -30,7 +30,7 @@
<ul class="linklist">
<li>
<!-- IF U_FIND_MEMBER and not S_SEARCH_USER --><a href="{U_FIND_MEMBER}" onclick="return toggle_section(this, 'memberlist_search', '{LA_FIND_USERNAME}', '{LA_HIDE_MEMBER_SEARCH}')">{L_FIND_USERNAME}</a> &bull; <!-- ELSEIF S_SEARCH_USER and U_HIDE_FIND_MEMBER and not S_IN_SEARCH_POPUP --><a href="{U_HIDE_FIND_MEMBER}" onclick="return toggle_section(this, 'memberlist_search', '{LA_FIND_USERNAME}', '{LA_HIDE_MEMBER_SEARCH}')">{L_HIDE_MEMBER_SEARCH}</a> &bull; <!-- ENDIF -->
<!-- IF U_FIND_MEMBER and not S_SEARCH_USER --><a href="{U_FIND_MEMBER}" id="member_search" data-alt-text="{LA_HIDE_MEMBER_SEARCH}">{L_FIND_USERNAME}</a> &bull; <!-- ELSEIF S_SEARCH_USER and U_HIDE_FIND_MEMBER and not S_IN_SEARCH_POPUP --><a href="{U_HIDE_FIND_MEMBER}" id="member_search" data-alt-text="{LA_FIND_USERNAME}">{L_HIDE_MEMBER_SEARCH}</a> &bull; <!-- ENDIF -->
<strong style="font-size: 0.95em;">
<!-- BEGIN first_char -->
<a href="{first_char.U_SORT}">{first_char.DESC}</a>&nbsp;

View File

@ -4,9 +4,9 @@
<!-- INCLUDE overall_header.html -->
<!-- ENDIF -->
<div class="panel" id="memberlist_search"<!-- IF not S_SEARCH_USER --> style="display: none;"<!-- ENDIF -->>
<!-- IF S_SEARCH_USER -->
<!-- INCLUDE memberlist_search.html -->
</div>
<!-- ENDIF -->
<!-- IF S_SHOW_GROUP --><!-- INCLUDE memberlist_group.html --><!-- ENDIF -->
@ -21,9 +21,9 @@
<!-- END first_char -->
</select>&nbsp;<input type="submit" name="char" value="{L_DISPLAY}" class="btnlite" /></td>
<!-- IF U_FIND_MEMBER and not S_SEARCH_USER -->
<td class="genmed" align="{S_CONTENT_FLOW_END}"><a href="{U_FIND_MEMBER}" onclick="return toggle_section(this, 'memberlist_search', '{LA_FIND_USERNAME}', '{LA_HIDE_MEMBER_SEARCH}')">{L_FIND_USERNAME}</a></td>
<td class="genmed" align="{S_CONTENT_FLOW_END}"><a href="{U_FIND_MEMBER}">{L_FIND_USERNAME}</a></td>
<!-- ELSEIF S_SEARCH_USER and U_HIDE_FIND_MEMBER and not S_IN_SEARCH_POPUP -->
<td class="genmed" align="{S_CONTENT_FLOW_END}"><a href="{U_HIDE_FIND_MEMBER}" onclick="return toggle_section(this, 'memberlist_search', '{LA_FIND_USERNAME}', '{LA_HIDE_MEMBER_SEARCH}')">{L_HIDE_MEMBER_SEARCH}</a></td>
<td class="genmed" align="{S_CONTENT_FLOW_END}"><a href="{U_HIDE_FIND_MEMBER}">{L_HIDE_MEMBER_SEARCH}</a></td>
<!-- ENDIF -->
</tr>
</table>

View File

@ -1,8 +1,8 @@
<!-- You should retain this javascript in your own template! -->
<!-- IF S_IN_SEARCH_POPUP -->
<script type="text/javascript">
// <![CDATA[
<!-- IF S_IN_SEARCH_POPUP -->
function insert_user(user)
{
opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value = ( opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value.length && opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.type == "textarea" ) ? opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value + "\n" + user : user;
@ -60,46 +60,9 @@
}
}
}
<!-- ENDIF -->
/**
* Toggle a section's visibility status
*/
function toggle_section(link, panel_id, expand_text, collapse_text)
{
if (window.jQuery)
{
var panel = jQuery('#' + panel_id);
if (panel.is(':visible'))
{
jQuery(link).text(expand_text);
panel.slideUp('fast');
}
else
{
jQuery(link).text(collapse_text);
panel.slideDown('fast');
}
}
else
{
var panel = document.getElementById(panel_id);
if (panel.style.display == 'none')
{
link.innerHTML = collapse_text;
panel.style.display = '';
}
else
{
link.innerHTML = expand_text;
panel.style.display = 'none';
}
}
return false;
}
// ]]>
</script>
<!-- ENDIF -->
<form method="post" action="{S_MODE_ACTION}" name="search">