mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
I know the jumpbox layout doesn't always match the real forum structure ... will fix
git-svn-id: file:///svn/phpbb/trunk@3099 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
@@ -186,13 +186,13 @@ function make_jumpbox($action, $forum_id = false)
|
||||
|
||||
$boxstring = '<select name="f" onChange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }"><option value="-1">' . $user->lang['Select_forum'] . '</option><option value="-1">-----------------</option>';
|
||||
|
||||
$sql = 'SELECT forum_id, forum_name, forum_postable, forum_status, left_id, right_id
|
||||
$sql = 'SELECT forum_id, forum_name, forum_postable, left_id, right_id
|
||||
FROM ' . FORUMS_TABLE . '
|
||||
ORDER BY left_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$right = $cat_right = 0;
|
||||
$padding = $forum_list = '';
|
||||
$padding = $forum_list = $holding = '';
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (!$row['forum_postable'] && ($row['left_id'] + 1 == $row['right_id']))
|
||||
@@ -225,7 +225,7 @@ function make_jumpbox($action, $forum_id = false)
|
||||
$holding = '';
|
||||
}
|
||||
|
||||
if ($row['forum_status'] == ITEM_CATEGORY)
|
||||
if ($row['right_id'] - $row['left_id'] > 1)
|
||||
{
|
||||
$cat_right = max($cat_right, $row['right_id']);
|
||||
|
||||
|
@@ -20,41 +20,69 @@
|
||||
***************************************************************************/
|
||||
|
||||
// Simple version of jumpbox, just lists authed forums
|
||||
function make_forum_select($default_forum = false, $ignore_forum = false)
|
||||
function make_forum_select($forum_id = false, $ignore_forum = false, $add_select = true)
|
||||
{
|
||||
global $db, $userdata, $auth, $lang;
|
||||
global $db, $user, $auth;
|
||||
|
||||
$sql = "SELECT forum_id, forum_name, left_id, right_id
|
||||
FROM " . FORUMS_TABLE . "
|
||||
ORDER BY left_id ASC";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$right = 0;
|
||||
$subforum = '';
|
||||
$forum_list = '';
|
||||
while ( $row = $db->sql_fetchrow($result) )
|
||||
$right = $cat_right = 0;
|
||||
$forum_list = $padding = $holding = '';
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if ( $row['left_id'] < $right )
|
||||
if (!$auth->acl_gets('f_list', 'm_', 'a_', intval($row['forum_id'])) || $row['forum_id'] == $ignore_forum)
|
||||
{
|
||||
$subforum .= ' ';
|
||||
// if the user does not have permissions to list this forum skip
|
||||
continue;
|
||||
}
|
||||
else if ( $row['left_id'] > $right + 1 )
|
||||
|
||||
if ($row['left_id'] < $right)
|
||||
{
|
||||
$subforum = substr($subforum, 0, -18 * ( $row['left_id'] - $right + 1 ));
|
||||
$padding .= ' ';
|
||||
}
|
||||
else if ($row['left_id'] > $right + 1)
|
||||
{
|
||||
$padding = substr($padding, 0, -13 * ($row['left_id'] - $right + 1));
|
||||
}
|
||||
|
||||
$right = $row['right_id'];
|
||||
|
||||
if ( ( $auth->acl_get('f_list', $forum_id) || $auth->acl_get('a_') ) && $ignore_forum != $row['forum_id'] )
|
||||
$selected = ($row['forum_id'] == $forum_id) ? ' selected="selected"' : '';
|
||||
|
||||
if ($row['left_id'] > $cat_right)
|
||||
{
|
||||
$selected = ( $row['forum_id'] == $default_forum ) ? ' selected="selected"' : '';
|
||||
$forum_list .= '<option value="' . $row['forum_id'] . '"' . $selected . '>' . $subforum . $row['forum_name'] . '</option>';
|
||||
$holding = '';
|
||||
}
|
||||
|
||||
if ($row['right_id'] - $row['left_id'] > 1)
|
||||
{
|
||||
$cat_right = max($cat_right, $row['right_id']);
|
||||
|
||||
$holding .= '<option value="' . $row['forum_id'] . '"' . $selected . '>' . $padding . '+ ' . $row['forum_name'] . '</option>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$forum_list .= $holding . '<option value="' . $row['forum_id'] . '"' . $selected . '>' . $padding . '- ' . $row['forum_name'] . '</option>';
|
||||
$holding = '';
|
||||
}
|
||||
}
|
||||
|
||||
if (!$right)
|
||||
{
|
||||
$forum_list .= '<option value="-1">' . $user->lang['No_forums'] . '</option>';
|
||||
}
|
||||
else if ($add_select)
|
||||
{
|
||||
$forum_list = '<option value="-1">' . $user->lang['Select_forum'] . '</option><option value="-1">-----------------</option>' . $forum_list;
|
||||
}
|
||||
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
return ( $forum_list == '' ) ? '<option value="-1">' . $lang['No_forums'] . '</option>' : $forum_list;
|
||||
return $forum_list;
|
||||
}
|
||||
|
||||
// Synchronise functions for forums/topics
|
||||
|
Reference in New Issue
Block a user