SimplePortal

Customization => Custom Coding => Topic started by: owenenene on January 13, 2017, 04:56:28 AM

Title: a neato staff list
Post by: owenenene on January 13, 2017, 04:56:28 AM
What I'm currently using:

Code: [Select]
<?php
{
global $smcFunc$sourcedir$scripturl$modSettings$color_profile$settings;

$block_parameters = array(
'lmod' => 'check',
);

if ($return_parameters)
return $block_parameters;

require_once($sourcedir '/Subs-Members.php');

if (empty($parameters['lmod']))
{
$request $smcFunc['db_query']('''
SELECT id_member
FROM {db_prefix}moderators AS mods'
,
array(
)
);
$local_mods = array();
while ($row $smcFunc['db_fetch_assoc']($request))
$local_mods[$row['id_member']] = $row['id_member'];
$smcFunc['db_free_result']($request);

if (count($local_mods) > 10)
$local_mods = array();
}
else
$local_mods = array();

$global_mods membersAllowedTo('moderate_board'0);
$admins membersAllowedTo('admin_forum');

$all_staff array_merge($local_mods$global_mods$admins);
$all_staff array_unique($all_staff);

$request $smcFunc['db_query']('''
SELECT
m.id_member, m.real_name, m.avatar, mg.group_name,
a.id_attach, a.attachment_type, a.filename
FROM {db_prefix}members AS m
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = m.id_member)
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = CASE WHEN m.id_group = {int:reg_group_id} THEN m.id_post_group ELSE m.id_group END)
WHERE m.id_member IN ({array_int:staff_list})'
,
array(
'staff_list' => $all_staff,
'reg_group_id' => 0,
)
);
$staff_list = array();
$colorids = array();
while ($row $smcFunc['db_fetch_assoc']($request))
{
$colorids[$row['id_member']] = $row['id_member'];

if ($modSettings['avatar_action_too_large'] == 'option_html_resize' || $modSettings['avatar_action_too_large'] == 'option_js_resize')
{
$avatar_width = !empty($modSettings['avatar_max_width_external']) ? ' width="' $modSettings['avatar_max_width_external'] . '"' '';
$avatar_height = !empty($modSettings['avatar_max_height_external']) ? ' height="' $modSettings['avatar_max_height_external'] . '"' '';
}
else
{
$avatar_width '';
$avatar_height '';
}

if (in_array($row['id_member'], $admins))
$row['type'] = 1;
elseif (in_array($row['id_member'], $global_mods))
$row['type'] = 2;
else
$row['type'] = 3;

$staff_list[$row['type'] . '-' $row['id_member']] = array(
'id' => $row['id_member'],
'name' => $row['real_name'],
'link' => '<a href="' $scripturl '?action=profile;u=' $row['id_member'] . '">' $row['real_name'] . '</a>',
'group' => $row['group_name'],
'type' => $row['type'],
'avatar' => array(
'name' => $row['avatar'],
'image' => $row['avatar'] == '' ? ($row['id_attach'] > '<img src="' . (empty($row['attachment_type']) ? $scripturl '?action=dlattach;attach=' $row['id_attach'] . ';type=avatar' $modSettings['custom_avatar_url'] . '/' $row['filename']) . '" alt="" class="avatar" border="0" />' '') : (stristr($row['avatar'], 'http://') ? '<img src="' $row['avatar'] . '"' $avatar_width $avatar_height ' alt="" class="avatar" border="0" />' '<img src="' $modSettings['avatar_url'] . '/' htmlspecialchars($row['avatar']) . '" alt="" class="avatar" border="0" />'),
'href' => $row['avatar'] == '' ? ($row['id_attach'] > ? (empty($row['attachment_type']) ? $scripturl '?action=dlattach;attach=' $row['id_attach'] . ';type=avatar' $modSettings['custom_avatar_url'] . '/' $row['filename']) : '') : (stristr($row['avatar'], 'http://') ? $row['avatar'] : $modSettings['avatar_url'] . '/' $row['avatar']),
'url' => $row['avatar'] == '' '' : (stristr($row['avatar'], 'http://') ? $row['avatar'] : $modSettings['avatar_url'] . '/' $row['avatar'])
),
);
}
$smcFunc['db_free_result']($request);

ksort($staff_list);
$staff_count count($staff_list);
$count 0;
$icons = array(=> 'admin''gmod''lmod');

if (!empty($colorids) && sp_loadColors($colorids) !== false)
{
foreach ($staff_list as $k => $p)
{
if (!empty($color_profile[$p['id']]['link']))
$staff_list[$k]['link'] = $color_profile[$p['id']]['link'];
}
}

echo '
<style style="text/css">
.img-circle {
    border-radius: 50%;
opacity: 1;
filter: alpha(opacity=100);
}
.img-circle:hover {
opacity: 0.5;
filter: alpha(opacity=50);
}
   .hoverTable{
width:15%; 
                margin:auto;
border-collapse:collapse;
}
</style>
<img src="http://gameguides.pro/b/images/stafflist.png" width="" alt="Staff List" style="display: block; margin: auto; " /><br>
<table class="hoverTable">'
;

foreach (
$staff_list as $staff)         {                 if (empty($staff['avatar']['href']))                 $staff['avatar']['href'] = $settings['default_theme_url'] . '/images/sp/default_avatar.gif'; echo ' <tr> <td class="sp_staff sp_center">', !empty($staff['avatar']['href']) ? ' <a href="' $scripturl '?action=profile;u=' $staff['id'] . '"><img class="img-circle"; src="' $staff['avatar']['href'] . '" alt="' $staff['name'] . '" width="50" /></a>' ''' </td> <td class="sp_staff_info'$staff_count != ++$count '' '''"> <span style="font-size:17px">&nbsp;'$staff['link'], '</span><br /> <span style="font-size:12px">&nbsp;&nbsp;'$staff['group'], '</span><br><br></td></tr>';         } echo ' </table>';
}

Live example: http://www.gameguides.pro/f/staff-list/

The code is a bit of a mess, sorry.. :(

What i'm after is a more visually, aesthetically appealing staff list. So any edits to the CSS, etc will be more then welcome. What i would also like is the custom field I added to profiles "about me" (eg. http://www.gameguides.pro/f/profile/Turtt/), to also be displayed next to the staff member.

So what I would like is: profile picture, profile name, rank, about me. (whatever order, just make it look nice :P)

Any help, if you can create it for me, it is more then welcome :)

I will be posting all custom blocks, custom pages, etc. to my website and I will reference the code back to this website if it's okay with you guys :) I'm sure I'm not the only person here after a neato staff list :)
SimplePortal 2.3.7 © 2008-2021, SimplePortal