diff --git a/sources/controllers/Memberlist.controller.php b/sources/controllers/Memberlist.controller.php index 88f2987ebc..caa6bf066e 100644 --- a/sources/controllers/Memberlist.controller.php +++ b/sources/controllers/Memberlist.controller.php @@ -69,7 +69,7 @@ public function action_index() // Set up the standard columns... $context['columns'] = array( - 'is_online' => array( + 'online' => array( 'label' => $txt['status'], 'width' => 60, 'class' => 'first_th centertext', @@ -109,7 +109,7 @@ public function action_index() 'up' => 'IFNULL(mg.group_name, 1=1) ASC, mg.group_name ASC' ), ), - 'registered' => array( + 'date_registered' => array( 'label' => $txt['date_registered'], 'sort' => array( 'down' => 'mem.date_registered DESC', @@ -155,17 +155,39 @@ public function action_index() ); $context['can_send_pm'] = allowedTo('pm_send'); - $context['can_send_email'] = allowedTo('send_email_to_members'); // Build the memberlist button array. $context['memberlist_buttons'] = array( 'view_all_members' => array('text' => 'view_all_members', 'image' => 'mlist.png', 'lang' => true, 'url' => $scripturl . '?action=memberlist' . ';sa=all', 'active'=> true), - 'mlist_search' => array('text' => 'mlist_search', 'image' => 'mlist.png', 'lang' => true, 'url' => $scripturl . '?action=memberlist' . ';sa=search'), ); + // Are there custom fields they can search? + ml_findSearchableCustomFields(); + + // These are all the possible fields. + $context['search_fields'] = array( + 'name' => $txt['mlist_search_name'], + 'email' => $txt['mlist_search_email'], + 'website' => $txt['mlist_search_website'], + 'group' => $txt['mlist_search_group'], + ); + + foreach ($context['custom_search_fields'] as $field) + $context['search_fields']['cust_' . $field['colname']] = sprintf($txt['mlist_search_by'], $field['name']); + + // What do we search for by default? + $context['search_defaults'] = array('name', 'email'); + // Allow mods to add additional buttons here call_integration_hook('integrate_memberlist_buttons'); + if (!allowedTo('send_email_to_members')) + unset($context['columns']['email_address']); + if (isset($context['disabled_fields']['website'])) + unset($context['columns']['website']); + if (isset($context['disabled_fields']['posts'])) + unset($context['columns']['posts']); + // Jump to the sub action. if (isset($subActions[$context['listing_by']])) $this->{$subActions[$context['listing_by']][1]}(); @@ -429,24 +451,7 @@ public function action_mlsearch() $context['page_index'] = constructPageIndex($scripturl . '?action=memberlist;sa=search;search=' . $_POST['search'] . ';fields=' . implode(',', $_POST['fields']), $_REQUEST['start'], $numResults, $modSettings['defaultMaxMembers']); } else - { - // These are all the possible fields. - $context['search_fields'] = array( - 'name' => $txt['mlist_search_name'], - 'email' => $txt['mlist_search_email'], - 'website' => $txt['mlist_search_website'], - 'group' => $txt['mlist_search_group'], - ); - - foreach ($context['custom_search_fields'] as $field) - $context['search_fields']['cust_' . $field['colname']] = sprintf($txt['mlist_search_by'], $field['name']); - - // What do we search for by default? - $context['search_defaults'] = array('name', 'email'); - - $context['sub_template'] = 'search'; - $context['old_search'] = isset($_GET['search']) ? $_GET['search'] : (isset($_POST['search']) ? htmlspecialchars($_POST['search']) : ''); - } + redirectexit('action=memberlist'); $context['linktree'][] = array( 'url' => $scripturl . '?action=memberlist;sa=search', @@ -455,6 +460,5 @@ public function action_mlsearch() // Highlight the correct button, too! unset($context['memberlist_buttons']['view_all_members']['active']); - $context['memberlist_buttons']['mlist_search']['active'] = true; } } \ No newline at end of file diff --git a/sources/subs/Memberlist.subs.php b/sources/subs/Memberlist.subs.php index 3f5964f8af..1cdec87ca3 100644 --- a/sources/subs/Memberlist.subs.php +++ b/sources/subs/Memberlist.subs.php @@ -340,6 +340,11 @@ function printMemberListRows($request) $context['members'][$member] = $memberContext[$member]; $context['members'][$member]['post_percent'] = round(($context['members'][$member]['real_posts'] * 100) / $most_posts); $context['members'][$member]['registered_date'] = strftime('%Y-%m-%d', $context['members'][$member]['registered_timestamp']); + $context['members'][$member]['real_name'] = $context['members'][$member]['link']; + $context['members'][$member]['email_address'] = $context['members'][$member]['email']; + $context['members'][$member]['website_url'] = $context['members'][$member]['website']['url'] != '' ? '' . $context['members'][$member]['website']['title'] . '' : ''; + $context['members'][$member]['id_group'] = empty($context['members'][$member]['group']) ? $context['members'][$member]['post_group'] : $context['members'][$member]['group']; + $context['members'][$member]['date_registered'] = $context['members'][$member]['registered']; // Take care of the custom fields if any are being displayed if (!empty($context['custom_profile_fields']['columns'])) diff --git a/themes/default/Memberlist.template.php b/themes/default/Memberlist.template.php index 277a76be5d..6a0ddec5f6 100644 --- a/themes/default/Memberlist.template.php +++ b/themes/default/Memberlist.template.php @@ -21,9 +21,37 @@ function template_main() { global $context, $settings, $scripturl, $txt; - template_pagesection('memberlist_buttons', 'right', 'go_down'); + $extra = ' +
+ +
'; + + template_pagesection('memberlist_buttons', 'right', 'go_down', array('extra' => $extra)); echo ' +

', $txt['members_list'], ''; @@ -41,10 +69,6 @@ function template_main() // Display each of the column headers of the table. foreach ($context['columns'] as $key => $column) { - // @TODO maybe find something nicer? - if ($key == 'email_address' && !$context['can_send_email']) - continue; - // This is a selected column, so underline it or some such. if ($column['selected']) echo ' @@ -70,37 +94,36 @@ function template_main() foreach ($context['members'] as $member) { echo ' - - - ', $context['can_send_pm'] ? '' : '', $settings['use_image_buttons'] ? '' . $member['online']['text'] . '' : $member['online']['label'], $context['can_send_pm'] ? '' : '', ' - - ', $member['link'], ''; - - if ($context['can_send_email']) - echo ' - ', $member['show_email'] == 'no' ? '' : '' . $txt['email'] . '', ''; - - if (!isset($context['disabled_fields']['website'])) - echo ' - ', $member['website']['url'] != '' ? '' . $member['website']['title'] . '' : '', ''; - - // Group and date. - echo ' - ', empty($member['group']) ? $member['post_group'] : $member['group'], ' - ', $member['registered_date'], ''; - - if (!isset($context['disabled_fields']['posts'])) - { - echo ' - ', $member['posts'], ''; - } - - // Any custom fields on display? - if (!empty($context['custom_profile_fields']['columns'])) + '; + foreach ($context['columns'] as $column => $values) { - foreach ($context['custom_profile_fields']['columns'] as $key => $column) - echo ' - ', $member['options'][substr($key, 5)], ''; + if (isset($member[$column])) + { + if ($column == 'online') + { + echo ' + + ', $context['can_send_pm'] ? '' : '', $settings['use_image_buttons'] ? '' . $member['online']['text'] . '' : $member['online']['label'], $context['can_send_pm'] ? '' : '', ' + '; + continue; + } + elseif ($column == 'email_address') + { + echo ' + ', $member['show_email'] == 'no' ? '' : '' . $txt['email'] . '', ''; + continue; + } + else + echo ' + ', $member[$column], ''; + } + // Any custom fields on display? + elseif (!empty($context['custom_profile_fields']['columns']) && isset($context['custom_profile_fields']['columns'][$column])) + { + foreach ($context['custom_profile_fields']['columns'] as $key => $col) + echo ' + ', $member['options'][substr($key, 5)], ''; + } } echo ' @@ -133,48 +156,4 @@ function template_main() echo '

'; -} - -/** - * A page allowing people to search the member list. - */ -function template_search() -{ - global $context, $settings, $scripturl, $txt; - - template_pagesection('memberlist_buttons', 'right', '', array('top_button' => false)); - - // Start the submission form for the search! - echo ' -
-

- ', !empty($settings['use_buttons']) ? '' : '', $txt['mlist_search'], ' -

-
- -
- -
-
-
'; } \ No newline at end of file diff --git a/themes/default/css/index.css b/themes/default/css/index.css index 641b2744a1..f00ecc1b12 100644 --- a/themes/default/css/index.css +++ b/themes/default/css/index.css @@ -3692,7 +3692,23 @@ dl.merge_topic dd { width: 100%; } - +#mlsearch { + padding-top: 5px; +} +#mlsearch_options { + position: absolute; + display: none; + background: #FAFAFA; + padding: 0.5em; + border: 1px solid #DDDDDD; + border-radius: 5px; +} +#mlsearch_options .mlsearch_option .input_check { + margin-left: 0.5em; +} +#mlsearch_options .mlsearch_option { + padding: 0.2em 0; +} /* $LOGIN */